升级Tomcat版本 apache-tomcat-7.0.77
diff --git a/tomcat-uid/LICENSE b/tomcat-uid/LICENSE
index d8e4ac9..3654413 100644
--- a/tomcat-uid/LICENSE
+++ b/tomcat-uid/LICENSE
@@ -203,14 +203,14 @@
 

 

 

-APACHE TOMCAT SUBCOMPONENTS: 

+APACHE TOMCAT SUBCOMPONENTS:

 

 Apache Tomcat includes a number of subcomponents with separate copyright notices

 and license terms. Your use of these subcomponents is subject to the terms and

-conditions of the following licenses. 

+conditions of the following licenses.

 

 

-For the Eclipse JDT Java compiler:

+For the Eclipse JDT Core Batch Compiler (ecj-x.x.x.jar) component:

 

 Eclipse Public License - v 1.0

 

@@ -433,7 +433,7 @@
        license.

     * The bzip2 compression module for NSIS is licensed under the bzip2 license.

     * The lzma compression module for NSIS is licensed under the Common Public

-       License version 1.0. 

+       License version 1.0.

 

 zlib/libpng license

 

@@ -451,7 +451,7 @@
        appreciated but is not required.

    2. Altered source versions must be plainly marked as such, and must not be

        misrepresented as being the original software.

-   3. This notice may not be removed or altered from any source distribution. 

+   3. This notice may not be removed or altered from any source distribution.

 

 bzip2 license

 

@@ -467,7 +467,7 @@
    3. Altered source versions must be plainly marked as such, and must not be

        misrepresented as being the original software.

    4. The name of the author may not be used to endorse or promote products

-       derived from this software without specific prior written permission. 

+       derived from this software without specific prior written permission.

 

 THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED

 WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF

@@ -711,6 +711,13 @@
  - javaee_5.xsd

  - javaee_web_services_1_2.xsd

  - javaee_web_services_client_1_2.xsd

+ - javaee_6.xsd

+ - javaee_web_services_1_3.xsd

+ - javaee_web_services_client_1_3.xsd

+ - jsp_2_2.xsd

+ - web-app_3_0.xsd

+ - web-common_3_0.xsd

+ - web-fragment_3_0.xsd

 

 COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0

 

@@ -1040,3 +1047,4 @@
    to this License shall be subject to the jurisdiction of the Federal Courts of

    the Northern District of California and the state courts of the State of

    California, with venue lying in Santa Clara County, California.

+

diff --git a/tomcat-uid/NOTICE b/tomcat-uid/NOTICE
index ea95f62..5c47a3a 100644
--- a/tomcat-uid/NOTICE
+++ b/tomcat-uid/NOTICE
@@ -1,22 +1,36 @@
 Apache Tomcat

-Copyright 1999-2014 The Apache Software Foundation

+Copyright 1999-2017 The Apache Software Foundation

 

 This product includes software developed at

 The Apache Software Foundation (http://www.apache.org/).

 

 The Windows Installer is built with the Nullsoft

-Scriptable Install Sysem (NSIS), which is

+Scriptable Install System (NSIS), which is

 open source software.  The original software and

 related information is available at

 http://nsis.sourceforge.net.

 

-Java compilation software for JSP pages is provided by Eclipse, 

-which is open source software.  The original software and 

-related information is available at

-http://www.eclipse.org.

+Java compilation software for JSP pages is provided by the Eclipse

+JDT Core Batch Compiler component, which is open source software.

+The original software and related information is available at

+http://www.eclipse.org/jdt/core/.

+

+For the bayeux implementation

+The org.apache.cometd.bayeux API is derivative work originating at the Dojo Foundation

+* Copyright 2007-2008 Guy Molinari

+* Copyright 2007-2008 Filip Hanik

+* Copyright 2007 Dojo Foundation

+* Copyright 2007 Mort Bay Consulting Pty. Ltd.

 

 The original XML Schemas for Java EE Deployment Descriptors:

  - javaee_5.xsd

  - javaee_web_services_1_2.xsd

  - javaee_web_services_client_1_2.xsd

+ - javaee_6.xsd

+ - javaee_web_services_1_3.xsd

+ - javaee_web_services_client_1_3.xsd

+ - jsp_2_2.xsd

+ - web-app_3_0.xsd

+ - web-common_3_0.xsd

+ - web-fragment_3_0.xsd

 may be obtained from http://java.sun.com/xml/ns/javaee/

diff --git a/tomcat-uid/RELEASE-NOTES b/tomcat-uid/RELEASE-NOTES
index f6ee931..99cea1c 100644
--- a/tomcat-uid/RELEASE-NOTES
+++ b/tomcat-uid/RELEASE-NOTES
@@ -16,15 +16,16 @@
 ================================================================================

 

 

-                     Apache Tomcat Version 6.0.41

+                     Apache Tomcat Version 7.0.77

                             Release Notes

 

 

-=============================

-KNOWN ISSUES IN THIS RELEASE:

-=============================

+=========

+CONTENTS:

+=========

 

 * Dependency Changes

+* API Stability

 * JNI Based Applications

 * Bundled APIs

 * Web application reloading and static fields in shared libraries

@@ -32,7 +33,6 @@
 * Enabling SSI and CGI Support

 * Security manager URLs

 * Symlinking static resources

-* Enabling invoker servlet

 * Viewing the Tomcat Change Log

 * Cryptographic software notice

 * When all else fails

@@ -41,17 +41,37 @@
 ===================

 Dependency Changes:

 ===================

-Tomcat 6.0 is designed to run on Java SE 5.0 and later.

+Tomcat 7.0 is designed to run on Java SE 6 and later.

 

-In addition, Tomcat 6.0 uses the Eclipse JDT Java compiler for compiling

-JSP pages.  This means you no longer need to have the complete

+In addition, Tomcat 7.0 uses the Eclipse JDT Java compiler for

+compiling JSP pages.  This means you no longer need to have the complete

 Java Development Kit (JDK) to run Tomcat, but a Java Runtime Environment

-(JRE) is sufficient.  The Eclipse JDT Java compiler is bundled with the 

+(JRE) is sufficient.  The Eclipse JDT Java compiler is bundled with the

 binary Tomcat distributions.  Tomcat can also be configured to use the

-compiler from the JDK to compile JSPs, or any other Java compiler supported 

+compiler from the JDK to compile JSPs, or any other Java compiler supported

 by Apache Ant.

 

 

+==============

+API Stability:

+==============

+The public interfaces for the following classes are fixed and will not be

+changed at all during the remaining lifetime of the 7.x series:

+- javax/**/*

+

+The public interfaces for the following classes may be added to in order to

+resolve bugs and/or add new features. No existing interface will be removed or

+changed although it may be deprecated.

+- org/apache/catalina/*

+- org/apache/catalina/comet/*

+

+Note: As Tomcat 7 matures, the above list will be added to. The list is not

+      considered complete at this time.

+

+The remaining classes are considered part of the Tomcat internals and may change

+without notice between point releases.

+

+

 =======================

 JNI Based Applications:

 =======================

@@ -76,28 +96,33 @@
 =============

 Bundled APIs:

 =============

-A standard installation of Tomcat 6.0 makes all of the following APIs available

+A standard installation of Tomcat 7.0 makes all of the following APIs available

 for use by web applications (by placing them in "lib"):

 * annotations-api.jar (Annotations package)

 * catalina.jar (Tomcat Catalina implementation)

 * catalina-ant.jar (Tomcat Catalina Ant tasks)

 * catalina-ha.jar (High availability package)

 * catalina-tribes.jar (Group communication)

-* ecj-@JDT_VERSION@.jar (Eclipse JDT Java compiler)

-* el-api.jar (EL 2.1 API)

+* ecj-4.4.2.jar (Eclipse JDT Java compiler)

+* el-api.jar (EL 2.2 API)

 * jasper.jar (Jasper 2 Compiler and Runtime)

 * jasper-el.jar (Jasper 2 EL implementation)

-* jsp-api.jar (JSP 2.1 API)

-* servlet-api.jar (Servlet 2.5 API)

+* jsp-api.jar (JSP 2.2 API)

+* servlet-api.jar (Servlet 3.0 API)

+* tomcat7-websocket.jar (WebSocket 1.1 implementation)

+* tomcat-api.jar (Interfaces shared by Catalina and Jasper)

 * tomcat-coyote.jar (Tomcat connectors and utility classes)

 * tomcat-dbcp.jar (package renamed database connection pool based on Commons DBCP)

+* tomcat-jdbc.jar (Tomcat's database connection pooling solution)

+* tomcat-util.jar (Various utilities)

+* websocket-api.jar (WebSocket 1.1 API)

 

 You can make additional APIs available to all of your web applications by

 putting unpacked classes into a "classes" directory (not created by default),

 or by placing them in JAR files in the "lib" directory.

 

 To override the XML parser implementation or interfaces, use the endorsed

-mechanism of the JVM. The default configuration defines JARs located in 

+mechanism of the JVM. The default configuration defines JARs located in

 "endorsed" as endorsed.

 

 

@@ -164,59 +189,32 @@
 the check.

 

 

-=========================

-Enabling invoker servlet:

-=========================

-Starting with Tomcat 4.1.12, the invoker servlet is no longer available by

-default in all webapps. Enabling it for all webapps is possible by editing

-$CATALINA_HOME/conf/web.xml to uncomment the "/servlet/*" servlet-mapping

-definition.

-

-Using the invoker servlet in a production environment is not recommended and

-is unsupported.  More details are available on the Tomcat FAQ at

-http://tomcat.apache.org/faq/misc.html#invoker.

-

-

 ==============================

 Viewing the Tomcat Change Log:

 ==============================

 See changelog.html in this directory.

 

 

-============================================

-Multi-byte charset handling bug in Java 1.5:

-============================================

-Public versions of Sun/Oracle Java 1.5 are known to have a nasty bug in

-implementation of Charset.decode() method for certain character sets.

-

-For details, test and a list of affected character sets see:

-

-http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6196991

-https://issues.apache.org/bugzilla/show_bug.cgi?id=52579

-

-The UTF-8 charset is not affected by this issue.

-

-

 =============================

 Cryptographic software notice

 =============================

-This distribution includes cryptographic software.  The country in 

-which you currently reside may have restrictions on the import, 

-possession, use, and/or re-export to another country, of 

-encryption software.  BEFORE using any encryption software, please 

+This distribution includes cryptographic software.  The country in

+which you currently reside may have restrictions on the import,

+possession, use, and/or re-export to another country, of

+encryption software.  BEFORE using any encryption software, please

 check your country's laws, regulations and policies concerning the

-import, possession, or use, and re-export of encryption software, to 

+import, possession, or use, and re-export of encryption software, to

 see if this is permitted.  See <http://www.wassenaar.org/> for more

 information.

 

 The U.S. Government Department of Commerce, Bureau of Industry and

-Security (BIS), has classified this software as Export Commodity 

+Security (BIS), has classified this software as Export Commodity

 Control Number (ECCN) 5D002.C.1, which includes information security

 software using or performing cryptographic functions with asymmetric

 algorithms.  The form and manner of this Apache Software Foundation

 distribution makes it eligible for export under the License Exception

-ENC Technology Software Unrestricted (TSU) exception (see the BIS 

-Export Administration Regulations, Section 740.13) for both object 

+ENC Technology Software Unrestricted (TSU) exception (see the BIS

+Export Administration Regulations, Section 740.13) for both object

 code and source code.

 

 The following provides more details on the included cryptographic

diff --git a/tomcat-uid/RUNNING.txt b/tomcat-uid/RUNNING.txt
index 9e43e5d..52bdb58 100644
--- a/tomcat-uid/RUNNING.txt
+++ b/tomcat-uid/RUNNING.txt
@@ -16,20 +16,20 @@
 ================================================================================

 

             ===================================================

-            Running The Apache Tomcat 6.0 Servlet/JSP Container

+            Running The Apache Tomcat 7.0 Servlet/JSP Container

             ===================================================

 

-Apache Tomcat 6.0 requires a Java Standard Edition Runtime

-Environment (JRE) version 5.0 or later.

+Apache Tomcat 7.0 requires a Java Standard Edition Runtime

+Environment (JRE) version 6 or later.

 

 =============================

-Running With JRE 5.0 Or Later

+Running With JRE 6 Or Later

 =============================

 

 (1) Download and Install a Java SE Runtime Environment (JRE)

 

 (1.1) Download a Java SE Runtime Environment (JRE),

-      release version 5.0 or later, from

+      release version 6 or later, from

       http://www.oracle.com/technetwork/java/javase/downloads/index.html

 

 (1.2) Install the JRE according to the instructions included with the

@@ -67,17 +67,15 @@
 

 (3) Configure Environment Variables

 

-Tomcat is a Java application and does not use environment variables. The

-variables are used by the Tomcat startup scripts. The scripts use the variables

-to prepare the command that starts Tomcat.

+Tomcat is a Java application and does not use environment variables directly.

+Environment variables are used by the Tomcat startup scripts. The scripts use

+the environment variables to prepare the command that starts Tomcat.

 

 (3.1) Set CATALINA_HOME (required) and CATALINA_BASE (optional)

 

 The CATALINA_HOME environment variable should be set to the location of the

 root directory of the "binary" distribution of Tomcat.

 

-An example was given in (2.2) above.

-

 The Tomcat startup scripts have some logic to set this variable

 automatically if it is absent, based on the location of the startup script

 in *nix and on the current directory in Windows. That logic might not work

@@ -311,7 +309,7 @@
 

   <?xml version="1.0" encoding="UTF-8"?>

   <Context docBase="${catalina.home}/webapps/manager"

-    antiResourceLocking="false" privileged="true" useHttpOnly="true" >

+    antiResourceLocking="false" privileged="true" >

     <Valve className="org.apache.catalina.valves.RemoteAddrValve"

          allow="127\.0\.0\.1" />

   </Context>

@@ -395,14 +393,14 @@
 

     * Documentation for APR/Native library in the Tomcat User's Guide

 

-      http://tomcat.apache.org/tomcat-6.0-doc/apr.html

+      http://tomcat.apache.org/tomcat-7.0-doc/apr.html

 

     * Documentation for the HTTP and AJP protocol connectors in the Tomcat

       Configuration Reference

 

-      http://tomcat.apache.org/tomcat-6.0-doc/config/http.html

+      http://tomcat.apache.org/tomcat-7.0-doc/config/http.html

 

-      http://tomcat.apache.org/tomcat-6.0-doc/config/ajp.html

+      http://tomcat.apache.org/tomcat-7.0-doc/config/ajp.html

 

  - Apache Tomcat Native project home

 

@@ -457,22 +455,22 @@
 

     * Installing Apache Tomcat

 

-      http://tomcat.apache.org/tomcat-6.0-doc/setup.html

+      http://tomcat.apache.org/tomcat-7.0-doc/setup.html

 

     * Windows service HOW-TO

 

-      http://tomcat.apache.org/tomcat-6.0-doc/windows-service-howto.html

+      http://tomcat.apache.org/tomcat-7.0-doc/windows-service-howto.html

 

 The binary files of Apache Commons Daemon in Apache Tomcat distributions

 for Windows are named:

 

-  - "tomcat6.exe"

-  - "tomcat6w.exe"

+  - "tomcat7.exe"

+  - "tomcat7w.exe"

 

 These files are renamed copies of "prunsrv.exe" and "prunmgr.exe" from

 Apache Commons Daemon distribution. The file names have a meaning: they are

 used as the service name to register the service in Windows, as well as the

 key name to store distinct configuration for this installation of

-"procrun". If you would like to install several instances of Tomcat 6.0

+"procrun". If you would like to install several instances of Tomcat 7.0

 in parallel, you have to further rename those files, using the same naming

 scheme.

diff --git a/tomcat-uid/bin/bootstrap.jar b/tomcat-uid/bin/bootstrap.jar
index 4ab1bf5..4f9dad0 100644
--- a/tomcat-uid/bin/bootstrap.jar
+++ b/tomcat-uid/bin/bootstrap.jar
Binary files differ
diff --git a/tomcat-uid/bin/catalina-tasks.xml b/tomcat-uid/bin/catalina-tasks.xml
index 3554a2f..1ecb94f 100644
--- a/tomcat-uid/bin/catalina-tasks.xml
+++ b/tomcat-uid/bin/catalina-tasks.xml
@@ -25,32 +25,13 @@
   <!-- set catalina.home if it's not already set -->

   <dirname property="catalina.home.bin.dir" file="${ant.file.catalina-tasks}"/>

   <property name="catalina.home" value="${catalina.home.bin.dir}/.."/>

-  <taskdef resource="org/apache/catalina/ant/catalina.tasks">

+  <typedef resource="org/apache/catalina/ant/catalina.tasks">

     <classpath>

       <fileset file="${catalina.home}/bin/tomcat-juli.jar"/>

-      <fileset file="${catalina.home}/lib/jasper.jar"/>

-      <fileset file="${catalina.home}/lib/jasper-el.jar"/>

-      <fileset file="${catalina.home}/lib/el-api.jar"/>

-      <fileset file="${catalina.home}/lib/jsp-api.jar"/>

-      <fileset file="${catalina.home}/lib/servlet-api.jar"/>

-      <fileset file="${catalina.home}/lib/catalina-ant.jar"/>

-    </classpath>

-  </taskdef>

-  <taskdef resource="org/apache/catalina/ant/jmx/jmxaccessor.tasks">

-    <classpath>

-      <fileset file="${catalina.home}/lib/catalina-ant.jar"/>

-    </classpath>

-  </taskdef>

-  <typedef

-        name="jmxEquals"

-        classname="org.apache.catalina.ant.jmx.JMXAccessorEqualsCondition">

-    <classpath>

-      <fileset file="${catalina.home}/lib/catalina-ant.jar"/>

+      <fileset dir="${catalina.home}/lib" includes="*.jar"/>

     </classpath>

   </typedef>

-  <typedef

-        name="jmxCondition"

-        classname="org.apache.catalina.ant.jmx.JMXAccessorCondition">

+  <typedef resource="org/apache/catalina/ant/jmx/jmxaccessor.tasks">

     <classpath>

       <fileset file="${catalina.home}/lib/catalina-ant.jar"/>

     </classpath>

diff --git a/tomcat-uid/bin/catalina.bat b/tomcat-uid/bin/catalina.bat
index 122b085..859ca9b 100644
--- a/tomcat-uid/bin/catalina.bat
+++ b/tomcat-uid/bin/catalina.bat
@@ -14,12 +14,24 @@
 rem See the License for the specific language governing permissions and

 rem limitations under the License.

 

-if "%OS%" == "Windows_NT" setlocal

 rem ---------------------------------------------------------------------------

 rem Start/Stop Script for the CATALINA Server

 rem

 rem Environment Variable Prerequisites

 rem

+rem   Do not set the variables in this script. Instead put them into a script

+rem   setenv.bat in CATALINA_BASE/bin to keep your customizations separate.

+rem

+rem   WHEN RUNNING TOMCAT AS A WINDOWS SERVICE:

+rem   Note that the environment variables that affect the behavior of this

+rem   script will have no effect at all on Windows Services. As such, any

+rem   local customizations made in a CATALINA_BASE/bin/setenv.bat script

+rem   will also have no effect on Tomcat when launched as a Windows Service.

+rem   The configuration that controls Windows Services is stored in the Windows

+rem   Registry, and is most conveniently maintained using the "tomcatXw.exe"

+rem   maintenance utility, where "X" is the major version of Tomcat you are

+rem   running.

+rem

 rem   CATALINA_HOME   May point at your Catalina "build" directory.

 rem

 rem   CATALINA_BASE   (Optional) Base directory for resolving dynamic portions

@@ -27,7 +39,11 @@
 rem                   the same directory that CATALINA_HOME points to.

 rem

 rem   CATALINA_OPTS   (Optional) Java runtime options used when the "start",

-rem                   or "run" command is executed.

+rem                   "run" or "debug" command is executed.

+rem                   Include here and not in JAVA_OPTS all options, that should

+rem                   only be used by Tomcat itself, not by the stop process,

+rem                   the version command etc.

+rem                   Examples are heap size, GC logging, JMX ports etc.

 rem

 rem   CATALINA_TMPDIR (Optional) Directory path location of temporary directory

 rem                   the JVM should use (java.io.tmpdir).  Defaults to

@@ -37,14 +53,19 @@
 rem                   Required to run the with the "debug" argument.

 rem

 rem   JRE_HOME        Must point at your Java Runtime installation.

-rem                   Defaults to JAVA_HOME if empty.

+rem                   Defaults to JAVA_HOME if empty. If JRE_HOME and JAVA_HOME

+rem                   are both set, JRE_HOME is used.

 rem

-rem   JAVA_OPTS       (Optional) Java runtime options used when the "start",

-rem                   "stop", or "run" command is executed.

+rem   JAVA_OPTS       (Optional) Java runtime options used when any command

+rem                   is executed.

+rem                   Include here and not in CATALINA_OPTS all options, that

+rem                   should be used by Tomcat and also by the stop process,

+rem                   the version command etc.

+rem                   Most options should go into CATALINA_OPTS.

 rem

 rem   JAVA_ENDORSED_DIRS (Optional) Lists of of semi-colon separated directories

-rem                   containing some jars in order to allow replacement of APIs 

-rem                   created outside of the JCP (i.e. DOM and SAX from W3C). 

+rem                   containing some jars in order to allow replacement of APIs

+rem                   created outside of the JCP (i.e. DOM and SAX from W3C).

 rem                   It can also be used to update the XML parser implementation.

 rem                   Defaults to $CATALINA_HOME/endorsed.

 rem

@@ -66,11 +87,15 @@
 rem                   -agentlib:jdwp=transport=%JPDA_TRANSPORT%,

 rem                       address=%JPDA_ADDRESS%,server=y,suspend=%JPDA_SUSPEND%

 rem

+rem   JSSE_OPTS       (Optional) Java runtime options used to control the TLS

+rem                   implementation when JSSE is used. Default is:

+rem                   "-Djdk.tls.ephemeralDHKeySize=2048"

+rem

 rem   LOGGING_CONFIG  (Optional) Override Tomcat's logging config file

 rem                   Example (all one line)

 rem                   set LOGGING_CONFIG="-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties"

 rem

-rem   LOGGING_MANAGER (Optional) Override Tomcat's logging manager 

+rem   LOGGING_MANAGER (Optional) Override Tomcat's logging manager

 rem                   Example (all one line)

 rem                   set LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"

 rem

@@ -80,6 +105,23 @@
 rem                   set TITLE=Tomcat.Cluster#1.Server#1 [%DATE% %TIME%]

 rem ---------------------------------------------------------------------------

 

+setlocal

+

+rem Suppress Terminate batch job on CTRL+C

+if not ""%1"" == ""run"" goto mainEntry

+if "%TEMP%" == "" goto mainEntry

+if exist "%TEMP%\%~nx0.run" goto mainEntry

+echo Y>"%TEMP%\%~nx0.run"

+if not exist "%TEMP%\%~nx0.run" goto mainEntry

+echo Y>"%TEMP%\%~nx0.Y"

+call "%~f0" %* <"%TEMP%\%~nx0.Y"

+rem Use provided errorlevel

+set RETVAL=%ERRORLEVEL%

+del /Q "%TEMP%\%~nx0.Y" >NUL 2>&1

+exit /B %RETVAL%

+:mainEntry

+del /Q "%TEMP%\%~nx0.run" >NUL 2>&1

+

 rem Guess CATALINA_HOME if not defined

 set "CURRENT_DIR=%cd%"

 if not "%CATALINA_HOME%" == "" goto gotHome

@@ -89,6 +131,7 @@
 set "CATALINA_HOME=%cd%"

 cd "%CURRENT_DIR%"

 :gotHome

+

 if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome

 echo The CATALINA_HOME environment variable is not defined correctly

 echo This environment variable is needed to run this program

@@ -118,40 +161,44 @@
 echo This file is needed to run this program

 goto end

 :okSetclasspath

-set "BASEDIR=%CATALINA_HOME%"

 call "%CATALINA_HOME%\bin\setclasspath.bat" %1

 if errorlevel 1 goto end

 

-if not "%CATALINA_TMPDIR%" == "" goto gotTmpdir

-set "CATALINA_TMPDIR=%CATALINA_BASE%\temp"

-:gotTmpdir

-

-rem Add tomcat-juli.jar and bootstrap.jar to classpath

-rem tomcat-juli.jar can be over-ridden per instance

+rem Add on extra jar file to CLASSPATH

 rem Note that there are no quotes as we do not want to introduce random

 rem quotes into the CLASSPATH

 if "%CLASSPATH%" == "" goto emptyClasspath

 set "CLASSPATH=%CLASSPATH%;"

 :emptyClasspath

-if "%CATALINA_BASE%" == "%CATALINA_HOME%" goto juliClasspathHome

+set "CLASSPATH=%CLASSPATH%%CATALINA_HOME%\bin\bootstrap.jar"

+

+if not "%CATALINA_TMPDIR%" == "" goto gotTmpdir

+set "CATALINA_TMPDIR=%CATALINA_BASE%\temp"

+:gotTmpdir

+

+rem Add tomcat-juli.jar to classpath

+rem tomcat-juli.jar can be over-ridden per instance

 if not exist "%CATALINA_BASE%\bin\tomcat-juli.jar" goto juliClasspathHome

-set "CLASSPATH=%CLASSPATH%%CATALINA_BASE%\bin\tomcat-juli.jar;%CATALINA_HOME%\bin\bootstrap.jar"

+set "CLASSPATH=%CLASSPATH%;%CATALINA_BASE%\bin\tomcat-juli.jar"

 goto juliClasspathDone

 :juliClasspathHome

-set "CLASSPATH=%CLASSPATH%%CATALINA_HOME%\bin\bootstrap.jar"

+set "CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\bin\tomcat-juli.jar"

 :juliClasspathDone

 

+if not "%JSSE_OPTS%" == "" goto gotJsseOpts

+set JSSE_OPTS="-Djdk.tls.ephemeralDHKeySize=2048"

+:gotJsseOpts

+set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%"

+

 if not "%LOGGING_CONFIG%" == "" goto noJuliConfig

 set LOGGING_CONFIG=-Dnop

 if not exist "%CATALINA_BASE%\conf\logging.properties" goto noJuliConfig

 set LOGGING_CONFIG=-Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties"

 :noJuliConfig

-set JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG%

 

 if not "%LOGGING_MANAGER%" == "" goto noJuliManager

 set LOGGING_MANAGER=-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager

 :noJuliManager

-set JAVA_OPTS=%JAVA_OPTS% %LOGGING_MANAGER%

 

 rem ----- Execute The Requested Command ---------------------------------------

 

@@ -194,6 +241,7 @@
 if ""%1"" == ""run"" goto doRun

 if ""%1"" == ""start"" goto doStart

 if ""%1"" == ""stop"" goto doStop

+if ""%1"" == ""configtest"" goto doConfigTest

 if ""%1"" == ""version"" goto doVersion

 

 echo Usage:  catalina ( commands ... )

@@ -206,6 +254,7 @@
 echo   start             Start Catalina in a separate window

 echo   start -security   Start in a separate window with security manager

 echo   stop              Stop Catalina

+echo   configtest        Run a basic syntax check on server.xml

 echo   version           What version of tomcat are you running?

 goto end

 

@@ -229,13 +278,8 @@
 

 :doStart

 shift

-if not "%OS%" == "Windows_NT" goto noTitle

 if "%TITLE%" == "" set TITLE=Tomcat

 set _EXECJAVA=start "%TITLE%" %_RUNJAVA%

-goto gotTitle

-:noTitle

-set _EXECJAVA=start %_RUNJAVA%

-:gotTitle

 if not ""%1"" == ""-security"" goto execCmd

 shift

 echo Using Security Manager

@@ -248,6 +292,12 @@
 set CATALINA_OPTS=

 goto execCmd

 

+:doConfigTest

+shift

+set ACTION=configtest

+set CATALINA_OPTS=

+goto execCmd

+

 :doVersion

 %_EXECJAVA% -classpath "%CATALINA_HOME%\lib\catalina.jar" org.apache.catalina.util.ServerInfo

 goto end

@@ -266,17 +316,17 @@
 rem Execute Java with the applicable properties

 if not "%JPDA%" == "" goto doJpda

 if not "%SECURITY_POLICY_FILE%" == "" goto doSecurity

-%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%

+%_EXECJAVA% %LOGGING_CONFIG% %LOGGING_MANAGER% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%

 goto end

 :doSecurity

-%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%

+%_EXECJAVA% %LOGGING_CONFIG% %LOGGING_MANAGER% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%

 goto end

 :doJpda

 if not "%SECURITY_POLICY_FILE%" == "" goto doSecurityJpda

-%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %JPDA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%

+%_EXECJAVA% %LOGGING_CONFIG% %LOGGING_MANAGER% %JAVA_OPTS% %JPDA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%

 goto end

 :doSecurityJpda

-%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %JPDA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%

+%_EXECJAVA% %LOGGING_CONFIG% %LOGGING_MANAGER% %JAVA_OPTS% %JPDA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%

 goto end

 

 :end

diff --git a/tomcat-uid/bin/catalina.sh b/tomcat-uid/bin/catalina.sh
index 45ac16d..33a4803 100644
--- a/tomcat-uid/bin/catalina.sh
+++ b/tomcat-uid/bin/catalina.sh
@@ -16,10 +16,13 @@
 # limitations under the License.
 
 # -----------------------------------------------------------------------------
-# Start/Stop Script for the CATALINA Server
+# Control Script for the CATALINA Server
 #
 # Environment Variable Prerequisites
 #
+#   Do not set the variables in this script. Instead put them into a script
+#   setenv.sh in CATALINA_BASE/bin to keep your customizations separate.
+#
 #   CATALINA_HOME   May point at your Catalina "build" directory.
 #
 #   CATALINA_BASE   (Optional) Base directory for resolving dynamic portions
@@ -31,7 +34,11 @@
 #                   Default is $CATALINA_BASE/logs/catalina.out
 #
 #   CATALINA_OPTS   (Optional) Java runtime options used when the "start",
-#                   or "run" command is executed.
+#                   "run" or "debug" command is executed.
+#                   Include here and not in JAVA_OPTS all options, that should
+#                   only be used by Tomcat itself, not by the stop process,
+#                   the version command etc.
+#                   Examples are heap size, GC logging, JMX ports etc.
 #
 #   CATALINA_TMPDIR (Optional) Directory path location of temporary directory
 #                   the JVM should use (java.io.tmpdir).  Defaults to
@@ -40,11 +47,16 @@
 #   JAVA_HOME       Must point at your Java Development Kit installation.
 #                   Required to run the with the "debug" argument.
 #
-#   JRE_HOME        Must point at your Java Development Kit installation.
-#                   Defaults to JAVA_HOME if empty.
+#   JRE_HOME        Must point at your Java Runtime installation.
+#                   Defaults to JAVA_HOME if empty. If JRE_HOME and JAVA_HOME
+#                   are both set, JRE_HOME is used.
 #
-#   JAVA_OPTS       (Optional) Java runtime options used when the "start",
-#                   "stop", or "run" command is executed.
+#   JAVA_OPTS       (Optional) Java runtime options used when any command
+#                   is executed.
+#                   Include here and not in CATALINA_OPTS all options, that
+#                   should be used by Tomcat and also by the stop process,
+#                   the version command etc.
+#                   Most options should go into CATALINA_OPTS.
 #
 #   JAVA_ENDORSED_DIRS (Optional) Lists of of colon separated directories
 #                   containing some jars in order to allow replacement of APIs
@@ -70,8 +82,13 @@
 #                   -agentlib:jdwp=transport=$JPDA_TRANSPORT,
 #                       address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND
 #
+#   JSSE_OPTS       (Optional) Java runtime options used to control the TLS
+#                   implementation when JSSE is used. Default is:
+#                   "-Djdk.tls.ephemeralDHKeySize=2048"
+#
 #   CATALINA_PID    (Optional) Path of the file which should contains the pid
-#                   of catalina startup java process, when start (fork) is used
+#                   of the catalina startup java process, when start (fork) is
+#                   used
 #
 #   LOGGING_CONFIG  (Optional) Override Tomcat's logging config file
 #                   Example (all one line)
@@ -80,16 +97,23 @@
 #   LOGGING_MANAGER (Optional) Override Tomcat's logging manager
 #                   Example (all one line)
 #                   LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
+#
+#   USE_NOHUP       (Optional) If set to the string true the start command will
+#                   use nohup so that the Tomcat process will ignore any hangup
+#                   signals. Default is "false" unless running on HP-UX in which
+#                   case the default is "true"
 # -----------------------------------------------------------------------------
 
 # OS specific support.  $var _must_ be set to either true or false.
 cygwin=false
-os400=false
 darwin=false
+os400=false
+hpux=false
 case "`uname`" in
 CYGWIN*) cygwin=true;;
-OS400*) os400=true;;
 Darwin*) darwin=true;;
+OS400*) os400=true;;
+HP-UX*) hpux=true;;
 esac
 
 # resolve links - $0 may be a softlink
@@ -151,11 +175,9 @@
   # 1. owned by the user
   # 2. owned by the PRIMARY group of the user
   # this will not work if the user belongs in secondary groups
-  BASEDIR="$CATALINA_HOME"
   . "$CATALINA_HOME"/bin/setclasspath.sh
 else
   if [ -r "$CATALINA_HOME"/bin/setclasspath.sh ]; then
-    BASEDIR="$CATALINA_HOME"
     . "$CATALINA_HOME"/bin/setclasspath.sh
   else
     echo "Cannot find $CATALINA_HOME/bin/setclasspath.sh"
@@ -164,20 +186,11 @@
   fi
 fi
 
-if [ -z "$CATALINA_BASE" ] ; then
-  CATALINA_BASE="$CATALINA_HOME"
-fi
-
-# Add tomcat-juli.jar and bootstrap.jar to classpath
-# tomcat-juli.jar can be over-ridden per instance
+# Add on extra jar files to CLASSPATH
 if [ ! -z "$CLASSPATH" ] ; then
   CLASSPATH="$CLASSPATH":
 fi
-if [ "$CATALINA_BASE" != "$CATALINA_HOME" ] && [ -r "$CATALINA_BASE/bin/tomcat-juli.jar" ] ; then
-  CLASSPATH="$CLASSPATH""$CATALINA_BASE"/bin/tomcat-juli.jar:"$CATALINA_HOME"/bin/bootstrap.jar
-else
-  CLASSPATH="$CLASSPATH""$CATALINA_HOME"/bin/bootstrap.jar
-fi
+CLASSPATH="$CLASSPATH""$CATALINA_HOME"/bin/bootstrap.jar
 
 if [ -z "$CATALINA_OUT" ] ; then
   CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
@@ -188,6 +201,14 @@
   CATALINA_TMPDIR="$CATALINA_BASE"/temp
 fi
 
+# Add tomcat-juli.jar to classpath
+# tomcat-juli.jar can be over-ridden per instance
+if [ -r "$CATALINA_BASE/bin/tomcat-juli.jar" ] ; then
+  CLASSPATH=$CLASSPATH:$CATALINA_BASE/bin/tomcat-juli.jar
+else
+  CLASSPATH=$CLASSPATH:$CATALINA_HOME/bin/tomcat-juli.jar
+fi
+
 # Bugzilla 37848: When no TTY is available, don't output to console
 have_tty=0
 if [ "`tty`" != "not a tty" ]; then
@@ -205,6 +226,11 @@
   JAVA_ENDORSED_DIRS=`cygpath --path --windows "$JAVA_ENDORSED_DIRS"`
 fi
 
+if [ -z "$JSSE_OPTS" ] ; then
+  JSSE_OPTS="-Djdk.tls.ephemeralDHKeySize=2048"
+fi
+JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS"
+
 # Set juli LogManager config file if it is present and an override has not been issued
 if [ -z "$LOGGING_CONFIG" ]; then
   if [ -r "$CATALINA_BASE"/conf/logging.properties ]; then
@@ -219,6 +245,22 @@
   LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
 fi
 
+# Uncomment the following line to make the umask available when using the
+# org.apache.catalina.security.SecurityListener
+#JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`"
+
+if [ -z "$USE_NOHUP" ]; then
+    if $hpux; then
+        USE_NOHUP="true"
+    else
+        USE_NOHUP="false"
+    fi
+fi
+unset _NOHUP
+if [ "$USE_NOHUP" = "true" ]; then
+    _NOHUP=nohup
+fi
+
 # ----- Execute The Requested Command -----------------------------------------
 
 # Bugzilla 37848: only output this if we have a TTY
@@ -250,7 +292,7 @@
   if [ -z "$JPDA_OPTS" ]; then
     JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND"
   fi
-  CATALINA_OPTS="$CATALINA_OPTS $JPDA_OPTS"
+  CATALINA_OPTS="$JPDA_OPTS $CATALINA_OPTS"
   shift
 fi
 
@@ -293,20 +335,20 @@
       echo "Using Security Manager"
     fi
     shift
-    exec "$_RUNJAVA" "$LOGGING_CONFIG" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
-      -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
+    eval exec "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
+      -Djava.endorsed.dirs="\"$JAVA_ENDORSED_DIRS\"" -classpath "\"$CLASSPATH\"" \
       -Djava.security.manager \
-      -Djava.security.policy=="$CATALINA_BASE"/conf/catalina.policy \
-      -Dcatalina.base="$CATALINA_BASE" \
-      -Dcatalina.home="$CATALINA_HOME" \
-      -Djava.io.tmpdir="$CATALINA_TMPDIR" \
+      -Djava.security.policy=="\"$CATALINA_BASE/conf/catalina.policy\"" \
+      -Dcatalina.base="\"$CATALINA_BASE\"" \
+      -Dcatalina.home="\"$CATALINA_HOME\"" \
+      -Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
       org.apache.catalina.startup.Bootstrap "$@" start
   else
-    exec "$_RUNJAVA" "$LOGGING_CONFIG" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
-      -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-      -Dcatalina.base="$CATALINA_BASE" \
-      -Dcatalina.home="$CATALINA_HOME" \
-      -Djava.io.tmpdir="$CATALINA_TMPDIR" \
+    eval exec "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
+      -Djava.endorsed.dirs="\"$JAVA_ENDORSED_DIRS\"" -classpath "\"$CLASSPATH\"" \
+      -Dcatalina.base="\"$CATALINA_BASE\"" \
+      -Dcatalina.home="\"$CATALINA_HOME\"" \
+      -Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
       org.apache.catalina.startup.Bootstrap "$@" start
   fi
 
@@ -321,6 +363,8 @@
           ps -p $PID >/dev/null 2>&1
           if [ $? -eq 0 ] ; then
             echo "Tomcat appears to still be running with PID $PID. Start aborted."
+            echo "If the following process is not a Tomcat process, remove the PID file and try again:"
+            ps -f -p $PID
             exit 1
           else
             echo "Removing/clearing stale PID file."
@@ -357,24 +401,24 @@
       echo "Using Security Manager"
     fi
     shift
-    "$_RUNJAVA" "$LOGGING_CONFIG" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
-      -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
+    eval $_NOHUP "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
+      -Djava.endorsed.dirs="\"$JAVA_ENDORSED_DIRS\"" -classpath "\"$CLASSPATH\"" \
       -Djava.security.manager \
-      -Djava.security.policy=="$CATALINA_BASE"/conf/catalina.policy \
-      -Dcatalina.base="$CATALINA_BASE" \
-      -Dcatalina.home="$CATALINA_HOME" \
-      -Djava.io.tmpdir="$CATALINA_TMPDIR" \
+      -Djava.security.policy=="\"$CATALINA_BASE/conf/catalina.policy\"" \
+      -Dcatalina.base="\"$CATALINA_BASE\"" \
+      -Dcatalina.home="\"$CATALINA_HOME\"" \
+      -Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
       org.apache.catalina.startup.Bootstrap "$@" start \
-      >> "$CATALINA_OUT" 2>&1 &
+      >> "$CATALINA_OUT" 2>&1 "&"
 
   else
-    "$_RUNJAVA" "$LOGGING_CONFIG" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
-      -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-      -Dcatalina.base="$CATALINA_BASE" \
-      -Dcatalina.home="$CATALINA_HOME" \
-      -Djava.io.tmpdir="$CATALINA_TMPDIR" \
+    eval $_NOHUP "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
+      -Djava.endorsed.dirs="\"$JAVA_ENDORSED_DIRS\"" -classpath "\"$CLASSPATH\"" \
+      -Dcatalina.base="\"$CATALINA_BASE\"" \
+      -Dcatalina.home="\"$CATALINA_HOME\"" \
+      -Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
       org.apache.catalina.startup.Bootstrap "$@" start \
-      >> "$CATALINA_OUT" 2>&1 &
+      >> "$CATALINA_OUT" 2>&1 "&"
 
   fi
 
@@ -382,6 +426,8 @@
     echo $! > "$CATALINA_PID"
   fi
 
+  echo "Tomcat started."
+
 elif [ "$1" = "stop" ] ; then
 
   shift
@@ -417,14 +463,22 @@
       exit 1
     fi
   fi
-  
-  "$_RUNJAVA" $LOGGING_MANAGER $JAVA_OPTS \
-    -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-    -Dcatalina.base="$CATALINA_BASE" \
-    -Dcatalina.home="$CATALINA_HOME" \
-    -Djava.io.tmpdir="$CATALINA_TMPDIR" \
+
+  eval "\"$_RUNJAVA\"" $LOGGING_MANAGER $JAVA_OPTS \
+    -Djava.endorsed.dirs="\"$JAVA_ENDORSED_DIRS\"" -classpath "\"$CLASSPATH\"" \
+    -Dcatalina.base="\"$CATALINA_BASE\"" \
+    -Dcatalina.home="\"$CATALINA_HOME\"" \
+    -Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
     org.apache.catalina.startup.Bootstrap "$@" stop
 
+  # stop failed. Shutdown port disabled? Try a normal kill.
+  if [ $? != 0 ]; then
+    if [ ! -z "$CATALINA_PID" ]; then
+      echo "The stop command failed. Attempting to signal the process to stop through OS signal."
+      kill -15 `cat "$CATALINA_PID"` >/dev/null 2>&1
+    fi
+  fi
+
   if [ ! -z "$CATALINA_PID" ]; then
     if [ -f "$CATALINA_PID" ]; then
       while [ $SLEEP -ge 0 ]; do
@@ -434,25 +488,32 @@
           if [ $? != 0 ]; then
             if [ -w "$CATALINA_PID" ]; then
               cat /dev/null > "$CATALINA_PID"
+              # If Tomcat has stopped don't try and force a stop with an empty PID file
+              FORCE=0
             else
-              echo "Tomcat stopped but the PID file could not be removed or cleared."
+              echo "The PID file could not be removed or cleared."
             fi
           fi
+          echo "Tomcat stopped."
           break
         fi
         if [ $SLEEP -gt 0 ]; then
           sleep 1
         fi
         if [ $SLEEP -eq 0 ]; then
+          echo "Tomcat did not stop in time."
           if [ $FORCE -eq 0 ]; then
-            echo "Tomcat did not stop in time. PID file was not removed."
+            echo "PID file was not removed."
           fi
+          echo "To aid diagnostics a thread dump has been written to standard out."
+          kill -3 `cat "$CATALINA_PID"`
         fi
         SLEEP=`expr $SLEEP - 1 `
       done
     fi
   fi
 
+  KILL_SLEEP_INTERVAL=5
   if [ $FORCE -eq 1 ]; then
     if [ -z "$CATALINA_PID" ]; then
       echo "Kill failed: \$CATALINA_PID not set"
@@ -461,14 +522,46 @@
         PID=`cat "$CATALINA_PID"`
         echo "Killing Tomcat with the PID: $PID"
         kill -9 $PID
-        rm -f "$CATALINA_PID" >/dev/null 2>&1
-        if [ $? != 0 ]; then
-          echo "Tomcat was killed but the PID file could not be removed."
+        while [ $KILL_SLEEP_INTERVAL -ge 0 ]; do
+            kill -0 `cat "$CATALINA_PID"` >/dev/null 2>&1
+            if [ $? -gt 0 ]; then
+                rm -f "$CATALINA_PID" >/dev/null 2>&1
+                if [ $? != 0 ]; then
+                    if [ -w "$CATALINA_PID" ]; then
+                        cat /dev/null > "$CATALINA_PID"
+                    else
+                        echo "The PID file could not be removed."
+                    fi
+                fi
+                echo "The Tomcat process has been killed."
+                break
+            fi
+            if [ $KILL_SLEEP_INTERVAL -gt 0 ]; then
+                sleep 1
+            fi
+            KILL_SLEEP_INTERVAL=`expr $KILL_SLEEP_INTERVAL - 1 `
+        done
+        if [ $KILL_SLEEP_INTERVAL -lt 0 ]; then
+            echo "Tomcat has not been killed completely yet. The process might be waiting on some system call or might be UNINTERRUPTIBLE."
         fi
       fi
     fi
   fi
 
+elif [ "$1" = "configtest" ] ; then
+
+    eval "\"$_RUNJAVA\"" $LOGGING_MANAGER $JAVA_OPTS \
+      -Djava.endorsed.dirs="\"$JAVA_ENDORSED_DIRS\"" -classpath "\"$CLASSPATH\"" \
+      -Dcatalina.base="\"$CATALINA_BASE\"" \
+      -Dcatalina.home="\"$CATALINA_HOME\"" \
+      -Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
+      org.apache.catalina.startup.Bootstrap configtest
+    result=$?
+    if [ $result -ne 0 ]; then
+        echo "Configuration error detected!"
+    fi
+    exit $result
+
 elif [ "$1" = "version" ] ; then
 
     "$_RUNJAVA"   \
@@ -495,6 +588,7 @@
   echo "  stop n            Stop Catalina, waiting up to n seconds for the process to end"
   echo "  stop -force       Stop Catalina, wait up to 5 seconds and then use kill -KILL if still running"
   echo "  stop n -force     Stop Catalina, wait up to n seconds and then use kill -KILL if still running"
+  echo "  configtest        Run a basic syntax check on server.xml - check exit code for result"
   echo "  version           What version of tomcat are you running?"
   echo "Note: Waiting for the process to end and use of the -force option require that \$CATALINA_PID is defined"
   exit 1
diff --git a/tomcat-uid/bin/configtest.bat b/tomcat-uid/bin/configtest.bat
new file mode 100644
index 0000000..02448e1
--- /dev/null
+++ b/tomcat-uid/bin/configtest.bat
@@ -0,0 +1,58 @@
+@echo off

+rem Licensed to the Apache Software Foundation (ASF) under one or more

+rem contributor license agreements.  See the NOTICE file distributed with

+rem this work for additional information regarding copyright ownership.

+rem The ASF licenses this file to You under the Apache License, Version 2.0

+rem (the "License"); you may not use this file except in compliance with

+rem the License.  You may obtain a copy of the License at

+rem

+rem     http://www.apache.org/licenses/LICENSE-2.0

+rem

+rem Unless required by applicable law or agreed to in writing, software

+rem distributed under the License is distributed on an "AS IS" BASIS,

+rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+rem See the License for the specific language governing permissions and

+rem limitations under the License.

+

+rem ---------------------------------------------------------------------------

+rem Configuration test script for the CATALINA Server

+rem ---------------------------------------------------------------------------

+

+setlocal

+

+rem Guess CATALINA_HOME if not defined

+set "CURRENT_DIR=%cd%"

+if not "%CATALINA_HOME%" == "" goto gotHome

+set "CATALINA_HOME=%CURRENT_DIR%"

+if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome

+cd ..

+set "CATALINA_HOME=%cd%"

+cd "%CURRENT_DIR%"

+:gotHome

+if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome

+echo The CATALINA_HOME environment variable is not defined correctly

+echo This environment variable is needed to run this program

+goto end

+:okHome

+

+set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"

+

+rem Check that target executable exists

+if exist "%EXECUTABLE%" goto okExec

+echo Cannot find "%EXECUTABLE%"

+echo This file is needed to run this program

+goto end

+:okExec

+

+rem Get remaining unshifted command line arguments and save them in the

+set CMD_LINE_ARGS=

+:setArgs

+if ""%1""=="""" goto doneSetArgs

+set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1

+shift

+goto setArgs

+:doneSetArgs

+

+call "%EXECUTABLE%" configtest %CMD_LINE_ARGS%

+

+:end

diff --git a/tomcat-uid/bin/configtest.sh b/tomcat-uid/bin/configtest.sh
new file mode 100644
index 0000000..9a8ebff
--- /dev/null
+++ b/tomcat-uid/bin/configtest.sh
@@ -0,0 +1,60 @@
+#!/bin/sh
+
+# 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.
+
+# -----------------------------------------------------------------------------
+# Configuration Test Script for the CATALINA Server
+# -----------------------------------------------------------------------------
+
+# Better OS/400 detection: see Bugzilla 31132
+os400=false
+case "`uname`" in
+OS400*) os400=true;;
+esac
+
+# resolve links - $0 may be a softlink
+PRG="$0"
+
+while [ -h "$PRG" ] ; do
+  ls=`ls -ld "$PRG"`
+  link=`expr "$ls" : '.*-> \(.*\)$'`
+  if expr "$link" : '/.*' > /dev/null; then
+    PRG="$link"
+  else
+    PRG=`dirname "$PRG"`/"$link"
+  fi
+done
+
+PRGDIR=`dirname "$PRG"`
+EXECUTABLE=catalina.sh
+
+# Check that target executable exists
+if $os400; then
+  # -x will Only work on the os400 if the files are:
+  # 1. owned by the user
+  # 2. owned by the PRIMARY group of the user
+  # this will not work if the user belongs in secondary groups
+  eval
+else
+  if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then
+    echo "Cannot find $PRGDIR/$EXECUTABLE"
+    echo "The file is absent or does not have execute permission"
+    echo "This file is needed to run this program"
+    exit 1
+  fi
+fi
+
+exec "$PRGDIR"/"$EXECUTABLE" configtest "$@"
diff --git a/tomcat-uid/bin/cpappend.bat b/tomcat-uid/bin/cpappend.bat
deleted file mode 100644
index 455e832..0000000
--- a/tomcat-uid/bin/cpappend.bat
+++ /dev/null
@@ -1,33 +0,0 @@
-@echo off

-rem Licensed to the Apache Software Foundation (ASF) under one or more

-rem contributor license agreements.  See the NOTICE file distributed with

-rem this work for additional information regarding copyright ownership.

-rem The ASF licenses this file to You under the Apache License, Version 2.0

-rem (the "License"); you may not use this file except in compliance with

-rem the License.  You may obtain a copy of the License at

-rem

-rem     http://www.apache.org/licenses/LICENSE-2.0

-rem

-rem Unless required by applicable law or agreed to in writing, software

-rem distributed under the License is distributed on an "AS IS" BASIS,

-rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-rem See the License for the specific language governing permissions and

-rem limitations under the License.

-

-rem ---------------------------------------------------------------------------

-rem Append to CLASSPATH

-rem ---------------------------------------------------------------------------

-

-rem Process the first argument

-if ""%1"" == """" goto end

-set CLASSPATH=%CLASSPATH%;%1

-shift

-

-rem Process the remaining arguments

-:setArgs

-if ""%1"" == """" goto doneSetArgs

-set CLASSPATH=%CLASSPATH% %1

-shift

-goto setArgs

-:doneSetArgs

-:end

diff --git a/tomcat-uid/bin/daemon.sh b/tomcat-uid/bin/daemon.sh
index fc18f76..dee6c77 100644
--- a/tomcat-uid/bin/daemon.sh
+++ b/tomcat-uid/bin/daemon.sh
@@ -104,7 +104,13 @@
 test ".$CATALINA_HOME" = . && CATALINA_HOME=`cd "$DIRNAME/.." >/dev/null; pwd`
 test ".$CATALINA_BASE" = . && CATALINA_BASE="$CATALINA_HOME"
 test ".$CATALINA_MAIN" = . && CATALINA_MAIN=org.apache.catalina.startup.Bootstrap
-test ".$JSVC" = . && JSVC="$CATALINA_BASE/bin/jsvc"
+# If not explicitly set, look for jsvc in CATALINA_BASE first then CATALINA_HOME
+if [ -z "$JSVC" ]; then
+    JSVC="$CATALINA_BASE/bin/jsvc"
+    if [ ! -x "$JSVC" ]; then
+        JSVC="$CATALINA_HOME/bin/jsvc"
+    fi
+fi
 # Set the default service-start wait time if necessary
 test ".$SERVICE_START_WAIT_TIME" = . && SERVICE_START_WAIT_TIME=10
 
@@ -119,17 +125,19 @@
 fi
 
 # Add on extra jar files to CLASSPATH
-# tomcat-juli.jar can be over-ridden per instance
 test ".$CLASSPATH" != . && CLASSPATH="${CLASSPATH}:"
-if [ "$CATALINA_BASE" != "$CATALINA_HOME" ] && [ -r "$CATALINA_BASE/bin/tomcat-juli.jar" ] ; then
-  CLASSPATH="$CLASSPATH$CATALINA_BASE/bin/tomcat-juli.jar:$CATALINA_HOME/bin/commons-daemon.jar:$CATALINA_HOME/bin/bootstrap.jar"
-else
-  CLASSPATH="$CLASSPATH$CATALINA_HOME/bin/commons-daemon.jar:$CATALINA_HOME/bin/bootstrap.jar"
-fi
+CLASSPATH="$CLASSPATH$CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/commons-daemon.jar"
 
 test ".$CATALINA_OUT" = . && CATALINA_OUT="$CATALINA_BASE/logs/catalina-daemon.out"
 test ".$CATALINA_TMP" = . && CATALINA_TMP="$CATALINA_BASE/temp"
 
+# Add tomcat-juli.jar to classpath
+# tomcat-juli.jar can be over-ridden per instance
+if [ -r "$CATALINA_BASE/bin/tomcat-juli.jar" ] ; then
+  CLASSPATH="$CLASSPATH:$CATALINA_BASE/bin/tomcat-juli.jar"
+else
+  CLASSPATH="$CLASSPATH:$CATALINA_HOME/bin/tomcat-juli.jar"
+fi
 # Set juli LogManager config file if it is present and an override has not been issued
 if [ -z "$LOGGING_CONFIG" ]; then
   if [ -r "$CATALINA_BASE/conf/logging.properties" ]; then
diff --git a/tomcat-uid/bin/digest.bat b/tomcat-uid/bin/digest.bat
index fbc36d3..428b9d1 100644
--- a/tomcat-uid/bin/digest.bat
+++ b/tomcat-uid/bin/digest.bat
@@ -14,16 +14,20 @@
 rem See the License for the specific language governing permissions and

 rem limitations under the License.

 

-if "%OS%" == "Windows_NT" setlocal

 rem ---------------------------------------------------------------------------

 rem Script to digest password using the algorithm specified

 rem ---------------------------------------------------------------------------

 

+setlocal

+

 rem Guess CATALINA_HOME if not defined

+set "CURRENT_DIR=%cd%"

 if not "%CATALINA_HOME%" == "" goto gotHome

-set CATALINA_HOME=.

+set "CATALINA_HOME=%CURRENT_DIR%"

 if exist "%CATALINA_HOME%\bin\tool-wrapper.bat" goto okHome

-set CATALINA_HOME=..

+cd ..

+set "CATALINA_HOME=%cd%"

+cd "%CURRENT_DIR%"

 :gotHome

 if exist "%CATALINA_HOME%\bin\tool-wrapper.bat" goto okHome

 echo The CATALINA_HOME environment variable is not defined correctly

diff --git a/tomcat-uid/bin/digest.sh b/tomcat-uid/bin/digest.sh
index 1b5d5e7..62ed5d0 100644
--- a/tomcat-uid/bin/digest.sh
+++ b/tomcat-uid/bin/digest.sh
@@ -19,6 +19,12 @@
 # Script to digest password using the algorithm specified
 # -----------------------------------------------------------------------------
 
+# Better OS/400 detection: see Bugzilla 31132
+os400=false
+case "`uname`" in
+OS400*) os400=true;;
+esac
+
 # resolve links - $0 may be a softlink
 PRG="$0"
 
@@ -31,16 +37,24 @@
     PRG=`dirname "$PRG"`/"$link"
   fi
 done
- 
+
 PRGDIR=`dirname "$PRG"`
 EXECUTABLE=tool-wrapper.sh
 
 # Check that target executable exists
-if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then
-  echo "Cannot find $PRGDIR/$EXECUTABLE"
-  echo "The file is absent or does not have execute permission"
-  echo "This file is needed to run this program"
-  exit 1
+if $os400; then
+  # -x will Only work on the os400 if the files are:
+  # 1. owned by the user
+  # 2. owned by the PRIMARY group of the user
+  # this will not work if the user belongs in secondary groups
+  eval
+else
+  if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then
+    echo "Cannot find $PRGDIR/$EXECUTABLE"
+    echo "The file is absent or does not have execute permission"
+    echo "This file is needed to run this program"
+    exit 1
+  fi
 fi
 
 exec "$PRGDIR"/"$EXECUTABLE" -server org.apache.catalina.realm.RealmBase "$@"
diff --git a/tomcat-uid/bin/setclasspath.bat b/tomcat-uid/bin/setclasspath.bat
index 360b9e4..da0d8a3 100644
--- a/tomcat-uid/bin/setclasspath.bat
+++ b/tomcat-uid/bin/setclasspath.bat
@@ -15,61 +15,74 @@
 rem limitations under the License.

 

 rem ---------------------------------------------------------------------------

-rem Set CLASSPATH and Java options

+rem Set JAVA_HOME or JRE_HOME if not already set, ensure any provided settings

+rem are valid and consistent with the selected start-up options and set up the

+rem endorsed directory.

 rem ---------------------------------------------------------------------------

 

 rem Make sure prerequisite environment variables are set

-if not "%JAVA_HOME%" == "" goto gotJdkHome

+

+rem In debug mode we need a real JDK (JAVA_HOME)

+if ""%1"" == ""debug"" goto needJavaHome

+

+rem Otherwise either JRE or JDK are fine

 if not "%JRE_HOME%" == "" goto gotJreHome

+if not "%JAVA_HOME%" == "" goto gotJavaHome

 echo Neither the JAVA_HOME nor the JRE_HOME environment variable is defined

 echo At least one of these environment variable is needed to run this program

 goto exit

 

-:gotJreHome

-if not exist "%JRE_HOME%\bin\java.exe" goto noJavaHome

-if not exist "%JRE_HOME%\bin\javaw.exe" goto noJavaHome

-if not ""%1"" == ""debug"" goto okJavaHome

-echo JAVA_HOME should point to a JDK in order to run in debug mode.

-goto exit

-

-:gotJdkHome

+:needJavaHome

+rem Check if we have a usable JDK

+if "%JAVA_HOME%" == "" goto noJavaHome

 if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome

 if not exist "%JAVA_HOME%\bin\javaw.exe" goto noJavaHome

 if not exist "%JAVA_HOME%\bin\jdb.exe" goto noJavaHome

 if not exist "%JAVA_HOME%\bin\javac.exe" goto noJavaHome

-if not "%JRE_HOME%" == "" goto okJavaHome

 set "JRE_HOME=%JAVA_HOME%"

-goto okJavaHome

+goto okJava

 

 :noJavaHome

-echo The JAVA_HOME environment variable is not defined correctly

-echo This environment variable is needed to run this program

-echo NB: JAVA_HOME should point to a JDK not a JRE

+echo The JAVA_HOME environment variable is not defined correctly.

+echo It is needed to run this program in debug mode.

+echo NB: JAVA_HOME should point to a JDK not a JRE.

 goto exit

-:okJavaHome

 

-if not "%BASEDIR%" == "" goto gotBasedir

-echo The BASEDIR environment variable is not defined

-echo This environment variable is needed to run this program

-goto exit

-:gotBasedir

-if exist "%BASEDIR%\bin\setclasspath.bat" goto okBasedir

-echo The BASEDIR environment variable is not defined correctly

-echo This environment variable is needed to run this program

-goto exit

-:okBasedir

+:gotJavaHome

+rem No JRE given, use JAVA_HOME as JRE_HOME

+set "JRE_HOME=%JAVA_HOME%"

 

+:gotJreHome

+rem Check if we have a usable JRE

+if not exist "%JRE_HOME%\bin\java.exe" goto noJreHome

+if not exist "%JRE_HOME%\bin\javaw.exe" goto noJreHome

+goto okJava

+

+:noJreHome

+rem Needed at least a JRE

+echo The JRE_HOME environment variable is not defined correctly

+echo This environment variable is needed to run this program

+goto exit

+

+:okJava

 rem Don't override the endorsed dir if the user has set it previously

 if not "%JAVA_ENDORSED_DIRS%" == "" goto gotEndorseddir

 rem Set the default -Djava.endorsed.dirs argument

-set "JAVA_ENDORSED_DIRS=%BASEDIR%\endorsed"

+set "JAVA_ENDORSED_DIRS=%CATALINA_HOME%\endorsed"

 :gotEndorseddir

 

+rem Don't override _RUNJAVA if the user has set it previously

+if not "%_RUNJAVA%" == "" goto gotRunJava

 rem Set standard command for invoking Java.

-rem Note that NT requires a window name argument when using start.

+rem Also note the quoting as JRE_HOME may contain spaces.

+set _RUNJAVA="%JRE_HOME%\bin\java.exe"

+:gotRunJava

+

+rem Don't override _RUNJDB if the user has set it previously

 rem Also note the quoting as JAVA_HOME may contain spaces.

-set _RUNJAVA="%JRE_HOME%\bin\java"

-set _RUNJDB="%JAVA_HOME%\bin\jdb"

+if not "%_RUNJDB%" == "" goto gotRunJdb

+set _RUNJDB="%JAVA_HOME%\bin\jdb.exe"

+:gotRunJdb

 

 goto end

 

diff --git a/tomcat-uid/bin/setclasspath.sh b/tomcat-uid/bin/setclasspath.sh
index 590fd6e..873fad3 100644
--- a/tomcat-uid/bin/setclasspath.sh
+++ b/tomcat-uid/bin/setclasspath.sh
@@ -16,7 +16,9 @@
 # limitations under the License.
 
 # -----------------------------------------------------------------------------
-#  Set CLASSPATH and Java options
+#  Set JAVA_HOME or JRE_HOME if not already set, ensure any provided settings
+#  are valid and consistent with the selected start-up options and set up the
+#  endorsed directory.
 # -----------------------------------------------------------------------------
 
 # Make sure prerequisite environment variables are set
@@ -74,44 +76,19 @@
     fi
   fi
 fi
-if [ -z "$BASEDIR" ]; then
-  echo "The BASEDIR environment variable is not defined"
-  echo "This environment variable is needed to run this program"
-  exit 1
-fi
-if [ ! -x "$BASEDIR"/bin/setclasspath.sh ]; then
-  if $os400; then
-    # -x will Only work on the os400 if the files are:
-    # 1. owned by the user
-    # 2. owned by the PRIMARY group of the user
-    # this will not work if the user belongs in secondary groups
-    eval
-  else
-    echo "The BASEDIR environment variable is not defined correctly"
-    echo "This environment variable is needed to run this program"
-    exit 1
-  fi
-fi
 
 # Don't override the endorsed dir if the user has set it previously
 if [ -z "$JAVA_ENDORSED_DIRS" ]; then
   # Set the default -Djava.endorsed.dirs argument
-  JAVA_ENDORSED_DIRS="$BASEDIR"/endorsed
+  JAVA_ENDORSED_DIRS="$CATALINA_HOME"/endorsed
 fi
 
-# OSX hack to CLASSPATH
-JIKESPATH=
-if [ `uname -s` = "Darwin" ]; then
-  OSXHACK="/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Classes"
-  if [ -d "$OSXHACK" ]; then
-    for i in "$OSXHACK"/*.jar; do
-      JIKESPATH="$JIKESPATH":"$i"
-    done
-  fi
+# Set standard commands for invoking Java, if not already set.
+if [ -z "$_RUNJAVA" ]; then
+  _RUNJAVA="$JRE_HOME"/bin/java
 fi
-
-# Set standard commands for invoking Java.
-_RUNJAVA="$JRE_HOME"/bin/java
 if [ "$os400" != "true" ]; then
-  _RUNJDB="$JAVA_HOME"/bin/jdb
-fi
+  if [ -z "$_RUNJDB" ]; then
+    _RUNJDB="$JAVA_HOME"/bin/jdb
+  fi
+fi
\ No newline at end of file
diff --git a/tomcat-uid/bin/shutdown.bat b/tomcat-uid/bin/shutdown.bat
index d4a0335..119fb99 100644
--- a/tomcat-uid/bin/shutdown.bat
+++ b/tomcat-uid/bin/shutdown.bat
@@ -14,11 +14,12 @@
 rem See the License for the specific language governing permissions and

 rem limitations under the License.

 

-if "%OS%" == "Windows_NT" setlocal

 rem ---------------------------------------------------------------------------

 rem Stop script for the CATALINA Server

 rem ---------------------------------------------------------------------------

 

+setlocal

+

 rem Guess CATALINA_HOME if not defined

 set "CURRENT_DIR=%cd%"

 if not "%CATALINA_HOME%" == "" goto gotHome

diff --git a/tomcat-uid/bin/shutdown.sh b/tomcat-uid/bin/shutdown.sh
index e454500..cd0c97d 100644
--- a/tomcat-uid/bin/shutdown.sh
+++ b/tomcat-uid/bin/shutdown.sh
@@ -19,6 +19,12 @@
 # Stop script for the CATALINA Server
 # -----------------------------------------------------------------------------
 
+# Better OS/400 detection: see Bugzilla 31132
+os400=false
+case "`uname`" in
+OS400*) os400=true;;
+esac
+
 # resolve links - $0 may be a softlink
 PRG="$0"
 
@@ -31,16 +37,24 @@
     PRG=`dirname "$PRG"`/"$link"
   fi
 done
- 
+
 PRGDIR=`dirname "$PRG"`
 EXECUTABLE=catalina.sh
 
 # Check that target executable exists
-if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then
-  echo "Cannot find $PRGDIR/$EXECUTABLE"
-  echo "The file is absent or does not have execute permission"
-  echo "This file is needed to run this program"
-  exit 1
+if $os400; then
+  # -x will Only work on the os400 if the files are:
+  # 1. owned by the user
+  # 2. owned by the PRIMARY group of the user
+  # this will not work if the user belongs in secondary groups
+  eval
+else
+  if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then
+    echo "Cannot find $PRGDIR/$EXECUTABLE"
+    echo "The file is absent or does not have execute permission"
+    echo "This file is needed to run this program"
+    exit 1
+  fi
 fi
 
 exec "$PRGDIR"/"$EXECUTABLE" stop "$@"
diff --git a/tomcat-uid/bin/startup.bat b/tomcat-uid/bin/startup.bat
index 179e245..e9f46b8 100644
--- a/tomcat-uid/bin/startup.bat
+++ b/tomcat-uid/bin/startup.bat
@@ -14,11 +14,12 @@
 rem See the License for the specific language governing permissions and

 rem limitations under the License.

 

-if "%OS%" == "Windows_NT" setlocal

 rem ---------------------------------------------------------------------------

 rem Start script for the CATALINA Server

 rem ---------------------------------------------------------------------------

 

+setlocal

+

 rem Guess CATALINA_HOME if not defined

 set "CURRENT_DIR=%cd%"

 if not "%CATALINA_HOME%" == "" goto gotHome

diff --git a/tomcat-uid/bin/startup.sh b/tomcat-uid/bin/startup.sh
index 3a68fe8..7b10287 100644
--- a/tomcat-uid/bin/startup.sh
+++ b/tomcat-uid/bin/startup.sh
@@ -21,11 +21,8 @@
 
 # Better OS/400 detection: see Bugzilla 31132
 os400=false
-darwin=false
 case "`uname`" in
-CYGWIN*) cygwin=true;;
 OS400*) os400=true;;
-Darwin*) darwin=true;;
 esac
 
 # resolve links - $0 may be a softlink
@@ -40,13 +37,13 @@
     PRG=`dirname "$PRG"`/"$link"
   fi
 done
- 
+
 PRGDIR=`dirname "$PRG"`
 EXECUTABLE=catalina.sh
 
 # Check that target executable exists
 if $os400; then
-  # -x will Only work on the os400 if the files are: 
+  # -x will Only work on the os400 if the files are:
   # 1. owned by the user
   # 2. owned by the PRIMARY group of the user
   # this will not work if the user belongs in secondary groups
@@ -58,6 +55,6 @@
     echo "This file is needed to run this program"
     exit 1
   fi
-fi 
+fi
 
 exec "$PRGDIR"/"$EXECUTABLE" start "$@"
diff --git a/tomcat-uid/bin/tomcat-juli.jar b/tomcat-uid/bin/tomcat-juli.jar
index ff13de8..51e0c19 100644
--- a/tomcat-uid/bin/tomcat-juli.jar
+++ b/tomcat-uid/bin/tomcat-juli.jar
Binary files differ
diff --git a/tomcat-uid/bin/tomcat-native.tar.gz b/tomcat-uid/bin/tomcat-native.tar.gz
index d2ab7dc..0f2e787 100644
--- a/tomcat-uid/bin/tomcat-native.tar.gz
+++ b/tomcat-uid/bin/tomcat-native.tar.gz
Binary files differ
diff --git a/tomcat-uid/bin/tool-wrapper.bat b/tomcat-uid/bin/tool-wrapper.bat
index 7b88835..fcff6da 100644
--- a/tomcat-uid/bin/tool-wrapper.bat
+++ b/tomcat-uid/bin/tool-wrapper.bat
@@ -14,28 +14,41 @@
 rem See the License for the specific language governing permissions and

 rem limitations under the License.

 

-if "%OS%" == "Windows_NT" setlocal

 rem ---------------------------------------------------------------------------

 rem Wrapper script for command line tools

 rem

 rem Environment Variable Prerequisites

 rem

-rem   CATALINA_HOME May point at your Catalina "build" directory.

+rem   CATALINA_HOME   May point at your Catalina "build" directory.

 rem

-rem   TOOL_OPTS     (Optional) Java runtime options used when the "start",

-rem                 "stop", or "run" command is executed.

+rem   TOOL_OPTS       (Optional) Java runtime options.

 rem

-rem   JAVA_HOME     Must point at your Java Development Kit installation.

+rem   JAVA_HOME       Must point at your Java Development Kit installation.

+rem                   Using JRE_HOME instead works as well.

 rem

-rem   JAVA_OPTS     (Optional) Java runtime options used when the "start",

-rem                 "stop", or "run" command is executed.

+rem   JRE_HOME        Must point at your Java Runtime installation.

+rem                   Defaults to JAVA_HOME if empty. If JRE_HOME and JAVA_HOME

+rem                   are both set, JRE_HOME is used.

+rem

+rem   JAVA_OPTS       (Optional) Java runtime options.

+rem

+rem   JAVA_ENDORSED_DIRS (Optional) Lists of of semi-colon separated directories

+rem                   containing some jars in order to allow replacement of APIs

+rem                   created outside of the JCP (i.e. DOM and SAX from W3C).

+rem                   It can also be used to update the XML parser implementation.

+rem                   Defaults to $CATALINA_HOME/endorsed.

 rem ---------------------------------------------------------------------------

 

+setlocal

+

 rem Guess CATALINA_HOME if not defined

+set "CURRENT_DIR=%cd%"

 if not "%CATALINA_HOME%" == "" goto gotHome

-set CATALINA_HOME=.

+set "CATALINA_HOME=%CURRENT_DIR%"

 if exist "%CATALINA_HOME%\bin\tool-wrapper.bat" goto okHome

-set CATALINA_HOME=..

+cd ..

+set "CATALINA_HOME=%cd%"

+cd "%CURRENT_DIR%"

 :gotHome

 if exist "%CATALINA_HOME%\bin\tool-wrapper.bat" goto okHome

 echo The CATALINA_HOME environment variable is not defined correctly

@@ -56,18 +69,18 @@
 echo This file is needed to run this program

 goto end

 :okSetclasspath

-set "BASEDIR=%CATALINA_HOME%"

-call "%CATALINA_HOME%\bin\setclasspath.bat"

+call "%CATALINA_HOME%\bin\setclasspath.bat" %1

+if errorlevel 1 goto end

 

 rem Add on extra jar files to CLASSPATH

 rem Note that there are no quotes as we do not want to introduce random

 rem quotes into the CLASSPATH

-if "%CLASSPATH%" == "" goto noclasspath

-set "CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\bin\bootstrap.jar;%BASEDIR%\lib\servlet-api.jar"

-goto okclasspath

-:noclasspath

-set "CLASSPATH=%CATALINA_HOME%\bin\bootstrap.jar;%BASEDIR%\lib\servlet-api.jar"

-:okclasspath

+if "%CLASSPATH%" == "" goto emptyClasspath

+set "CLASSPATH=%CLASSPATH%;"

+:emptyClasspath

+set "CLASSPATH=%CLASSPATH%%CATALINA_HOME%\bin\bootstrap.jar;%CATALINA_HOME%\bin\tomcat-juli.jar;%CATALINA_HOME%\lib\servlet-api.jar"

+

+set JAVA_OPTS=%JAVA_OPTS% -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager

 

 rem Get remaining unshifted command line arguments and save them in the

 set CMD_LINE_ARGS=

diff --git a/tomcat-uid/bin/tool-wrapper.sh b/tomcat-uid/bin/tool-wrapper.sh
index 71c1de4..31cebf6 100644
--- a/tomcat-uid/bin/tool-wrapper.sh
+++ b/tomcat-uid/bin/tool-wrapper.sh
@@ -20,21 +20,34 @@
 #
 # Environment Variable Prerequisites
 #
-#   CATALINA_HOME May point at your Catalina "build" directory.
+#   CATALINA_HOME   May point at your Catalina "build" directory.
 #
-#   TOOL_OPTS     (Optional) Java runtime options used when the "start",
-#                 "stop", or "run" command is executed.
+#   TOOL_OPTS       (Optional) Java runtime options.
 #
-#   JAVA_HOME     Must point at your Java Development Kit installation.
+#   JAVA_HOME       Must point at your Java Development Kit installation.
+#                   Using JRE_HOME instead works as well.
 #
-#   JAVA_OPTS     (Optional) Java runtime options used when the "start",
-#                 "stop", or "run" command is executed.
+#   JRE_HOME        Must point at your Java Runtime installation.
+#                   Defaults to JAVA_HOME if empty. If JRE_HOME and JAVA_HOME
+#                   are both set, JRE_HOME is used.
+#
+#   JAVA_OPTS       (Optional) Java runtime options.
+#
+#   JAVA_ENDORSED_DIRS (Optional) Lists of of colon separated directories
+#                   containing some jars in order 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.
+#                   Defaults to $CATALINA_HOME/endorsed.
 # -----------------------------------------------------------------------------
 
 # OS specific support.  $var _must_ be set to either true or false.
 cygwin=false
+darwin=false
+os400=false
 case "`uname`" in
 CYGWIN*) cygwin=true;;
+Darwin*) darwin=true;;
+OS400*) os400=true;;
 esac
 
 # resolve links - $0 may be a softlink
@@ -52,43 +65,72 @@
 
 # Get standard environment variables
 PRGDIR=`dirname "$PRG"`
-CATALINA_HOME=`cd "$PRGDIR/.." >/dev/null; pwd`
+
+# Only set CATALINA_HOME if not already set
+[ -z "$CATALINA_HOME" ] && CATALINA_HOME=`cd "$PRGDIR/.." >/dev/null; pwd`
 
 # Ensure that any user defined CLASSPATH variables are not used on startup,
 # but allow them to be specified in setenv.sh, in rare case when it is needed.
 CLASSPATH=
 
-if [ -r "$CATALINA_HOME"/bin/setenv.sh ]; then
-  . "$CATALINA_HOME"/bin/setenv.sh
+if [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then
+  . "$CATALINA_HOME/bin/setenv.sh"
 fi
 
 # For Cygwin, ensure paths are in UNIX format before anything is touched
 if $cygwin; then
   [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+  [ -n "$JRE_HOME" ] && JRE_HOME=`cygpath --unix "$JRE_HOME"`
   [ -n "$CATALINA_HOME" ] && CATALINA_HOME=`cygpath --unix "$CATALINA_HOME"`
   [ -n "$CLASSPATH" ] && CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
 fi
 
+# For OS400
+if $os400; then
+  # Set job priority to standard for interactive (interactive - 6) by using
+  # the interactive priority - 6, the helper threads that respond to requests
+  # will be running at the same priority as interactive jobs.
+  COMMAND='chgjob job('$JOBNAME') runpty(6)'
+  system $COMMAND
+
+  # Enable multi threading
+  export QIBM_MULTI_THREADED=Y
+fi
+
 # Get standard Java environment variables
-if [ -r "$CATALINA_HOME"/bin/setclasspath.sh ]; then
-  BASEDIR="$CATALINA_HOME"
+if $os400; then
+  # -r will Only work on the os400 if the files are:
+  # 1. owned by the user
+  # 2. owned by the PRIMARY group of the user
+  # this will not work if the user belongs in secondary groups
   . "$CATALINA_HOME"/bin/setclasspath.sh
 else
-  echo "Cannot find $CATALINA_HOME/bin/setclasspath.sh"
-  echo "This file is needed to run this program"
-  exit 1
+  if [ -r "$CATALINA_HOME"/bin/setclasspath.sh ]; then
+    . "$CATALINA_HOME"/bin/setclasspath.sh
+  else
+    echo "Cannot find $CATALINA_HOME/bin/setclasspath.sh"
+    echo "This file is needed to run this program"
+    exit 1
+  fi
 fi
 
 # Add on extra jar files to CLASSPATH
-CLASSPATH="$CLASSPATH":"$CATALINA_HOME"/bin/bootstrap.jar:"$BASEDIR"/lib/servlet-api.jar
+if [ ! -z "$CLASSPATH" ] ; then
+  CLASSPATH="$CLASSPATH":
+fi
+CLASSPATH="$CLASSPATH""$CATALINA_HOME"/bin/bootstrap.jar:"$CATALINA_HOME"/bin/tomcat-juli.jar:"$CATALINA_HOME"/lib/servlet-api.jar
 
 # For Cygwin, switch paths to Windows format before running java
 if $cygwin; then
-  JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
-  CATALINA_HOME=`cygpath --path --windows "$CATALINA_HOME"`
+  JAVA_HOME=`cygpath --absolute --windows "$JAVA_HOME"`
+  JRE_HOME=`cygpath --absolute --windows "$JRE_HOME"`
+  CATALINA_HOME=`cygpath --absolute --windows "$CATALINA_HOME"`
   CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
+  JAVA_ENDORSED_DIRS=`cygpath --path --windows "$JAVA_ENDORSED_DIRS"`
 fi
 
+JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
+
 # ----- Execute The Requested Command -----------------------------------------
 
 exec "$_RUNJAVA" $JAVA_OPTS $TOOL_OPTS \
diff --git a/tomcat-uid/bin/version.bat b/tomcat-uid/bin/version.bat
index e190c23..d294f76 100644
--- a/tomcat-uid/bin/version.bat
+++ b/tomcat-uid/bin/version.bat
@@ -14,11 +14,12 @@
 rem See the License for the specific language governing permissions and

 rem limitations under the License.

 

-if "%OS%" == "Windows_NT" setlocal

 rem ---------------------------------------------------------------------------

 rem Version script for the CATALINA Server

 rem ---------------------------------------------------------------------------

 

+setlocal

+

 rem Guess CATALINA_HOME if not defined

 set "CURRENT_DIR=%cd%"

 if not "%CATALINA_HOME%" == "" goto gotHome

diff --git a/tomcat-uid/bin/version.sh b/tomcat-uid/bin/version.sh
index 6723161..1cb19bd 100644
--- a/tomcat-uid/bin/version.sh
+++ b/tomcat-uid/bin/version.sh
@@ -19,6 +19,12 @@
 # Version Script for the CATALINA Server
 # -----------------------------------------------------------------------------
 
+# Better OS/400 detection: see Bugzilla 31132
+os400=false
+case "`uname`" in
+OS400*) os400=true;;
+esac
+
 # resolve links - $0 may be a softlink
 PRG="$0"
 
@@ -36,11 +42,19 @@
 EXECUTABLE=catalina.sh
 
 # Check that target executable exists
-if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then
-  echo "Cannot find $PRGDIR/$EXECUTABLE"
-  echo "The file is absent or does not have execute permission"
-  echo "This file is needed to run this program"
-  exit 1
+if $os400; then
+  # -x will Only work on the os400 if the files are:
+  # 1. owned by the user
+  # 2. owned by the PRIMARY group of the user
+  # this will not work if the user belongs in secondary groups
+  eval
+else
+  if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then
+    echo "Cannot find $PRGDIR/$EXECUTABLE"
+    echo "The file is absent or does not have execute permission"
+    echo "This file is needed to run this program"
+    exit 1
+  fi
 fi
 
 exec "$PRGDIR"/"$EXECUTABLE" version "$@"
diff --git a/tomcat-uid/conf/catalina.policy b/tomcat-uid/conf/catalina.policy
index b6369ae..67aa45a 100644
--- a/tomcat-uid/conf/catalina.policy
+++ b/tomcat-uid/conf/catalina.policy
@@ -14,15 +14,15 @@
 // limitations under the License.

 

 // ============================================================================

-// catalina.policy - Security Policy Permissions for Tomcat 6

+// catalina.policy - Security Policy Permissions for Tomcat 7

 //

 // This file contains a default set of security policies to be enforced (by the

 // JVM) when Catalina is executed with the "-security" option.  In addition

 // to the permissions granted here, the following additional permissions are

-// granted to the codebase specific to each web application:

+// granted to each web application:

 //

-// * Read access to its document root directory

-// * Read, write and delete access to its working directory

+// * Read access to the web application's document root directory

+// * Read, write and delete access to the web application's working directory

 // ============================================================================

 

 

@@ -65,7 +65,7 @@
 //  grant codeBase "file:${catalina.base}/bin/tomcat-juli.jar" {..}

 grant codeBase "file:${catalina.home}/bin/tomcat-juli.jar" {

         permission java.io.FilePermission

-         "${java.home}${file.separator}lib${file.separator}logging.properties", "read"; 

+         "${java.home}${file.separator}lib${file.separator}logging.properties", "read";

 

         permission java.io.FilePermission

          "${catalina.base}${file.separator}conf${file.separator}logging.properties", "read";

@@ -82,6 +82,7 @@
 

         permission java.util.PropertyPermission "java.util.logging.config.class", "read";

         permission java.util.PropertyPermission "java.util.logging.config.file", "read";

+        permission java.util.PropertyPermission "org.apache.juli.ClassLoaderLogManager.debug", "read";

         permission java.util.PropertyPermission "catalina.base", "read";

 

         // Note: To enable per context logging configuration, permit read access to

@@ -120,7 +121,7 @@
 // These permissions are granted by default to all web applications

 // In addition, a web application will be given a read FilePermission

 // and JndiPermission for all files and directories in its document root.

-grant { 

+grant {

     // Required for JNDI lookup of named JDBC DataSource's and

     // javamail named MimePart DataSource used to send mail

     permission java.util.PropertyPermission "java.home", "read";

@@ -157,15 +158,38 @@
     // Allow read of JAXP compliant XML parser debug

     permission java.util.PropertyPermission "jaxp.debug", "read";

 

+    // All JSPs need to be able to read this package

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat";

+

     // Precompiled JSPs need access to these packages.

     permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.el";

     permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.runtime";

-    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.runtime.*";

-    

+    permission java.lang.RuntimePermission

+     "accessClassInPackage.org.apache.jasper.runtime.*";

+

     // Precompiled JSPs need access to these system properties.

     permission java.util.PropertyPermission

      "org.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER", "read";

-    permission java.util.PropertyPermission "org.apache.el.parser.COERCE_TO_ZERO", "read";

+    permission java.util.PropertyPermission

+     "org.apache.el.parser.COERCE_TO_ZERO", "read";

+

+    // The cookie code needs these.

+    permission java.util.PropertyPermission

+     "org.apache.catalina.STRICT_SERVLET_COMPLIANCE", "read";

+    permission java.util.PropertyPermission

+     "org.apache.tomcat.util.http.ServerCookie.STRICT_NAMING", "read";

+    permission java.util.PropertyPermission

+     "org.apache.tomcat.util.http.ServerCookie.FWD_SLASH_IS_SEPARATOR", "read";

+

+    // Applications using Comet need to be able to access this package

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.comet";

+

+    // Applications using the legacy WebSocket implementation need to be able to access this package

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.websocket";

+

+    // Applications using the JSR-356 WebSocket implementation need to be able to access these packages

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket";

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket.server";

 };

 

 

@@ -177,13 +201,17 @@
 // - CATALINA_HOME != CATALINA_BASE, shared Manager in CATALINA_HOME

 grant codeBase "file:${catalina.base}/webapps/manager/-" {

     permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina";

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.ha.session";

     permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager";

     permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager.util";

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.util";

 };

 grant codeBase "file:${catalina.home}/webapps/manager/-" {

     permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina";

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.ha.session";

     permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager";

     permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager.util";

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.util";

 };

 

 // You can assign additional permissions to particular web applications by

diff --git a/tomcat-uid/conf/catalina.properties b/tomcat-uid/conf/catalina.properties
index 0d9afc7..67c986a 100644
--- a/tomcat-uid/conf/catalina.properties
+++ b/tomcat-uid/conf/catalina.properties
@@ -20,7 +20,7 @@
 # corresponding RuntimePermission ("accessClassInPackage."+package) has

 # been granted.

 package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.jasper.,\

-org.apache.naming.resources.,org.apache.tomcat.,sun.beans.

+org.apache.naming.resources.,org.apache.tomcat.

 #

 # List of comma-separated packages that start with or equal this string

 # will cause a security exception to be thrown when

@@ -36,48 +36,102 @@
 

 #

 #

-# List of comma-separated paths defining the contents of the "common" 

+# List of comma-separated paths defining the contents of the "common"

 # classloader. Prefixes should be used to define what is the repository type.

 # Path may be relative to the CATALINA_HOME or CATALINA_BASE path or absolute.

-# If left as blank,the JVM system loader will be used as Catalina's "common" 

+# If left as blank,the JVM system loader will be used as Catalina's "common"

 # loader.

 # Examples:

 #     "foo": Add this folder as a class repository

-#     "foo/*.jar": Add all the JARs of the specified folder as class 

+#     "foo/*.jar": Add all the JARs of the specified folder as class

 #                  repositories

 #     "foo/bar.jar": Add bar.jar as a class repository

 common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar

 

 #

-# List of comma-separated paths defining the contents of the "server" 

+# List of comma-separated paths defining the contents of the "server"

 # classloader. Prefixes should be used to define what is the repository type.

 # Path may be relative to the CATALINA_HOME or CATALINA_BASE path or absolute.

-# If left as blank, the "common" loader will be used as Catalina's "server" 

+# If left as blank, the "common" loader will be used as Catalina's "server"

 # loader.

 # Examples:

 #     "foo": Add this folder as a class repository

-#     "foo/*.jar": Add all the JARs of the specified folder as class 

+#     "foo/*.jar": Add all the JARs of the specified folder as class

 #                  repositories

 #     "foo/bar.jar": Add bar.jar as a class repository

 server.loader=

 

 #

-# List of comma-separated paths defining the contents of the "shared" 

+# List of comma-separated paths defining the contents of the "shared"

 # classloader. Prefixes should be used to define what is the repository type.

 # Path may be relative to the CATALINA_BASE path or absolute. If left as blank,

 # the "common" loader will be used as Catalina's "shared" loader.

 # Examples:

 #     "foo": Add this folder as a class repository

-#     "foo/*.jar": Add all the JARs of the specified folder as class 

+#     "foo/*.jar": Add all the JARs of the specified folder as class

 #                  repositories

-#     "foo/bar.jar": Add bar.jar as a class repository 

+#     "foo/bar.jar": Add bar.jar as a class repository

 # Please note that for single jars, e.g. bar.jar, you need the URL form

 # starting with file:.

 shared.loader=

 

+# List of JAR files that should not be scanned using the JarScanner

+# functionality. This is typically used to scan JARs for configuration

+# information. JARs that do not contain such information may be excluded from

+# the scan to speed up the scanning process. This is the default list. JARs on

+# this list are excluded from all scans. Scan specific lists (to exclude JARs

+# from individual scans) follow this. The list must be a comma separated list of

+# JAR file names.

+# The JARs listed below include:

+# - Tomcat Bootstrap JARs

+# - Tomcat API JARs

+# - Catalina JARs

+# - Jasper JARs

+# - Tomcat JARs

+# - Common non-Tomcat JARs

+# - Test JARs (JUnit, Cobertura and dependencies)

+tomcat.util.scan.DefaultJarScanner.jarsToSkip=\

+bootstrap.jar,commons-daemon.jar,tomcat-juli.jar,\

+annotations-api.jar,el-api.jar,jsp-api.jar,servlet-api.jar,websocket-api.jar,\

+catalina.jar,catalina-ant.jar,catalina-ha.jar,catalina-tribes.jar,\

+jasper.jar,jasper-el.jar,ecj-*.jar,\

+tomcat-api.jar,tomcat-util.jar,tomcat-coyote.jar,tomcat-dbcp.jar,\

+tomcat-jni.jar,tomcat-spdy.jar,\

+tomcat-i18n-en.jar,tomcat-i18n-es.jar,tomcat-i18n-fr.jar,tomcat-i18n-ja.jar,\

+tomcat-juli-adapters.jar,catalina-jmx-remote.jar,catalina-ws.jar,\

+tomcat-jdbc.jar,\

+tools.jar,\

+commons-beanutils*.jar,commons-codec*.jar,commons-collections*.jar,\

+commons-dbcp*.jar,commons-digester*.jar,commons-fileupload*.jar,\

+commons-httpclient*.jar,commons-io*.jar,commons-lang*.jar,commons-logging*.jar,\

+commons-math*.jar,commons-pool*.jar,\

+jstl.jar,taglibs-standard-spec-*.jar,\

+geronimo-spec-jaxrpc*.jar,wsdl4j*.jar,\

+ant.jar,ant-junit*.jar,aspectj*.jar,jmx.jar,h2*.jar,hibernate*.jar,httpclient*.jar,\

+jmx-tools.jar,jta*.jar,log4j.jar,log4j-1*.jar,mail*.jar,slf4j*.jar,\

+xercesImpl.jar,xmlParserAPIs.jar,xml-apis.jar,\

+junit.jar,junit-*.jar,hamcrest*.jar,org.hamcrest*.jar,ant-launcher.jar,\

+cobertura-*.jar,asm-*.jar,dom4j-*.jar,icu4j-*.jar,jaxen-*.jar,jdom-*.jar,\

+jetty-*.jar,oro-*.jar,servlet-api-*.jar,tagsoup-*.jar,xmlParserAPIs-*.jar,\

+xom-*.jar

+

+# Additional JARs (over and above the default JARs listed above) to skip when

+# scanning for Servlet 3.0 pluggability features. These features include web

+# fragments, annotations, SCIs and classes that match @HandlesTypes. The list

+# must be a comma separated list of JAR file names.

+org.apache.catalina.startup.ContextConfig.jarsToSkip=

+

+# Additional JARs (over and above the default JARs listed above) to skip when

+# scanning for TLDs. The list must be a comma separated list of JAR file names.

+org.apache.catalina.startup.TldConfig.jarsToSkip=tomcat7-websocket.jar

+

 #

 # String cache configuration.

 tomcat.util.buf.StringCache.byte.enabled=true

 #tomcat.util.buf.StringCache.char.enabled=true

 #tomcat.util.buf.StringCache.trainThreshold=500000

 #tomcat.util.buf.StringCache.cacheSize=5000

+

+# Allow for changes to HTTP request validation

+# WARNING: Using this option will expose the server to CVE-2016-6816

+#tomcat.util.http.parser.HttpParser.requestTargetAllow=|

diff --git a/tomcat-uid/conf/context.xml b/tomcat-uid/conf/context.xml
index 7489ff2..5e3574d 100644
--- a/tomcat-uid/conf/context.xml
+++ b/tomcat-uid/conf/context.xml
@@ -20,7 +20,7 @@
 

     <!-- Default set of monitored resources -->

     <WatchedResource>WEB-INF/web.xml</WatchedResource>

-	

+

     <!-- Uncomment this to disable session persistence across Tomcat restarts -->

     <!--

     <Manager pathname="" />

@@ -31,21 +31,21 @@
     <!--

     <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />

     -->

-	

-	<Resource name="jdbc/uidman"

-		auth="Container"

-		description="DB Connection"

-		type="javax.sql.DataSource"

-		driverClassName="oracle.jdbc.driver.OracleDriver"

-		url="jdbc:oracle:thin:@localhost:1521:dev"

-		username="idc_u_uniauth" 

-		password="kingstar"

-		maxIdle="20"

-		maxWait="4000"

-		maxActive="50"

-		removeAbandoned="true"

-		removeAbandonedTimeout="180"

-		logAbandoned="true"

-		factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" />

+

+    <Resource name="jdbc/uidman"

+  		auth="Container"

+  		description="DB Connection"

+  		type="javax.sql.DataSource"

+  		driverClassName="oracle.jdbc.driver.OracleDriver"

+  		url="jdbc:oracle:thin:@localhost:1521:dev"

+  		username="idc_u_uniauth"

+  		password="kingstar"

+  		maxIdle="20"

+  		maxWait="4000"

+  		maxActive="50"

+  		removeAbandoned="true"

+  		removeAbandonedTimeout="180"

+  		logAbandoned="true"

+  		factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" />

 

 </Context>

diff --git a/tomcat-uid/conf/logging.properties b/tomcat-uid/conf/logging.properties
index 4558185..90d7ea7 100644
--- a/tomcat-uid/conf/logging.properties
+++ b/tomcat-uid/conf/logging.properties
@@ -56,9 +56,9 @@
 org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO

 org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.FileHandler

 

-# For example, to log debug messages in ContextConfig and HostConfig

-# classes and to log only warnings and errors in other

-# org.apache.catalina.** classes, uncomment these lines:

-#org.apache.catalina.startup.ContextConfig.level = FINE

-#org.apache.catalina.startup.HostConfig.level = FINE

-#org.apache.catalina.level = WARNING

+# For example, set the org.apache.catalina.util.LifecycleBase logger to log

+# each component that extends LifecycleBase changing state:

+#org.apache.catalina.util.LifecycleBase.level = FINE

+

+# To see debug messages in TldLocationsCache, uncomment the following line:

+#org.apache.jasper.compiler.TldLocationsCache.level = FINE

diff --git a/tomcat-uid/conf/server.xml b/tomcat-uid/conf/server.xml
index a9e75b6..817e621 100644
--- a/tomcat-uid/conf/server.xml
+++ b/tomcat-uid/conf/server.xml
@@ -20,16 +20,18 @@
      Documentation at /docs/config/server.html

  -->

 <Server port="8015" shutdown="SHUTDOWN">

-

+  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />

+  <!-- Security listener. Documentation at /docs/config/listeners.html

+  <Listener className="org.apache.catalina.security.SecurityListener" />

+  -->

   <!--APR library loader. Documentation at /docs/apr.html -->

   <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

   <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->

   <Listener className="org.apache.catalina.core.JasperListener" />

   <!-- Prevent memory leaks due to use of particular java/javax APIs-->

   <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />

-  <!-- JMX Support for the Tomcat server. Documentation at /docs/non-existent.html -->

-  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />

   <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />

+  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

 

   <!-- Global JNDI resources

        Documentation at /docs/jndi-resources-howto.html

@@ -46,19 +48,21 @@
   </GlobalNamingResources>

 

   <!-- A "Service" is a collection of one or more "Connectors" that share

-       a single "Container" Note:  A "Service" is not itself a "Container", 

+       a single "Container" Note:  A "Service" is not itself a "Container",

        so you may not define subcomponents such as "Valves" at this level.

        Documentation at /docs/config/service.html

    -->

   <Service name="Catalina">

-  

+

     <!--The connectors can use a shared executor, you can define one or more named thread pools-->

     <!--

+    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"

+        maxThreads="150" minSpareThreads="4"/>

     -->

-    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" 

+    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"

         maxThreads="5000" minSpareThreads="400"/>

-    

-    

+

+

     <!-- A "Connector" represents an endpoint by which requests are received

          and responses are returned. Documentation at :

          Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)

@@ -66,24 +70,24 @@
          APR (HTTP/AJP) Connector: /docs/apr.html

          Define a non-SSL HTTP/1.1 Connector on port 8080

     -->

-    <Connector executor="tomcatThreadPool"

-               port="8018" protocol="HTTP/1.1" 

-               connectionTimeout="20000" 

-               redirectPort="8443" URIEncoding="UTF-8" />

+    <Connector port="8018" protocol="HTTP/1.1"

+               connectionTimeout="20000"

+               redirectPort="8443" executor="tomcatThreadPool" URIEncoding="UTF-8" />

     <!-- A "Connector" using the shared thread pool-->

     <!--

     <Connector executor="tomcatThreadPool"

-               port="8080" protocol="HTTP/1.1" 

-               connectionTimeout="20000" 

+               port="8080" protocol="HTTP/1.1"

+               connectionTimeout="20000"

                redirectPort="8443" />

-    -->           

+    -->

     <!-- Define a SSL HTTP/1.1 Connector on port 8443

-         This connector uses the JSSE configuration, when using APR, the 

-         connector should be using the OpenSSL style configuration

-         described in the APR documentation -->

+         This connector uses the BIO implementation that requires the JSSE

+         style configuration. When using the APR/native implementation, the

+         OpenSSL style configuration is required as described in the APR/native

+         documentation -->

     <!--

-    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"

-               maxThreads="150" scheme="https" secure="true"

+    <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"

+               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"

                clientAuth="false" sslProtocol="TLS" />

     -->

 

@@ -98,8 +102,8 @@
          Documentation at /docs/config/engine.html -->

 

     <!-- You should set jvmRoute to support load-balancing via AJP ie :

-    <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">         

-    --> 

+    <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">

+    -->

     <Engine name="Catalina" defaultHost="localhost">

 

       <!--For clustering, please take a look at documentation at:

@@ -107,28 +111,21 @@
           /docs/config/cluster.html (reference documentation) -->

       <!--

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

-      -->        

-

-      <!-- The request dumper valve dumps useful debugging information about

-           the request and response data received and sent by Tomcat.

-           Documentation at: /docs/config/valve.html -->

-      <!--

-      <Valve className="org.apache.catalina.valves.RequestDumperValve"/>

       -->

 

-      <!-- This Realm uses the UserDatabase configured in the global JNDI

-           resources under the key "UserDatabase".  Any edits

-           that are performed against this UserDatabase are immediately

-           available for use by the Realm.  -->

-      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"

-             resourceName="UserDatabase"/>

+      <!-- Use the LockOutRealm to prevent attempts to guess user passwords

+           via a brute-force attack -->

+      <Realm className="org.apache.catalina.realm.LockOutRealm">

+        <!-- This Realm uses the UserDatabase configured in the global JNDI

+             resources under the key "UserDatabase".  Any edits

+             that are performed against this UserDatabase are immediately

+             available for use by the Realm.  -->

+        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"

+               resourceName="UserDatabase"/>

+      </Realm>

 

-      <!-- Define the default virtual host

-           Note: XML Schema validation will not work with Xerces 2.2.

-       -->

       <Host name="localhost"  appBase="webapps"

-            unpackWARs="true" autoDeploy="false"

-            xmlValidation="false" xmlNamespaceAware="false">

+            unpackWARs="true" autoDeploy="true">

 

         <!-- SingleSignOn valve, share authentication between web applications

              Documentation at: /docs/config/valve.html -->

@@ -137,11 +134,11 @@
         -->

 

         <!-- Access log processes all example.

-             Documentation at: /docs/config/valve.html -->

-        <!--

-        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"  

-               prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>

-        -->

+             Documentation at: /docs/config/valve.html

+             Note: The pattern used is equivalent to using pattern="common" -->

+        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"

+               prefix="localhost_access_log." suffix=".txt"

+               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

 

       </Host>

     </Engine>

diff --git a/tomcat-uid/conf/tomcat-users.xml b/tomcat-uid/conf/tomcat-users.xml
index 34e268d..410d18f 100644
--- a/tomcat-uid/conf/tomcat-users.xml
+++ b/tomcat-uid/conf/tomcat-users.xml
@@ -19,18 +19,23 @@
 <!--

   NOTE:  By default, no user is included in the "manager-gui" role required

   to operate the "/manager/html" web application.  If you wish to use this app,

-  you must define such a user - the username and password are arbitrary.

+  you must define such a user - the username and password are arbitrary. It is

+  strongly recommended that you do NOT use one of the users in the commented out

+  section below since they are intended for use with the examples web

+  application.

 -->

 <!--

-  NOTE:  The sample user and role entries below are wrapped in a comment

-  and thus are ignored when reading this file. Do not forget to remove

-  <!.. ..> that surrounds them.

+  NOTE:  The sample user and role entries below are intended for use with the

+  examples web application. They are wrapped in a comment and thus are ignored

+  when reading this file. If you wish to configure these users for use with the

+  examples web application, do not forget to remove the <!.. ..> that surrounds

+  them. You will also need to set the passwords to something appropriate.

 -->

 <!--

   <role rolename="tomcat"/>

   <role rolename="role1"/>

-  <user username="tomcat" password="tomcat" roles="tomcat"/>

-  <user username="both" password="tomcat" roles="tomcat,role1"/>

-  <user username="role1" password="tomcat" roles="role1"/>

+  <user username="tomcat" password="<must-be-changed>" roles="tomcat"/>

+  <user username="both" password="<must-be-changed>" roles="tomcat,role1"/>

+  <user username="role1" password="<must-be-changed>" roles="role1"/>

 -->

 </tomcat-users>

diff --git a/tomcat-uid/conf/web.xml b/tomcat-uid/conf/web.xml
index 4b2cb5a..d4f6524 100644
--- a/tomcat-uid/conf/web.xml
+++ b/tomcat-uid/conf/web.xml
@@ -16,9 +16,10 @@
   limitations under the License.

 -->

 <web-app xmlns="http://java.sun.com/xml/ns/javaee"

-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

-    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

-    version="2.5">

+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

+                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

+  version="3.0">

 

   <!-- ======================== Introduction ============================== -->

   <!-- This document defines default values for *all* web applications      -->

@@ -41,7 +42,8 @@
   <!-- parameters (default values are in square brackets):                  -->

   <!--                                                                      -->

   <!--   debug               Debugging detail level for messages logged     -->

-  <!--                       by this servlet.  [0]                          -->

+  <!--                       by this servlet. Useful values are 0, 1, and   -->

+  <!--                       11 where higher values mean more detail. [0]   -->

   <!--                                                                      -->

   <!--   fileEncoding        Encoding to be used to read static resources   -->

   <!--                       [platform default]                             -->

@@ -62,7 +64,7 @@
   <!--                       commands like PUT and DELETE are               -->

   <!--                       rejected?  [true]                              -->

   <!--                                                                      -->

-  <!--   readmeFile          File name to display with the directory        -->

+  <!--   readmeFile          File to display together with the directory    -->

   <!--                       contents. [null]                               -->

   <!--                                                                      -->

   <!--   sendfileSize        If the connector used supports sendfile, this  -->

@@ -93,6 +95,10 @@
   <!--                       path that points to a location below either    -->

   <!--                       $CATALINA_BASE/conf (checked first) or         -->

   <!--                       $CATALINA_HOME/conf (checked second).[null]    -->

+  <!--                                                                      -->

+  <!--   showServerInfo      Should server information be presented in the  -->

+  <!--                       response sent to clients when directory        -->

+  <!--                       listings is enabled? [true]                    -->

 

     <servlet>

         <servlet-name>default</servlet-name>

@@ -109,37 +115,6 @@
     </servlet>

 

 

-  <!-- This servlet has been deprecated due to security concerns. Servlets  -->

-  <!-- should be explicitly mapped in web.xml                               -->

-  <!--                                                                      -->

-  <!-- The "invoker" servlet, which executes anonymous servlet classes      -->

-  <!-- that have not been defined in a web.xml file.  Traditionally, this   -->

-  <!-- servlet is mapped to the URL pattern "/servlet/*", but you can map   -->

-  <!-- it to other patterns as well.  The extra path info portion of such a -->

-  <!-- request must be the fully qualified class name of a Java class that  -->

-  <!-- implements Servlet (or extends HttpServlet), or the servlet name     -->

-  <!-- of an existing servlet definition.     This servlet supports the     -->

-  <!-- following initialization parameters (default values are in square    -->

-  <!-- brackets):                                                           -->

-  <!--                                                                      -->

-  <!--   debug               Debugging detail level for messages logged     -->

-  <!--                       by this servlet.  [0]                          -->

-

-<!--

-    <servlet>

-        <servlet-name>invoker</servlet-name>

-        <servlet-class>

-          org.apache.catalina.servlets.InvokerServlet

-        </servlet-class>

-        <init-param>

-            <param-name>debug</param-name>

-            <param-value>0</param-value>

-        </init-param>

-        <load-on-startup>2</load-on-startup>

-    </servlet>

--->

-

-

   <!-- The JSP page compiler and execution servlet, which is the mechanism  -->

   <!-- used by Tomcat to support JSP pages.  Traditionally, this servlet    -->

   <!-- is mapped to the URL pattern "*.jsp".  This servlet supports the     -->

@@ -163,9 +138,9 @@
   <!--                       pages.  See the jasper documentation for more  -->

   <!--                       information.                                   -->

   <!--                                                                      -->

-  <!--   compilerSourceVM    Compiler source VM. [1.5]                      -->

+  <!--   compilerSourceVM    Compiler source VM. [1.6]                      -->

   <!--                                                                      -->

-  <!--   compilerTargetVM    Compiler target VM. [1.5]                      -->  

+  <!--   compilerTargetVM    Compiler target VM. [1.6]                      -->

   <!--                                                                      -->

   <!--   development         Is Jasper used in development mode? If true,   -->

   <!--                       the frequency at which JSPs are checked for    -->

@@ -188,6 +163,8 @@
   <!--   engineOptionsClass  Allows specifying the Options class used to    -->

   <!--                       configure Jasper. If not present, the default  -->

   <!--                       EmbeddedServletOptions will be used.           -->

+  <!--                       This option is ignored when running under a    -->

+  <!--                       SecurityManager.                               -->

   <!--                                                                      -->

   <!--   errorOnUseBeanInvalidClassAttribute                                -->

   <!--                       Should Jasper issue an error when the value of -->

@@ -217,6 +194,18 @@
   <!--                       print statement per input line, to ease        -->

   <!--                       debugging?  [true]                             -->

   <!--                                                                      -->

+  <!--   maxLoadedJsps       The maximum number of JSPs that will be loaded -->

+  <!--                       for a web application. If more than this       -->

+  <!--                       number of JSPs are loaded, the least recently  -->

+  <!--                       used JSPs will be unloaded so that the number  -->

+  <!--                       of JSPs loaded at any one time does not exceed -->

+  <!--                       this limit. A value of zero or less indicates  -->

+  <!--                       no limit. [-1]                                 -->

+  <!--                                                                      -->

+  <!--   jspIdleTimeout      The amount of time in seconds a JSP can be     -->

+  <!--                       idle before it is unloaded. A value of zero    -->

+  <!--                       or less indicates never unload. [-1]           -->

+  <!--                                                                      -->

   <!--   modificationTestInterval                                           -->

   <!--                       Causes a JSP (and its dependent files) to not  -->

   <!--                       be checked for modification during the         -->

@@ -237,6 +226,8 @@
   <!--   scratchdir          What scratch directory should we use when      -->

   <!--                       compiling JSP pages?  [default work directory  -->

   <!--                       for the current web application]               -->

+  <!--                       This option is ignored when running under a    -->

+  <!--                       SecurityManager.                               -->

   <!--                                                                      -->

   <!--   suppressSmap        Should the generation of SMAP info for JSR45   -->

   <!--                       debugging be suppressed?  [false]              -->

@@ -245,11 +236,12 @@
   <!--                       actions or directives be trimmed?  [false]     -->

   <!--                                                                      -->

   <!--   xpoweredBy          Determines whether X-Powered-By response       -->

-  <!--                       header is added by generated servlet  [false]  -->

+  <!--                       header is added by generated servlet.  [false] -->

   <!--                                                                      -->

-  <!-- If you wish to use Jikes to compile JSP pages:                       -->

-  <!--   Please see the "Using Jikes" section of the Jasper-HowTo           -->

-  <!--   page in the Tomcat documentation.                                  -->

+  <!--   quoteAttributeEL    When EL is used in an attribute value on a     -->

+  <!--                       JSP page should the rules for quoting of       -->

+  <!--                       attributes described in JSP.1.6 be applied to  -->

+  <!--                       the expression? [true]                         -->

 

     <servlet>

         <servlet-name>jsp</servlet-name>

@@ -335,14 +327,21 @@
   <!--                                                                      -->

   <!--   cgiPathPrefix        The CGI search path will start at             -->

   <!--                        webAppRootDir + File.separator + this prefix. -->

-  <!--                        [WEB-INF/cgi]                                 -->

-  <!--                                                                      -->

-  <!--   debug                Debugging detail level for messages logged    -->

-  <!--                        by this servlet.  [0]                         -->

+  <!--                        If not set, then webAppRootDir is used.       -->

+  <!--                        Recommended value: WEB-INF/cgi                -->

   <!--                                                                      -->

   <!--   executable           Name of the executable used to run the        -->

   <!--                        script. [perl]                                -->

   <!--                                                                      -->

+  <!--   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.                                      -->

+  <!--                        [ACCEPT[-0-9A-Z]*|CACHE-CONTROL|COOKIE|HOST|  -->

+  <!--                         IF-[-0-9A-Z]*|REFERER|USER-AGENT]            -->

+  <!--                                                                      -->

   <!--   parameterEncoding    Name of parameter encoding to be used with    -->

   <!--                        CGI servlet.                                  -->

   <!--                        [System.getProperty("file.encoding","UTF-8")] -->

@@ -359,14 +358,10 @@
         <servlet-name>cgi</servlet-name>

         <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>

         <init-param>

-          <param-name>debug</param-name>

-          <param-value>0</param-value>

-        </init-param>

-        <init-param>

           <param-name>cgiPathPrefix</param-name>

           <param-value>WEB-INF/cgi</param-value>

         </init-param>

-         <load-on-startup>5</load-on-startup>

+        <load-on-startup>5</load-on-startup>

     </servlet>

 -->

 

@@ -385,22 +380,10 @@
         <url-pattern>/</url-pattern>

     </servlet-mapping>

 

-    <!-- The mapping for the deprecated invoker servlet -->

-<!--

-    <servlet-mapping>

-        <servlet-name>invoker</servlet-name>

-        <url-pattern>/servlet/*</url-pattern>

-    </servlet-mapping>

--->

-

-    <!-- The mapping for the JSP servlet -->

+    <!-- The mappings for the JSP servlet -->

     <servlet-mapping>

         <servlet-name>jsp</servlet-name>

         <url-pattern>*.jsp</url-pattern>

-    </servlet-mapping>

-

-    <servlet-mapping>

-        <servlet-name>jsp</servlet-name>

         <url-pattern>*.jspx</url-pattern>

     </servlet-mapping>

 

@@ -424,6 +407,45 @@
 

   <!-- ================== Built In Filter Definitions ===================== -->

 

+  <!-- A filter that sets various security related HTTP Response headers.   -->

+  <!-- This filter supports the following initialization parameters         -->

+  <!-- (default values are in square brackets):                             -->

+  <!--                                                                      -->

+  <!--   hstsEnabled         Should the HTTP Strict Transport Security      -->

+  <!--                       (HSTS) header be added to the response? See    -->

+  <!--                       RFC 6797 for more information on HSTS. [true]  -->

+  <!--                                                                      -->

+  <!--   hstsMaxAgeSeconds   The max age value that should be used in the   -->

+  <!--                       HSTS header. Negative values will be treated   -->

+  <!--                       as zero. [0]                                   -->

+  <!--                                                                      -->

+  <!--   hstsIncludeSubDomains                                              -->

+  <!--                       Should the includeSubDomains parameter be      -->

+  <!--                       included in the HSTS header.                   -->

+  <!--                                                                      -->

+  <!--   antiClickJackingEnabled                                            -->

+  <!--                       Should the anti click-jacking header           -->

+  <!--                       X-Frame-Options be added to every response?    -->

+  <!--                       [true]                                         -->

+  <!--                                                                      -->

+  <!--   antiClickJackingOption                                             -->

+  <!--                       What value should be used for the header. Must -->

+  <!--                       be one of DENY, SAMEORIGIN, ALLOW-FROM         -->

+  <!--                       (case-insensitive). [DENY]                     -->

+  <!--                                                                      -->

+  <!--   antiClickJackingUri IF ALLOW-FROM is used, what URI should be      -->

+  <!--                       allowed? []                                    -->

+  <!--                                                                      -->

+  <!--   blockContentTypeSniffingEnabled                                    -->

+  <!--                       Should the header that blocks content type     -->

+  <!--                       sniffing be added to every response? [true]    -->

+<!--

+    <filter>

+        <filter-name>httpHeaderSecurity</filter-name>

+        <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>

+        <async-supported>true</async-supported>

+    </filter>

+-->

 

   <!-- A filter that sets character encoding that is used to decode -->

   <!-- parameters in a POST request -->

@@ -435,10 +457,10 @@
             <param-name>encoding</param-name>

             <param-value>UTF-8</param-value>

         </init-param>

+        <async-supported>true</async-supported>

     </filter>

 -->

 

-

   <!-- A filter that triggers request parameters parsing and rejects the    -->

   <!-- request if some parameters were skipped because of parsing errors or -->

   <!-- request size limitations.                                            -->

@@ -448,6 +470,7 @@
         <filter-class>

           org.apache.catalina.filters.FailedRequestFilter

         </filter-class>

+        <async-supported>true</async-supported>

     </filter>

 -->

 

@@ -512,6 +535,15 @@
 

   <!-- ==================== Built In Filter Mappings ====================== -->

 

+  <!-- The mapping for the HTTP header security Filter -->

+<!--

+    <filter-mapping>

+        <filter-name>httpHeaderSecurity</filter-name>

+        <url-pattern>/*</url-pattern>

+        <dispatcher>REQUEST</dispatcher>

+    </filter-mapping>

+-->

+

   <!-- The mapping for the Set Character Encoding Filter -->

 <!--

     <filter-mapping>

@@ -4622,15 +4654,17 @@
 

   <!-- ==================== Default Welcome File List ===================== -->

   <!-- When a request URI refers to a directory, the default servlet looks  -->

-  <!-- for a "welcome file" within that directory and, if present,          -->

-  <!-- to the corresponding resource URI for display.  If no welcome file   -->

-  <!-- is present, the default servlet either serves a directory listing,   -->

-  <!-- or returns a 404 status, depending on how it is configured.          -->

+  <!-- for a "welcome file" within that directory and, if present, to the   -->

+  <!-- corresponding resource URI for display.                              -->

+  <!-- If no welcome files are present, the default servlet either serves a -->

+  <!-- directory listing (see default servlet configuration on how to       -->

+  <!-- customize) or returns a 404 status, depending on the value of the    -->

+  <!-- listings setting.                                                    -->

   <!--                                                                      -->

   <!-- If you define welcome files in your own application's web.xml        -->

   <!-- deployment descriptor, that list *replaces* the list configured      -->

-  <!-- here, so be sure that you include any of the default values that     -->

-  <!-- you wish to include.                                                 -->

+  <!-- here, so be sure to include any of the default values that you wish  -->

+  <!-- to use within your application.                                       -->

 

     <welcome-file-list>

         <welcome-file>index.html</welcome-file>

diff --git a/tomcat-uid/lib/annotations-api.jar b/tomcat-uid/lib/annotations-api.jar
index 757c207..bf7eafa 100644
--- a/tomcat-uid/lib/annotations-api.jar
+++ b/tomcat-uid/lib/annotations-api.jar
Binary files differ
diff --git a/tomcat-uid/lib/catalina-ant.jar b/tomcat-uid/lib/catalina-ant.jar
index 0a87a58..ecb4982 100644
--- a/tomcat-uid/lib/catalina-ant.jar
+++ b/tomcat-uid/lib/catalina-ant.jar
Binary files differ
diff --git a/tomcat-uid/lib/catalina-ha.jar b/tomcat-uid/lib/catalina-ha.jar
index a30126d..d258efe 100644
--- a/tomcat-uid/lib/catalina-ha.jar
+++ b/tomcat-uid/lib/catalina-ha.jar
Binary files differ
diff --git a/tomcat-uid/lib/catalina-tribes.jar b/tomcat-uid/lib/catalina-tribes.jar
index 55c123c..04ee183 100644
--- a/tomcat-uid/lib/catalina-tribes.jar
+++ b/tomcat-uid/lib/catalina-tribes.jar
Binary files differ
diff --git a/tomcat-uid/lib/catalina.jar b/tomcat-uid/lib/catalina.jar
index 42fa496..c5003d2 100644
--- a/tomcat-uid/lib/catalina.jar
+++ b/tomcat-uid/lib/catalina.jar
Binary files differ
diff --git a/tomcat-uid/lib/ecj-4.3.1.jar b/tomcat-uid/lib/ecj-4.3.1.jar
deleted file mode 100644
index dc07007..0000000
--- a/tomcat-uid/lib/ecj-4.3.1.jar
+++ /dev/null
Binary files differ
diff --git a/tomcat-uid/lib/ecj-4.4.2.jar b/tomcat-uid/lib/ecj-4.4.2.jar
new file mode 100644
index 0000000..d9411b3
--- /dev/null
+++ b/tomcat-uid/lib/ecj-4.4.2.jar
Binary files differ
diff --git a/tomcat-uid/lib/el-api.jar b/tomcat-uid/lib/el-api.jar
index 32818ae..d189ae6 100644
--- a/tomcat-uid/lib/el-api.jar
+++ b/tomcat-uid/lib/el-api.jar
Binary files differ
diff --git a/tomcat-uid/lib/jasper-el.jar b/tomcat-uid/lib/jasper-el.jar
index e3bc712..b6d299d 100644
--- a/tomcat-uid/lib/jasper-el.jar
+++ b/tomcat-uid/lib/jasper-el.jar
Binary files differ
diff --git a/tomcat-uid/lib/jasper.jar b/tomcat-uid/lib/jasper.jar
index bc59510..b6fc3b5 100644
--- a/tomcat-uid/lib/jasper.jar
+++ b/tomcat-uid/lib/jasper.jar
Binary files differ
diff --git a/tomcat-uid/lib/jsp-api.jar b/tomcat-uid/lib/jsp-api.jar
index c842301..a708c06 100644
--- a/tomcat-uid/lib/jsp-api.jar
+++ b/tomcat-uid/lib/jsp-api.jar
Binary files differ
diff --git a/tomcat-uid/lib/servlet-api.jar b/tomcat-uid/lib/servlet-api.jar
index e7add98..22de88c 100644
--- a/tomcat-uid/lib/servlet-api.jar
+++ b/tomcat-uid/lib/servlet-api.jar
Binary files differ
diff --git a/tomcat-uid/lib/tomcat-api.jar b/tomcat-uid/lib/tomcat-api.jar
new file mode 100644
index 0000000..49905d1
--- /dev/null
+++ b/tomcat-uid/lib/tomcat-api.jar
Binary files differ
diff --git a/tomcat-uid/lib/tomcat-coyote.jar b/tomcat-uid/lib/tomcat-coyote.jar
index 6af788f..95d40bf 100644
--- a/tomcat-uid/lib/tomcat-coyote.jar
+++ b/tomcat-uid/lib/tomcat-coyote.jar
Binary files differ
diff --git a/tomcat-uid/lib/tomcat-dbcp.jar b/tomcat-uid/lib/tomcat-dbcp.jar
index a4081dc..41ca5d0 100644
--- a/tomcat-uid/lib/tomcat-dbcp.jar
+++ b/tomcat-uid/lib/tomcat-dbcp.jar
Binary files differ
diff --git a/tomcat-uid/lib/tomcat-i18n-es.jar b/tomcat-uid/lib/tomcat-i18n-es.jar
index d08aa49..775438d 100644
--- a/tomcat-uid/lib/tomcat-i18n-es.jar
+++ b/tomcat-uid/lib/tomcat-i18n-es.jar
Binary files differ
diff --git a/tomcat-uid/lib/tomcat-i18n-fr.jar b/tomcat-uid/lib/tomcat-i18n-fr.jar
index 62274c5..39e09c9 100644
--- a/tomcat-uid/lib/tomcat-i18n-fr.jar
+++ b/tomcat-uid/lib/tomcat-i18n-fr.jar
Binary files differ
diff --git a/tomcat-uid/lib/tomcat-i18n-ja.jar b/tomcat-uid/lib/tomcat-i18n-ja.jar
index 0e56bdc..417fe55 100644
--- a/tomcat-uid/lib/tomcat-i18n-ja.jar
+++ b/tomcat-uid/lib/tomcat-i18n-ja.jar
Binary files differ
diff --git a/tomcat-uid/lib/tomcat-jdbc.jar b/tomcat-uid/lib/tomcat-jdbc.jar
new file mode 100644
index 0000000..d5cf5f1
--- /dev/null
+++ b/tomcat-uid/lib/tomcat-jdbc.jar
Binary files differ
diff --git a/tomcat-uid/lib/tomcat-util.jar b/tomcat-uid/lib/tomcat-util.jar
new file mode 100644
index 0000000..b36bb6e
--- /dev/null
+++ b/tomcat-uid/lib/tomcat-util.jar
Binary files differ
diff --git a/tomcat-uid/lib/tomcat7-websocket.jar b/tomcat-uid/lib/tomcat7-websocket.jar
new file mode 100644
index 0000000..7aab315
--- /dev/null
+++ b/tomcat-uid/lib/tomcat7-websocket.jar
Binary files differ
diff --git a/tomcat-uid/lib/websocket-api.jar b/tomcat-uid/lib/websocket-api.jar
new file mode 100644
index 0000000..2756609
--- /dev/null
+++ b/tomcat-uid/lib/websocket-api.jar
Binary files differ
diff --git a/tomcat-uid/webapps/ROOT/RELEASE-NOTES.txt b/tomcat-uid/webapps/ROOT/RELEASE-NOTES.txt
index b85ba0f..99cea1c 100644
--- a/tomcat-uid/webapps/ROOT/RELEASE-NOTES.txt
+++ b/tomcat-uid/webapps/ROOT/RELEASE-NOTES.txt
@@ -16,15 +16,16 @@
 ================================================================================

 

 

-                     Apache Tomcat Version 6.0.41

+                     Apache Tomcat Version 7.0.77

                             Release Notes

 

 

-=============================

-KNOWN ISSUES IN THIS RELEASE:

-=============================

+=========

+CONTENTS:

+=========

 

 * Dependency Changes

+* API Stability

 * JNI Based Applications

 * Bundled APIs

 * Web application reloading and static fields in shared libraries

@@ -32,7 +33,6 @@
 * Enabling SSI and CGI Support

 * Security manager URLs

 * Symlinking static resources

-* Enabling invoker servlet

 * Viewing the Tomcat Change Log

 * Cryptographic software notice

 * When all else fails

@@ -41,17 +41,37 @@
 ===================

 Dependency Changes:

 ===================

-Tomcat 6.0 is designed to run on Java SE 5.0 and later.

+Tomcat 7.0 is designed to run on Java SE 6 and later.

 

-In addition, Tomcat 6.0 uses the Eclipse JDT Java compiler for compiling

-JSP pages.  This means you no longer need to have the complete

+In addition, Tomcat 7.0 uses the Eclipse JDT Java compiler for

+compiling JSP pages.  This means you no longer need to have the complete

 Java Development Kit (JDK) to run Tomcat, but a Java Runtime Environment

-(JRE) is sufficient.  The Eclipse JDT Java compiler is bundled with the 

+(JRE) is sufficient.  The Eclipse JDT Java compiler is bundled with the

 binary Tomcat distributions.  Tomcat can also be configured to use the

-compiler from the JDK to compile JSPs, or any other Java compiler supported 

+compiler from the JDK to compile JSPs, or any other Java compiler supported

 by Apache Ant.

 

 

+==============

+API Stability:

+==============

+The public interfaces for the following classes are fixed and will not be

+changed at all during the remaining lifetime of the 7.x series:

+- javax/**/*

+

+The public interfaces for the following classes may be added to in order to

+resolve bugs and/or add new features. No existing interface will be removed or

+changed although it may be deprecated.

+- org/apache/catalina/*

+- org/apache/catalina/comet/*

+

+Note: As Tomcat 7 matures, the above list will be added to. The list is not

+      considered complete at this time.

+

+The remaining classes are considered part of the Tomcat internals and may change

+without notice between point releases.

+

+

 =======================

 JNI Based Applications:

 =======================

@@ -76,28 +96,33 @@
 =============

 Bundled APIs:

 =============

-A standard installation of Tomcat 6.0 makes all of the following APIs available

+A standard installation of Tomcat 7.0 makes all of the following APIs available

 for use by web applications (by placing them in "lib"):

 * annotations-api.jar (Annotations package)

 * catalina.jar (Tomcat Catalina implementation)

 * catalina-ant.jar (Tomcat Catalina Ant tasks)

 * catalina-ha.jar (High availability package)

 * catalina-tribes.jar (Group communication)

-* ecj-4.3.1.jar (Eclipse JDT Java compiler)

-* el-api.jar (EL 2.1 API)

+* ecj-4.4.2.jar (Eclipse JDT Java compiler)

+* el-api.jar (EL 2.2 API)

 * jasper.jar (Jasper 2 Compiler and Runtime)

 * jasper-el.jar (Jasper 2 EL implementation)

-* jsp-api.jar (JSP 2.1 API)

-* servlet-api.jar (Servlet 2.5 API)

+* jsp-api.jar (JSP 2.2 API)

+* servlet-api.jar (Servlet 3.0 API)

+* tomcat7-websocket.jar (WebSocket 1.1 implementation)

+* tomcat-api.jar (Interfaces shared by Catalina and Jasper)

 * tomcat-coyote.jar (Tomcat connectors and utility classes)

 * tomcat-dbcp.jar (package renamed database connection pool based on Commons DBCP)

+* tomcat-jdbc.jar (Tomcat's database connection pooling solution)

+* tomcat-util.jar (Various utilities)

+* websocket-api.jar (WebSocket 1.1 API)

 

 You can make additional APIs available to all of your web applications by

 putting unpacked classes into a "classes" directory (not created by default),

 or by placing them in JAR files in the "lib" directory.

 

 To override the XML parser implementation or interfaces, use the endorsed

-mechanism of the JVM. The default configuration defines JARs located in 

+mechanism of the JVM. The default configuration defines JARs located in

 "endorsed" as endorsed.

 

 

@@ -164,59 +189,32 @@
 the check.

 

 

-=========================

-Enabling invoker servlet:

-=========================

-Starting with Tomcat 4.1.12, the invoker servlet is no longer available by

-default in all webapps. Enabling it for all webapps is possible by editing

-$CATALINA_HOME/conf/web.xml to uncomment the "/servlet/*" servlet-mapping

-definition.

-

-Using the invoker servlet in a production environment is not recommended and

-is unsupported.  More details are available on the Tomcat FAQ at

-http://tomcat.apache.org/faq/misc.html#invoker.

-

-

 ==============================

 Viewing the Tomcat Change Log:

 ==============================

 See changelog.html in this directory.

 

 

-============================================

-Multi-byte charset handling bug in Java 1.5:

-============================================

-Public versions of Sun/Oracle Java 1.5 are known to have a nasty bug in

-implementation of Charset.decode() method for certain character sets.

-

-For details, test and a list of affected character sets see:

-

-http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6196991

-https://issues.apache.org/bugzilla/show_bug.cgi?id=52579

-

-The UTF-8 charset is not affected by this issue.

-

-

 =============================

 Cryptographic software notice

 =============================

-This distribution includes cryptographic software.  The country in 

-which you currently reside may have restrictions on the import, 

-possession, use, and/or re-export to another country, of 

-encryption software.  BEFORE using any encryption software, please 

+This distribution includes cryptographic software.  The country in

+which you currently reside may have restrictions on the import,

+possession, use, and/or re-export to another country, of

+encryption software.  BEFORE using any encryption software, please

 check your country's laws, regulations and policies concerning the

-import, possession, or use, and re-export of encryption software, to 

+import, possession, or use, and re-export of encryption software, to

 see if this is permitted.  See <http://www.wassenaar.org/> for more

 information.

 

 The U.S. Government Department of Commerce, Bureau of Industry and

-Security (BIS), has classified this software as Export Commodity 

+Security (BIS), has classified this software as Export Commodity

 Control Number (ECCN) 5D002.C.1, which includes information security

 software using or performing cryptographic functions with asymmetric

 algorithms.  The form and manner of this Apache Software Foundation

 distribution makes it eligible for export under the License Exception

-ENC Technology Software Unrestricted (TSU) exception (see the BIS 

-Export Administration Regulations, Section 740.13) for both object 

+ENC Technology Software Unrestricted (TSU) exception (see the BIS

+Export Administration Regulations, Section 740.13) for both object

 code and source code.

 

 The following provides more details on the included cryptographic

diff --git a/tomcat-uid/webapps/ROOT/WEB-INF/web.xml b/tomcat-uid/webapps/ROOT/WEB-INF/web.xml
index 2cb7c2c..fae48dd 100644
--- a/tomcat-uid/webapps/ROOT/WEB-INF/web.xml
+++ b/tomcat-uid/webapps/ROOT/WEB-INF/web.xml
@@ -17,9 +17,11 @@
 -->

 

 <web-app xmlns="http://java.sun.com/xml/ns/javaee"

-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

-   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

-   version="2.5">

+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

+                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

+  version="3.0"

+  metadata-complete="true">

 

   <display-name>Welcome to Tomcat</display-name>

   <description>

diff --git a/tomcat-uid/webapps/ROOT/asf-logo-wide.gif b/tomcat-uid/webapps/ROOT/asf-logo-wide.gif
deleted file mode 100644
index b240328..0000000
--- a/tomcat-uid/webapps/ROOT/asf-logo-wide.gif
+++ /dev/null
Binary files differ
diff --git a/tomcat-uid/webapps/ROOT/asf-logo-wide.svg b/tomcat-uid/webapps/ROOT/asf-logo-wide.svg
new file mode 100644
index 0000000..35d28f7
--- /dev/null
+++ b/tomcat-uid/webapps/ROOT/asf-logo-wide.svg
@@ -0,0 +1,279 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->

+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

+<svg version="1.1" id="Apache_Logo_Horizontal" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"

+	 x="0px" y="0px" viewBox="0 0 9835 1713.9" enable-background="new 0 0 9835 1713.9" xml:space="preserve">

+<path fill="#6D6E71" d="M1069.6,296.4v92.2h-11.8v-92.2h-33.7V285h79.4v11.4H1069.6z"/>

+<path fill="#6D6E71" d="M1234.8,388.5V343h-62.4v45.6h-11.8V285h11.8v46.8h62.4V285h11.8v103.6H1234.8z"/>

+<path fill="#6D6E71" d="M1329.2,296.4v34h52.2v11.4h-52.2v35.5h60.4v11.3h-72.2V285h70.3v11.4H1329.2z"/>

+<path fill="#D22128" d="M933.7,1098.5l247.5-591.6h47.5l247.5,591.6h-62.5l-76.7-185h-265.8l-75.8,185H933.7z M1205.4,575.2

+	l-121.7,292.5h240L1205.4,575.2z"/>

+<path fill="#D22128" d="M1540.1,1098.5V506.9h245c101.7,0,175,94.2,175,185.8c0,96.7-68.3,187.5-170,187.5h-192.5v218.3H1540.1z

+	 M1597.6,828.5h189.1c70,0,115-64.2,115-135.8c0-74.2-55-134.2-120-134.2h-184.1V828.5z"/>

+<path fill="#D22128" d="M1927.7,1098.5l247.5-591.6h47.5l247.5,591.6h-62.5l-76.7-185h-265.8l-75.8,185H1927.7z M2199.3,575.2

+	l-121.7,292.5h240L2199.3,575.2z"/>

+<path fill="#D22128" d="M2750.1,503.6c105,0,181.6,53.3,218.3,129.2l-46.7,28.3c-37.5-78.3-110.8-105-175-105

+	c-141.7,0-219.1,126.7-219.1,245.8c0,130.8,95.8,249.1,221.6,249.1c66.7,0,145-33.3,182.5-110l48.3,25

+	c-38.3,88.3-143.3,137.5-234.1,137.5c-162.5,0-276.6-155-276.6-305C2469.3,656,2571.7,503.6,2750.1,503.6z"/>

+<path fill="#D22128" d="M3528,506.9v591.6h-58.3V821.9h-350.8v276.6h-57.5V506.9h57.5v263.3h350.8V506.9H3528z"/>

+<path fill="#D22128" d="M4059.1,1046.8v51.7h-397.5V506.9h390v51.7h-332.5v213.3h290V821h-290v225.8H4059.1z"/>

+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-4229.6655" y1="-4143.6401" x2="-3987.5886" y2="-3860.573" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 6189.0356 -1936.8361)">

+	<stop  offset="0" style="stop-color:#F69923"/>

+	<stop  offset="0.3123" style="stop-color:#F79A23"/>

+	<stop  offset="0.8383" style="stop-color:#E97826"/>

+</linearGradient>

+<path fill="url(#SVGID_1_)" d="M729.5,8.1C702.6,24,657.9,68.9,604.6,134l49,92.5c34.4-49.2,69.3-93.4,104.5-131.2

+	c2.7-3,4.1-4.4,4.1-4.4c-1.4,1.5-2.7,3-4.1,4.4c-11.4,12.6-46,52.9-98.2,133.1c50.2-2.5,127.5-12.8,190.4-23.5

+	c18.7-105-18.4-153-18.4-153S784.8-24.6,729.5,8.1z"/>

+<path fill="none" d="M646.5,535.5c0.4-0.1,0.7-0.1,1.1-0.2l-7.1,0.8c-0.4,0.2-0.8,0.4-1.2,0.6C641.7,536.3,644.1,535.9,646.5,535.5z

+	"/>

+<path fill="none" d="M596.5,701.1c-4,0.9-8.1,1.6-12.3,2.2C588.4,702.7,592.5,702,596.5,701.1z"/>

+<path fill="none" d="M256.7,1072.7c0.5-1.4,1-2.8,1.6-4.1c10.8-28.5,21.5-56.1,32-83.1c11.9-30.2,23.6-59.5,35.2-87.9

+	c12.2-29.9,24.3-58.8,36.1-86.8c12.5-29.3,24.7-57.5,36.8-84.7c9.8-22.1,19.5-43.5,29-64.2c3.2-6.9,6.3-13.7,9.5-20.5

+	c6.2-13.4,12.4-26.6,18.5-39.4c5.6-11.9,11.2-23.5,16.8-34.9c1.8-3.8,3.7-7.6,5.5-11.3c0.3-0.6,0.6-1.2,0.9-1.8l-6,0.7l-4.8-9.4

+	c-0.5,0.9-0.9,1.8-1.4,2.7c-8.6,17.1-17.1,34.3-25.6,51.7c-4.9,10-9.7,20.1-14.6,30.3c-13.4,28.1-26.5,56.5-39.5,85

+	c-13.1,28.8-25.9,57.8-38.5,86.9c-12.4,28.5-24.5,57.1-36.3,85.5c-11.8,28.4-23.4,56.8-34.7,84.9c-11.8,29.4-23.3,58.5-34.4,87.3

+	c-2.5,6.5-5,13-7.5,19.4c-8.9,23.2-17.6,46.2-26.1,68.8l7.5,14.9l6.7-0.7c0.2-0.7,0.5-1.4,0.7-2

+	C235.2,1129.9,246,1100.9,256.7,1072.7z"/>

+<path fill="none" d="M581.2,703.8L581.2,703.8C581.2,703.8,581.2,703.8,581.2,703.8C581.2,703.8,581.2,703.8,581.2,703.8z"/>

+<path fill="#BE202E" d="M564.9,784.6c-6.3,1.1-12.7,2.2-19.3,3.4c0,0-0.1,0-0.1,0.1c3.3-0.5,6.6-1,9.9-1.6

+	C558.6,785.9,561.8,785.3,564.9,784.6z"/>

+<path opacity="0.35" fill="#BE202E" d="M564.9,784.6c-6.3,1.1-12.7,2.2-19.3,3.4c0,0-0.1,0-0.1,0.1c3.3-0.5,6.6-1,9.9-1.6

+	C558.6,785.9,561.8,785.3,564.9,784.6z"/>

+<path fill="#BE202E" d="M581.3,703.7C581.3,703.8,581.3,703.8,581.3,703.7c-0.1,0-0.1,0.1-0.1,0.1c1-0.1,2.1-0.3,3.1-0.5

+	c4.2-0.6,8.3-1.3,12.3-2.2C591.6,702,586.5,702.9,581.3,703.7L581.3,703.7L581.3,703.7z"/>

+<path opacity="0.35" fill="#BE202E" d="M581.3,703.7C581.3,703.8,581.3,703.8,581.3,703.7c-0.1,0-0.1,0.1-0.1,0.1

+	c1-0.1,2.1-0.3,3.1-0.5c4.2-0.6,8.3-1.3,12.3-2.2C591.6,702,586.5,702.9,581.3,703.7L581.3,703.7L581.3,703.7z"/>

+<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-6021.2769" y1="-4174.8843" x2="-4294.1865" y2="-4174.8843" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 6189.0356 -1936.8361)">

+	<stop  offset="0.3233" style="stop-color:#9E2064"/>

+	<stop  offset="0.6302" style="stop-color:#C92037"/>

+	<stop  offset="0.7514" style="stop-color:#CD2335"/>

+	<stop  offset="1" style="stop-color:#E97826"/>

+</linearGradient>

+<path fill="url(#SVGID_2_)" d="M509.2,465.4c14.9-27.8,30-55,45.2-81.5c15.8-27.5,31.8-54.2,48-79.9c1-1.5,1.9-3.1,2.9-4.6

+	c16-25.3,32.1-49.6,48.4-72.9l-49-92.5c-3.7,4.5-7.4,9.1-11.1,13.7c-14.1,17.6-28.8,36.5-43.8,56.6c-17,22.6-34.4,46.8-52.1,72.2

+	c-16.3,23.4-32.9,48-49.5,73.4c-14.1,21.6-28.3,43.9-42.4,66.7c-0.5,0.8-1,1.7-1.6,2.6l63.7,125.9

+	C481.4,518.1,495.2,491.5,509.2,465.4z"/>

+<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="-5812.7939" y1="-4001.6594" x2="-4783.6157" y2="-4001.6594" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 6189.0356 -1936.8361)">

+	<stop  offset="0" style="stop-color:#282662"/>

+	<stop  offset="9.548390e-02" style="stop-color:#662E8D"/>

+	<stop  offset="0.7882" style="stop-color:#9F2064"/>

+	<stop  offset="0.9487" style="stop-color:#CD2032"/>

+</linearGradient>

+<path fill="url(#SVGID_3_)" d="M218.8,1174.8c-8.4,23.2-16.9,46.8-25.4,70.9c-0.1,0.4-0.2,0.7-0.4,1.1c-1.2,3.4-2.4,6.8-3.6,10.2

+	c-5.7,16.3-10.7,30.9-22.1,64.2c18.8,8.6,33.9,31.1,48.1,56.7c-1.5-26.5-12.5-51.4-33.3-70.7c92.6,4.2,172.4-19.2,213.6-86.9

+	c3.7-6,7.1-12.4,10.1-19.1c-18.8,23.8-42,33.8-85.7,31.4c-0.1,0-0.2,0.1-0.3,0.1c0.1,0,0.2-0.1,0.3-0.1

+	c64.4-28.8,96.7-56.5,125.3-102.3c6.8-10.9,13.3-22.7,20.1-35.9c-56.3,57.8-121.6,74.3-190.3,61.8l-51.6,5.7

+	C222,1166.1,220.4,1170.4,218.8,1174.8z"/>

+<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="-5924.2744" y1="-4190.9775" x2="-4197.1841" y2="-4190.9775" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 6189.0356 -1936.8361)">

+	<stop  offset="0.3233" style="stop-color:#9E2064"/>

+	<stop  offset="0.6302" style="stop-color:#C92037"/>

+	<stop  offset="0.7514" style="stop-color:#CD2335"/>

+	<stop  offset="1" style="stop-color:#E97826"/>

+</linearGradient>

+<path fill="url(#SVGID_4_)" d="M242.9,1059.3c11.1-28.8,22.6-57.9,34.4-87.3c11.3-28.1,22.9-56.5,34.7-84.9

+	c11.8-28.5,24-57,36.3-85.5c12.6-29,25.4-58,38.5-86.9c12.9-28.5,26.1-56.9,39.5-85c4.8-10.1,9.7-20.2,14.6-30.3

+	c8.4-17.4,17-34.6,25.6-51.7c0.5-0.9,0.9-1.8,1.4-2.7l-63.7-125.9c-1,1.7-2.1,3.4-3.1,5.1c-14.9,24.3-29.6,49.1-44.1,74.4

+	c-14.7,25.6-29.1,51.7-43.1,78.1c-11.9,22.3-23.5,44.8-34.7,67.5c-2.3,4.6-4.5,9.2-6.7,13.7c-13.9,28.6-26.4,56.2-37.8,82.8

+	c-12.9,30.1-24.2,58.8-34.1,86.1c-6.5,17.9-12.5,35.2-17.9,51.9c-4.5,14.2-8.7,28.4-12.7,42.6c-9.5,33.4-17.7,66.7-24.5,99.8

+	l64,126.4c8.5-22.6,17.1-45.6,26.1-68.8C237.9,1072.3,240.4,1065.8,242.9,1059.3z"/>

+<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="-5798.3159" y1="-4167.6108" x2="-4890.6782" y2="-4167.6108" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 6189.0356 -1936.8361)">

+	<stop  offset="0" style="stop-color:#282662"/>

+	<stop  offset="9.548390e-02" style="stop-color:#662E8D"/>

+	<stop  offset="0.7882" style="stop-color:#9F2064"/>

+	<stop  offset="0.9487" style="stop-color:#CD2032"/>

+</linearGradient>

+<path fill="url(#SVGID_5_)" d="M144.4,1025.6c-8,40.5-13.8,80.8-16.6,120.8c-0.1,1.4-0.2,2.8-0.3,4.2c-20-32-73.5-63.3-73.4-63

+	c38.3,55.5,67.4,110.7,71.7,164.8c-20.5,4.2-48.6-1.9-81.1-13.8c33.9,31.1,59.3,39.7,69.2,42c-31.1,1.9-63.5,23.3-96.1,47.9

+	c47.7-19.5,86.3-27.2,113.9-20.9c-43.8,124-87.7,260.9-131.6,406.2c13.5-4,21.5-13,26-25.3c7.8-26.3,59.8-199,141.2-425.9

+	c2.3-6.5,4.6-12.9,7-19.5c0.7-1.8,1.3-3.6,2-5.4c8.6-23.8,17.5-48.1,26.7-72.9c2.1-5.6,4.2-11.3,6.3-17c0-0.1,0.1-0.2,0.1-0.3

+	l-64-126.4C145,1022.6,144.7,1024.1,144.4,1025.6z"/>

+<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="-5924.2744" y1="-4012.23" x2="-4197.1841" y2="-4012.23" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 6189.0356 -1936.8361)">

+	<stop  offset="0.3233" style="stop-color:#9E2064"/>

+	<stop  offset="0.6302" style="stop-color:#C92037"/>

+	<stop  offset="0.7514" style="stop-color:#CD2335"/>

+	<stop  offset="1" style="stop-color:#E97826"/>

+</linearGradient>

+<path fill="url(#SVGID_6_)" d="M477.7,555.7c-1.8,3.7-3.7,7.5-5.5,11.3c-5.5,11.4-11.1,23-16.8,34.9c-6.1,12.8-12.3,26-18.5,39.4

+	c-3.1,6.8-6.3,13.6-9.5,20.5c-9.5,20.7-19.2,42.1-29,64.2c-12.1,27.2-24.3,55.4-36.8,84.7c-11.9,27.9-23.9,56.8-36.1,86.8

+	c-11.6,28.4-23.3,57.7-35.2,87.9c-10.6,27-21.3,54.6-32,83.1c-0.5,1.4-1,2.8-1.6,4.1c-10.7,28.3-21.5,57.3-32.4,87

+	c-0.2,0.7-0.5,1.4-0.7,2l51.6-5.7c-1-0.2-2-0.3-3.1-0.5c61.6-7.7,143.6-53.7,196.5-110.6c24.4-26.2,46.5-57.1,67-93.3

+	c15.2-26.9,29.6-56.8,43.2-89.8c11.9-28.9,23.3-60.1,34.4-94c-14.2,7.5-30.4,12.9-48.3,16.7c-3.1,0.7-6.3,1.3-9.6,1.9

+	c-3.2,0.6-6.5,1.1-9.9,1.6l0,0l0,0c0,0,0.1,0,0.1-0.1c57.5-22.1,93.7-64.8,120.1-117.1c-15.1,10.3-39.7,23.8-69.2,30.3

+	c-4,0.9-8.1,1.6-12.3,2.2c-1,0.1-2.1,0.3-3.1,0.5l0,0l0,0c0,0,0.1,0,0.1,0c0,0,0,0,0.1,0l0,0c19.9-8.3,36.8-17.7,51.4-28.7

+	c3.1-2.4,6.2-4.8,9.1-7.3c4.5-3.8,8.7-7.9,12.7-12.2c2.6-2.7,5.1-5.5,7.5-8.4c5.7-6.8,11.1-14.2,16.1-22.1c1.5-2.4,3-4.9,4.5-7.5

+	c1.9-3.7,3.7-7.3,5.5-10.8c8-16.1,14.5-30.5,19.6-43.2c2.6-6.3,4.8-12.2,6.7-17.6c0.8-2.2,1.5-4.3,2.2-6.3c2-6.1,3.7-11.5,5-16.2

+	c2-7.1,3.1-12.7,3.8-16.8l0,0l0,0c-1.9,1.5-4.2,3.1-6.7,4.6c-17.3,10.4-47.1,19.8-71.1,24.2l47.3-5.2l-47.3,5.2

+	c-0.4,0.1-0.7,0.1-1.1,0.2c-2.4,0.4-4.8,0.8-7.2,1.2c0.4-0.2,0.8-0.4,1.2-0.6l-161.9,17.7C478.3,554.5,478,555.1,477.7,555.7z"/>

+<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="-6031.4116" y1="-4021.106" x2="-4304.3213" y2="-4021.106" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 6189.0356 -1936.8361)">

+	<stop  offset="0.3233" style="stop-color:#9E2064"/>

+	<stop  offset="0.6302" style="stop-color:#C92037"/>

+	<stop  offset="0.7514" style="stop-color:#CD2335"/>

+	<stop  offset="1" style="stop-color:#E97826"/>

+</linearGradient>

+<path fill="url(#SVGID_7_)" d="M660,228.4c-14.4,22.1-30.1,47.2-47.1,75.6c-0.9,1.5-1.8,3-2.7,4.5c-14.6,24.6-30.1,51.6-46.4,81.2

+	c-14.1,25.5-28.8,52.9-44,82.4c-13.3,25.7-27,52.9-41.1,81.7l161.9-17.7c47.2-21.7,68.3-41.3,88.7-69.7c5.4-7.8,10.9-16,16.3-24.5

+	c16.6-26,32.9-54.6,47.5-83c14.1-27.4,26.5-54.7,36-79.2c6.1-15.6,10.9-30.1,14.3-42.8c2.9-11.2,5.3-21.9,7.1-32.1

+	C787.5,215.6,710.2,225.9,660,228.4z"/>

+<path fill="#BE202E" d="M555.4,786.4c-3.2,0.6-6.5,1.1-9.9,1.6l0,0C548.8,787.5,552.1,787,555.4,786.4z"/>

+<path opacity="0.35" fill="#BE202E" d="M555.4,786.4c-3.2,0.6-6.5,1.1-9.9,1.6l0,0C548.8,787.5,552.1,787,555.4,786.4z"/>

+<linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="-5924.2744" y1="-3959.0669" x2="-4197.1841" y2="-3959.0669" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 6189.0356 -1936.8361)">

+	<stop  offset="0.3233" style="stop-color:#9E2064"/>

+	<stop  offset="0.6302" style="stop-color:#C92037"/>

+	<stop  offset="0.7514" style="stop-color:#CD2335"/>

+	<stop  offset="1" style="stop-color:#E97826"/>

+</linearGradient>

+<path fill="url(#SVGID_8_)" d="M555.4,786.4c-3.2,0.6-6.5,1.1-9.9,1.6l0,0C548.8,787.5,552.1,787,555.4,786.4z"/>

+<path fill="#BE202E" d="M581.2,703.8c1-0.1,2.1-0.3,3.1-0.5C583.2,703.5,582.2,703.7,581.2,703.8L581.2,703.8z"/>

+<path opacity="0.35" fill="#BE202E" d="M581.2,703.8c1-0.1,2.1-0.3,3.1-0.5C583.2,703.5,582.2,703.7,581.2,703.8L581.2,703.8z"/>

+<linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="-5924.2744" y1="-3965.1499" x2="-4197.1841" y2="-3965.1499" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 6189.0356 -1936.8361)">

+	<stop  offset="0.3233" style="stop-color:#9E2064"/>

+	<stop  offset="0.6302" style="stop-color:#C92037"/>

+	<stop  offset="0.7514" style="stop-color:#CD2335"/>

+	<stop  offset="1" style="stop-color:#E97826"/>

+</linearGradient>

+<path fill="url(#SVGID_9_)" d="M581.2,703.8c1-0.1,2.1-0.3,3.1-0.5C583.2,703.5,582.2,703.7,581.2,703.8L581.2,703.8z"/>

+<path fill="#BE202E" d="M581.3,703.8C581.3,703.8,581.3,703.8,581.3,703.8L581.3,703.8L581.3,703.8L581.3,703.8

+	C581.3,703.8,581.3,703.8,581.3,703.8z"/>

+<path opacity="0.35" fill="#BE202E" d="M581.3,703.8C581.3,703.8,581.3,703.8,581.3,703.8L581.3,703.8L581.3,703.8L581.3,703.8

+	C581.3,703.8,581.3,703.8,581.3,703.8z"/>

+<linearGradient id="SVGID_10_" gradientUnits="userSpaceOnUse" x1="-4954.02" y1="-3966.3701" x2="-4572.2764" y2="-3966.3701" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 6189.0356 -1936.8361)">

+	<stop  offset="0.3233" style="stop-color:#9E2064"/>

+	<stop  offset="0.6302" style="stop-color:#C92037"/>

+	<stop  offset="0.7514" style="stop-color:#CD2335"/>

+	<stop  offset="1" style="stop-color:#E97826"/>

+</linearGradient>

+<path fill="url(#SVGID_10_)" d="M581.3,703.8C581.3,703.8,581.3,703.8,581.3,703.8L581.3,703.8L581.3,703.8L581.3,703.8

+	C581.3,703.8,581.3,703.8,581.3,703.8z"/>

+<path fill="#6D6E71" d="M4552.4,508.2c12,3.6,22.6,8.4,31.5,14.5l-10.5,23c-9.2-6.1-19-10.6-29.4-13.6c-10.4-3-20.3-4.5-29.7-4.5

+	c-13.8,0-24.9,2.5-33.2,7.5c-8.3,5-12.4,12-12.4,21.1c0,7.8,2.3,14.2,6.9,19.3c4.6,5.1,10.3,9,17.3,11.9c6.9,2.8,16.4,6.1,28.5,9.8

+	c14.6,4.7,26.4,9.1,35.3,13.1c8.9,4.1,16.5,10.1,22.9,18.1c6.3,8,9.5,18.5,9.5,31.5c0,11.9-3.2,22.2-9.6,31.1

+	c-6.4,8.9-15.5,15.7-27.3,20.6c-11.8,4.9-25.3,7.3-40.6,7.3c-15.3,0-30.2-3-44.7-8.9c-14.4-5.9-26.8-13.9-37.2-23.8l10.9-22

+	c9.8,9.6,21,17,33.8,22.3c12.8,5.3,25.3,7.9,37.4,7.9c15.5,0,27.8-3,36.8-9c9-6,13.4-14.1,13.4-24.3c0-8-2.3-14.5-7-19.7

+	c-4.7-5.2-10.5-9.2-17.4-12.1c-6.9-2.9-16.4-6.1-28.5-9.7c-14.4-4.3-26.2-8.4-35.2-12.4c-9-4-16.6-9.9-22.9-17.8

+	c-6.2-7.9-9.3-18.2-9.3-31.1c0-11.1,3.1-20.8,9.2-29.1c6.1-8.4,14.8-14.8,26.1-19.4c11.3-4.6,24.2-6.9,38.9-6.9

+	C4528.2,502.8,4540.3,504.6,4552.4,508.2z"/>

+<path fill="#6D6E71" d="M4870.3,517.6c17.1,9.6,30.7,22.6,40.7,39.1c10,16.4,15,34.5,15,54.2c0,19.8-5,38-15,54.5

+	c-10,16.5-23.6,29.6-40.7,39.3c-17.1,9.7-35.9,14.5-56.2,14.5c-20.6,0-39.5-4.8-56.6-14.5c-17.1-9.7-30.7-22.8-40.7-39.3

+	c-10-16.5-15-34.7-15-54.5c0-19.8,5-38,15-54.5c10-16.5,23.6-29.5,40.7-39c17.1-9.5,36-14.3,56.6-14.3

+	C4834.4,503.1,4853.2,507.9,4870.3,517.6z M4770.5,537.8c-13.4,7.6-24,17.8-32,30.6c-8,12.9-12,27-12,42.4c0,15.5,4,29.8,12,42.7

+	c8,13,18.6,23.2,32,30.7c13.3,7.5,27.9,11.3,43.6,11.3c15.7,0,30.2-3.8,43.4-11.3c13.2-7.5,23.7-17.8,31.6-30.7

+	c7.9-12.9,11.8-27.2,11.8-42.7s-3.9-29.7-11.8-42.5c-7.9-12.8-18.4-23-31.7-30.6c-13.3-7.6-27.7-11.4-43.3-11.4

+	C4798.4,526.4,4783.8,530.2,4770.5,537.8z"/>

+<path fill="#6D6E71" d="M5080.3,527.3v75.3h100.1v23.6h-100.1V718h-24.5V503.7h136.1v23.6H5080.3z"/>

+<path fill="#6D6E71" d="M5390.7,527.3V718h-24.5V527.3h-69.6v-23.6h164.2v23.6H5390.7z"/>

+<path fill="#6D6E71" d="M5777.5,718l-57.8-180.5L5661.1,718h-25l-71.7-214.3h26.3l58.9,185.9l58.1-185.6l24.5-0.3l58.7,185.9

+	l58.1-185.9h25.4L5802.6,718H5777.5z"/>

+<path fill="#6D6E71" d="M5996.7,663.9l-23.9,54.1h-26l96.1-214.3h25.4l95.8,214.3h-26.6l-23.9-54.1H5996.7z M6054.9,531.7

+	l-47.7,108.6h96.1L6054.9,531.7z"/>

+<path fill="#6D6E71" d="M6377,649.7c-6.1,0.4-10.9,0.6-14.3,0.6h-56.9V718h-24.5V503.7h81.4c26.7,0,47.4,6.3,62.2,18.8

+	c14.8,12.6,22.2,30.3,22.2,53.2c0,17.5-4.1,32.2-12.4,44c-8.3,11.8-20.1,20.3-35.6,25.5l50.1,72.8h-27.8L6377,649.7z M6407.7,614

+	c10.5-8.6,15.8-21.1,15.8-37.7c0-16.1-5.3-28.3-15.8-36.6c-10.5-8.3-25.5-12.4-45.1-12.4h-56.9v99.5h56.9

+	C6382.2,626.9,6397.2,622.6,6407.7,614z"/>

+<path fill="#6D6E71" d="M6608.2,527.3v70.4h108v23.6h-108v73.4h124.9V718h-149.4V503.7H6729v23.6H6608.2z"/>

+<path fill="#6D6E71" d="M7074.8,527.3v75.3h100.1v23.6h-100.1V718h-24.5V503.7h136.1v23.6H7074.8z"/>

+<path fill="#6D6E71" d="M7457.7,517.6c17.1,9.6,30.7,22.6,40.7,39.1c10,16.4,15,34.5,15,54.2c0,19.8-5,38-15,54.5

+	c-10,16.5-23.6,29.6-40.7,39.3c-17.1,9.7-35.9,14.5-56.2,14.5c-20.6,0-39.5-4.8-56.6-14.5c-17.1-9.7-30.7-22.8-40.7-39.3

+	c-10-16.5-15-34.7-15-54.5c0-19.8,5-38,15-54.5c10-16.5,23.6-29.5,40.7-39c17.1-9.5,36-14.3,56.6-14.3

+	C7421.8,503.1,7440.5,507.9,7457.7,517.6z M7357.9,537.8c-13.4,7.6-24,17.8-32,30.6c-8,12.9-12,27-12,42.4c0,15.5,4,29.8,12,42.7

+	c8,13,18.6,23.2,32,30.7c13.3,7.5,27.9,11.3,43.6,11.3c15.7,0,30.2-3.8,43.4-11.3c13.2-7.5,23.7-17.8,31.6-30.7

+	c7.9-12.9,11.8-27.2,11.8-42.7s-3.9-29.7-11.8-42.5c-7.9-12.8-18.4-23-31.7-30.6c-13.3-7.6-27.7-11.4-43.3-11.4

+	C7385.7,526.4,7371.2,530.2,7357.9,537.8z"/>

+<path fill="#6D6E71" d="M7794.8,695.5c-15.9,15.8-37.9,23.7-65.9,23.7c-28.2,0-50.3-7.9-66.3-23.7c-16-15.8-24-37.7-24-65.7V503.7

+	h24.5v126.1c0,20.6,5.9,36.7,17.6,48.3c11.8,11.6,27.8,17.4,48.1,17.4c20.4,0,36.4-5.7,48-17.3c11.6-11.5,17.3-27.7,17.3-48.5V503.7

+	h24.5v126.1C7818.7,657.8,7810.7,679.7,7794.8,695.5z"/>

+<path fill="#6D6E71" d="M8115.1,718l-128.5-172v172h-24.5V503.7h25.4L8116,676V503.7h24.2V718H8115.1z"/>

+<path fill="#6D6E71" d="M8429.3,517.9c16.7,9.4,29.9,22.3,39.6,38.6c9.7,16.3,14.6,34.4,14.6,54.5s-4.9,38.2-14.6,54.5

+	c-9.7,16.3-23,29.2-40,38.6c-16.9,9.4-35.8,14-56.5,14h-85.8V503.7h86.7C8394,503.7,8412.6,508.4,8429.3,517.9z M8311.2,694.7h62.5

+	c15.7,0,30.1-3.6,43-10.8c12.9-7.2,23.2-17.2,30.7-30c7.5-12.7,11.3-27,11.3-42.7c0-15.7-3.8-30-11.5-42.7

+	c-7.7-12.7-18-22.7-31.1-30.1c-13.1-7.4-27.5-11.1-43.3-11.1h-61.6V694.7z"/>

+<path fill="#6D6E71" d="M8622.8,663.9l-23.9,54.1h-26l96.1-214.3h25.4l95.8,214.3h-26.6l-23.9-54.1H8622.8z M8681,531.7l-47.7,108.6

+	h96.1L8681,531.7z"/>

+<path fill="#6D6E71" d="M8950.8,527.3V718h-24.5V527.3h-69.6v-23.6h164.2v23.6H8950.8z"/>

+<path fill="#6D6E71" d="M9138.9,718V503.7h24.5V718H9138.9z"/>

+<path fill="#6D6E71" d="M9462.2,517.6c17.1,9.6,30.7,22.6,40.7,39.1c10,16.4,15,34.5,15,54.2c0,19.8-5,38-15,54.5

+	c-10,16.5-23.6,29.6-40.7,39.3c-17.1,9.7-35.9,14.5-56.2,14.5c-20.6,0-39.5-4.8-56.6-14.5c-17.1-9.7-30.7-22.8-40.7-39.3

+	c-10-16.5-15-34.7-15-54.5c0-19.8,5-38,15-54.5c10-16.5,23.6-29.5,40.7-39c17.1-9.5,36-14.3,56.6-14.3

+	C9426.4,503.1,9445.1,507.9,9462.2,517.6z M9362.4,537.8c-13.4,7.6-24,17.8-32,30.6c-8,12.9-12,27-12,42.4c0,15.5,4,29.8,12,42.7

+	c8,13,18.6,23.2,32,30.7c13.3,7.5,27.9,11.3,43.6,11.3c15.7,0,30.2-3.8,43.4-11.3c13.2-7.5,23.7-17.8,31.6-30.7

+	c7.9-12.9,11.8-27.2,11.8-42.7s-3.9-29.7-11.8-42.5c-7.9-12.8-18.4-23-31.7-30.6c-13.3-7.6-27.7-11.4-43.3-11.4

+	C9390.3,526.4,9375.8,530.2,9362.4,537.8z"/>

+<path fill="#6D6E71" d="M9800.8,718l-128.5-172v172h-24.5V503.7h25.4L9801.7,676V503.7h24.2V718H9800.8z"/>

+<path fill="#6D6E71" d="M4204.9,500.9c9,9,13.5,19.9,13.5,32.6c0,12.7-4.5,23.6-13.5,32.7c-9,9.1-20,13.7-32.8,13.7

+	c-12.9,0-23.8-4.5-32.7-13.5c-8.9-9-13.4-19.9-13.4-32.6c0-12.7,4.5-23.6,13.5-32.7c9-9.1,19.9-13.7,32.7-13.7

+	C4185,487.4,4195.9,491.9,4204.9,500.9z M4201,562.4c7.9-8,11.8-17.6,11.8-28.8c0-11.2-3.9-20.7-11.7-28.6

+	c-7.8-7.9-17.4-11.9-28.7-11.9c-11.3,0-20.9,4-28.8,11.9c-7.8,8-11.8,17.6-11.8,28.8c0,11.2,3.9,20.8,11.6,28.7

+	c7.8,7.9,17.3,11.9,28.6,11.9S4193.1,570.4,4201,562.4z M4194.5,524.7c0,8.3-3.6,13.5-10.9,15.6l13.3,18h-10.7l-12-16.7h-11v16.7

+	h-8.7v-50h18.8c7.6,0,13,1.3,16.3,3.9C4192.9,514.8,4194.5,519,4194.5,524.7z M4183.4,531.7c1.7-1.4,2.6-3.8,2.6-7.1

+	c0-3.3-0.9-5.6-2.7-6.8c-1.8-1.3-4.9-1.9-9.5-1.9h-10.6v18h10.4C4178.4,533.9,4181.6,533.2,4183.4,531.7z"/>

+<path fill="#6D6E71" d="M4540.6,918.2c21.1,0,37.7,6.1,49.6,18.4c11.9,12.3,17.9,29.2,17.9,50.8V1097h-26.3V994.4

+	c0-15.7-4.4-28-13.3-36.8s-21.2-13.2-36.9-13.2c-18.7,0.2-33.3,6.3-44,18.2c-10.7,11.9-16,27.5-16,46.9v87.4h-26.3V846.6h26.3V959

+	C4483.1,932.2,4506.2,918.6,4540.6,918.2z"/>

+<path fill="#6D6E71" d="M4823.7,1063.6l7.4,21.3c-12.8,8.8-26.2,13.3-40.2,13.5c-13.7,0-24.7-4.2-32.9-12.7

+	c-8.2-8.4-12.3-21.1-12.3-38V946.2h-25.6v-21.3h25.6V878h26v46.9l56.3-0.3v21.6h-56.3v96.8c0,19.8,7.9,29.7,23.6,29.7

+	C4804.6,1072.7,4814,1069.6,4823.7,1063.6z"/>

+<path fill="#6D6E71" d="M5027.8,1063.6l7.4,21.3c-12.8,8.8-26.2,13.3-40.2,13.5c-13.7,0-24.7-4.2-32.9-12.7

+	c-8.2-8.4-12.3-21.1-12.3-38V946.2h-25.6v-21.3h25.6V878h26v46.9l56.3-0.3v21.6h-56.3v96.8c0,19.8,7.9,29.7,23.6,29.7

+	C5008.7,1072.7,5018.1,1069.6,5027.8,1063.6z"/>

+<path fill="#6D6E71" d="M5244.1,918.2c25.2,0,45.7,8.4,61.6,25.3c15.9,16.9,23.8,38.6,23.8,65.1c0,26.3-7.8,47.8-23.5,64.5

+	c-15.6,16.6-36,25-61.2,25c-32.2,0-55.2-13-69.2-39.1v103.6h-26.3V919.2h26.3v38.4C5189.5,931.3,5212.4,918.2,5244.1,918.2z

+	 M5239.4,1074c18.4,0,33.6-6.2,45.5-18.6c11.9-12.3,17.9-28.2,17.9-47.6c0-19.1-6-34.9-17.9-47.4c-11.9-12.5-27.1-18.7-45.5-18.7

+	c-18.7,0-34,6.2-45.9,18.6c-11.9,12.4-17.9,28.2-17.9,47.6c0,19.3,6,35.2,17.9,47.6C5205.4,1067.8,5220.7,1074,5239.4,1074z"/>

+<path fill="#6D6E71" d="M5449.9,964.4c4.5,0,8.3,1.7,11.5,5.1c3.2,3.4,4.7,7.5,4.7,12.5s-1.6,9.1-4.7,12.5c-3.2,3.4-7,5.1-11.5,5.1

+	c-4.7,0-8.7-1.7-11.8-5.1c-3.2-3.4-4.7-7.5-4.7-12.5s1.6-9.1,4.7-12.5C5441.2,966.1,5445.2,964.4,5449.9,964.4z M5449.9,1064.6

+	c4.5,0,8.3,1.7,11.5,5c3.2,3.4,4.7,7.5,4.7,12.5c0,4.9-1.6,9.1-4.7,12.5c-3.2,3.4-7,5.1-11.5,5.1c-4.7,0-8.7-1.7-11.8-5.1

+	c-3.2-3.4-4.7-7.5-4.7-12.5c0-4.9,1.6-9.1,4.7-12.5C5441.2,1066.3,5445.2,1064.6,5449.9,1064.6z"/>

+<path fill="#6D6E71" d="M5574.1,1138.1h-22.9l105.3-317.8h23.3L5574.1,1138.1z"/>

+<path fill="#6D6E71" d="M5753.6,1138.1h-22.9l105.3-317.8h23.3L5753.6,1138.1z"/>

+<path fill="#6D6E71" d="M6140.5,1097h-27.3l-52.3-144.4l-52,144.4h-27.3l-66.5-177.8h27.7l52.6,150.5l51.6-150.5h27.7l52.3,150.5

+	l52-150.5h27.3L6140.5,1097z"/>

+<path fill="#6D6E71" d="M6504.6,1097h-27.3L6425,952.6l-52,144.4h-27.3l-66.5-177.8h27.7l52.6,150.5l51.6-150.5h27.7l52.3,150.5

+	l52-150.5h27.3L6504.6,1097z"/>

+<path fill="#6D6E71" d="M6868.6,1097h-27.3L6789,952.6l-52,144.4h-27.3l-66.5-177.8h27.7l52.6,150.5l51.6-150.5h27.7l52.3,150.5

+	l52-150.5h27.3L6868.6,1097z"/>

+<path fill="#6D6E71" d="M7034.6,1064.6c4.5,0,8.3,1.7,11.5,5c3.2,3.4,4.7,7.5,4.7,12.5c0,4.9-1.6,9.1-4.7,12.5

+	c-3.2,3.4-7,5.1-11.5,5.1c-4.7,0-8.7-1.7-11.8-5.1c-3.2-3.4-4.7-7.5-4.7-12.5c0-4.9,1.6-9.1,4.7-12.5

+	C7026,1066.3,7029.9,1064.6,7034.6,1064.6z"/>

+<path fill="#6D6E71" d="M7283,1097v-27.3c-14.2,19.1-35.9,28.7-65.1,28.7c-18,0-32.6-5.1-43.7-15.4c-11.1-10.2-16.7-23.2-16.7-39

+	c0-15.5,5.8-27.8,17.5-37c11.7-9.1,28-13.8,48.9-14h58.4v-10.5c0-13.3-4.1-23.5-12.1-30.7c-8.1-7.2-19.9-10.8-35.4-10.8

+	c-18,0-36.8,6.7-56.4,20.2l-11.1-19.2c12.6-8.3,24.2-14.4,34.9-18.2s23.2-5.7,37.6-5.7c21.8,0,38.6,5.4,50.4,16.2

+	c11.8,10.8,17.8,25.9,18.1,45.2l0.3,117.4H7283z M7222.9,1075.4c15.1,0,27.9-3.5,38.6-10.6c10.7-7.1,17.7-16.8,21.1-29.2v-21.3

+	h-55.3c-30.1,0-45.2,9.6-45.2,28.7c0,9.9,3.7,17.8,11.1,23.6C7200.6,1072.5,7210.5,1075.4,7222.9,1075.4z"/>

+<path fill="#6D6E71" d="M7536.3,918.2c25.2,0,45.7,8.4,61.6,25.3c15.9,16.9,23.8,38.6,23.8,65.1c0,26.3-7.8,47.8-23.5,64.5

+	c-15.6,16.6-36,25-61.2,25c-32.2,0-55.2-13-69.2-39.1v103.6h-26.3V919.2h26.3v38.4C7481.8,931.3,7504.6,918.2,7536.3,918.2z

+	 M7531.6,1074c18.4,0,33.6-6.2,45.5-18.6c11.9-12.3,17.9-28.2,17.9-47.6c0-19.1-6-34.9-17.9-47.4c-11.9-12.5-27.1-18.7-45.5-18.7

+	c-18.7,0-34,6.2-45.9,18.6c-11.9,12.4-17.9,28.2-17.9,47.6c0,19.3,6,35.2,17.9,47.6C7497.6,1067.8,7512.9,1074,7531.6,1074z"/>

+<path fill="#6D6E71" d="M7850.8,1097v-27.3c-14.2,19.1-35.9,28.7-65.1,28.7c-18,0-32.6-5.1-43.7-15.4c-11.1-10.2-16.7-23.2-16.7-39

+	c0-15.5,5.8-27.8,17.5-37c11.7-9.1,28-13.8,48.9-14h58.4v-10.5c0-13.3-4.1-23.5-12.1-30.7c-8.1-7.2-19.9-10.8-35.4-10.8

+	c-18,0-36.8,6.7-56.4,20.2l-11.1-19.2c12.6-8.3,24.2-14.4,34.9-18.2c10.7-3.8,23.2-5.7,37.6-5.7c21.8,0,38.6,5.4,50.4,16.2

+	c11.8,10.8,17.8,25.9,18.1,45.2l0.3,117.4H7850.8z M7790.7,1075.4c15.1,0,27.9-3.5,38.6-10.6c10.7-7.1,17.7-16.8,21.1-29.2v-21.3

+	h-55.3c-30.2,0-45.2,9.6-45.2,28.7c0,9.9,3.7,17.8,11.1,23.6C7768.5,1072.5,7778.4,1075.4,7790.7,1075.4z"/>

+<path fill="#6D6E71" d="M8077.8,918.5c28.6-0.2,51.4,8.5,68.5,26.3l-14.5,18.6c-14.4-13.7-32.1-20.6-53-20.6

+	c-18.4,0-33.6,6.1-45.4,18.2c-11.8,12.1-17.7,27.9-17.7,47.2s5.9,35.2,17.7,47.4c11.8,12.3,26.9,18.4,45.4,18.4

+	c23.8,0,42.2-7.6,55-22.9l15.2,16.2c-16.9,20.5-40.6,30.7-71.2,30.7c-25.9,0-47-8.3-63.4-25c-16.4-16.6-24.6-38.2-24.6-64.8

+	c0-26.3,8.3-47.9,24.8-64.6C8031.1,926.9,8052.2,918.5,8077.8,918.5z"/>

+<path fill="#6D6E71" d="M8366.7,918.2c21.1,0,37.7,6.1,49.6,18.4c11.9,12.3,17.9,29.2,17.9,50.8V1097h-26.3V994.4

+	c0-15.7-4.4-28-13.3-36.8s-21.2-13.2-36.9-13.2c-18.7,0.2-33.3,6.3-44,18.2c-10.7,11.9-16,27.5-16,46.9v87.4h-26.3V846.6h26.3V959

+	C8309.2,932.2,8332.2,918.6,8366.7,918.2z"/>

+<path fill="#6D6E71" d="M8635.6,918.5c28.1-0.2,49.3,8.7,63.6,26.6c14.3,18,20.8,42.4,19.4,73.2h-145.1c2.2,17.3,9.2,31.1,20.9,41.3

+	c11.7,10.2,26.2,15.4,43.5,15.4c22.5,0,40.8-7.4,55-22.3l14.5,15.5c-17.8,19.8-41.6,29.7-71.5,29.7c-26.1,0-47.4-8.3-63.8-25

+	c-16.4-16.6-24.6-38.2-24.6-64.8s8.2-48.1,24.6-64.8C8588.5,926.8,8609.7,918.5,8635.6,918.5z M8573.5,996.8H8695

+	c-0.9-17.1-6.7-30.7-17.4-40.7c-10.7-10-24.7-15-42-15c-16.9,0-30.9,5.1-42.2,15.2C8582.1,966.4,8575.5,979.9,8573.5,996.8z"/>

+<path fill="#6D6E71" d="M8838,1064.6c4.5,0,8.3,1.7,11.5,5c3.1,3.4,4.7,7.5,4.7,12.5c0,4.9-1.6,9.1-4.7,12.5

+	c-3.2,3.4-7,5.1-11.5,5.1c-4.7,0-8.7-1.7-11.8-5.1c-3.2-3.4-4.7-7.5-4.7-12.5c0-4.9,1.6-9.1,4.7-12.5

+	C8829.3,1066.3,8833.3,1064.6,8838,1064.6z"/>

+<path fill="#6D6E71" d="M8983.4,943.5c16.9-16.6,38.5-25,64.8-25c26.3,0,47.9,8.3,64.8,25c16.9,16.6,25.3,38.1,25.3,64.5

+	c0,26.5-8.5,48.2-25.3,64.9c-16.9,16.8-38.5,25.1-64.8,25.1c-26.3,0-47.9-8.4-64.8-25.1c-16.9-16.8-25.3-38.4-25.3-64.9

+	C8958.1,981.6,8966.5,960.1,8983.4,943.5z M9094.1,960.8c-11.9-12.3-27.2-18.4-45.9-18.4c-18.7,0-34,6.1-45.9,18.4

+	c-11.9,12.3-17.9,28.1-17.9,47.4c0,19.6,6,35.5,17.9,47.7c11.9,12.3,27.2,18.4,45.9,18.4c18.7,0,34-6.1,45.9-18.4

+	c11.9-12.3,17.9-28.2,17.9-47.7C9111.9,988.9,9106,973.1,9094.1,960.8z"/>

+<path fill="#6D6E71" d="M9283.3,919.2v39.5c12.2-26.5,33.4-40,63.8-40.5v26.7c-18.4-0.2-33.3,4.9-44.5,15.3

+	c-11.3,10.5-17.6,24.6-19.2,42.3v94.5H9257V919.2H9283.3z"/>

+<path fill="#6D6E71" d="M9610,919.2v159.2c0,25.9-8.2,46.5-24.5,61.7c-16.3,15.3-38,22.9-64.9,22.9c-26.3-0.2-50.6-8.8-72.9-25.7

+	l12.1-20.2c17.8,14.8,37.7,22.4,59.7,22.6c19.4,0,34.9-5.5,46.6-16.5c11.7-11,17.5-25.7,17.5-44.2v-27c-13,24.7-34.9,37.1-65.4,37.1

+	c-23.9,0-43.3-8-58.4-24c-15.1-16-22.6-36.7-22.6-62.1c0-24.7,7.4-45,22.3-60.9c14.8-15.9,34.2-23.9,58-24.1

+	c30.6,0,52.6,12.4,66.1,37.1v-36.1H9610z M9479.2,1049.2c11.4,11.8,25.9,17.7,43.7,17.7s32.3-5.9,43.7-17.7c11.3-11.8,17-26.8,17-45

+	c0-18.4-5.7-33.6-17-45.4c-11.4-11.8-25.9-17.7-43.7-17.7s-32.3,5.9-43.7,17.7c-11.3,11.8-17.1,26.9-17.4,45.4

+	C9462.1,1022.4,9467.9,1037.4,9479.2,1049.2z"/>

+<path fill="#6D6E71" d="M9729.4,1138.1h-22.9l105.3-317.8h23.3L9729.4,1138.1z"/>

+</svg>

diff --git a/tomcat-uid/webapps/ROOT/bg-button.png b/tomcat-uid/webapps/ROOT/bg-button.png
new file mode 100644
index 0000000..b544bbf
--- /dev/null
+++ b/tomcat-uid/webapps/ROOT/bg-button.png
Binary files differ
diff --git a/tomcat-uid/webapps/ROOT/bg-middle.png b/tomcat-uid/webapps/ROOT/bg-middle.png
new file mode 100644
index 0000000..0c95a82
--- /dev/null
+++ b/tomcat-uid/webapps/ROOT/bg-middle.png
Binary files differ
diff --git a/tomcat-uid/webapps/ROOT/bg-nav-item.png b/tomcat-uid/webapps/ROOT/bg-nav-item.png
new file mode 100644
index 0000000..ece86a1
--- /dev/null
+++ b/tomcat-uid/webapps/ROOT/bg-nav-item.png
Binary files differ
diff --git a/tomcat-uid/webapps/ROOT/bg-nav.png b/tomcat-uid/webapps/ROOT/bg-nav.png
new file mode 100644
index 0000000..d44b094
--- /dev/null
+++ b/tomcat-uid/webapps/ROOT/bg-nav.png
Binary files differ
diff --git a/tomcat-uid/webapps/ROOT/bg-upper.png b/tomcat-uid/webapps/ROOT/bg-upper.png
new file mode 100644
index 0000000..7d9ae7b
--- /dev/null
+++ b/tomcat-uid/webapps/ROOT/bg-upper.png
Binary files differ
diff --git a/tomcat-uid/webapps/ROOT/build.xml b/tomcat-uid/webapps/ROOT/build.xml
deleted file mode 100644
index 871daa7..0000000
--- a/tomcat-uid/webapps/ROOT/build.xml
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<!--

-  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.

--->

-<project name="ROOT" default="build-main" basedir=".">

-

-

-  <!-- ===================== Initialize Property Values =================== -->

-

-  <!-- See "build.properties.sample" in the top level directory for all     -->

-  <!-- property values you must customize for successful building!!!        -->

-  <property file="build.properties"/>

-  <property file="../build.properties"/>

-  <property file="../../build.properties"/>

-  <property file="${user.home}/build.properties"/>

-

-  <property name="build.compiler"  value="modern"/>

-  <property name="webapps.build"   value="../build"/>

-  <property name="webapps.dist"    value="../dist"/>

-  <property name="webapp.name"     value="ROOT"/>

-

-

-  <!-- =================== BUILD: Create Directories ====================== -->

-  <target name="build-prepare">

-    <mkdir dir="${webapps.build}"/>

-    <mkdir dir="${webapps.build}/${webapp.name}"/>

-  </target>

-

-

-  <!-- ================ BUILD: Copy Static Files ========================== -->

-  <target name="build-static" depends="build-prepare">

-    <copy todir="${webapps.build}/${webapp.name}">

-      <fileset dir=".">

-        <exclude name="build.*"/>

-      </fileset>

-    </copy>

-  </target>

-

-

-  <!-- ================= BUILD: Compile Server Components ================= -->

-  <target name="build-main" depends="build-static"/>

-

-

-  <!-- ==================== BUILD: Rebuild Everything ===================== -->

-  <target name="all" depends="build-clean,build-main"

-   description="Clean and build ROOT webapp"/>

-

-

-  <!-- ======================= BUILD: Clean Directory ===================== -->

-  <target name="build-clean">

-    <delete dir="${webapps.build}/${webapp.name}"/>

-  </target>

-

-

-  <!-- ======================= DIST: Create Directories =================== -->

-  <target name="dist-prepare">

-    <mkdir dir="${webapps.dist}"/>

-  </target>

-

-

-  <!-- ======================= DIST: Create Distribution Files ============ -->

-  <target name="dist" depends="build-main,dist-prepare"

-   description="Create ROOT webapp binary distribution">

-      <jar   jarfile="${webapps.dist}/${webapp.name}.war"

-             basedir="${webapps.build}/${webapp.name}" includes="**"/>

-  </target>

-

-

-  <!-- ======================= DIST: Clean Directory ====================== -->

-  <target name="dist-clean">

-    <delete dir="${webapps.dist}/${webapp.name}"/>

-  </target>

-

-

-  <!-- ====================== Convenient Synonyms ========================= -->

-  <target name="clean" depends="build-clean,dist-clean"

-   description="Clean build and dist directories"/>

-

-

-</project>

diff --git a/tomcat-uid/webapps/ROOT/index.html b/tomcat-uid/webapps/ROOT/index.html
deleted file mode 100644
index 383f0fa..0000000
--- a/tomcat-uid/webapps/ROOT/index.html
+++ /dev/null
@@ -1,208 +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.

--->

-<?xml version="1.0" encoding="ISO-8859-1"?>

-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

-   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

-    <head>

-    <title>Apache Tomcat</title>

-    <style type="text/css">

-    /*<![CDATA[*/

-      body {

-          color: #000000;

-          background-color: #FFFFFF;

-          font-family: Arial, "Times New Roman", Times, serif;

-          margin: 10px 0px;

-      }

-

-    img {

-       border: none;

-    }

-

-    a:link, a:visited {

-        color: blue

-    }

-

-    th {

-        font-family: Verdana, "Times New Roman", Times, serif;

-        font-size: 110%;

-        font-weight: normal;

-        font-style: italic;

-        background: #D2A41C;

-        text-align: left;

-    }

-

-    td {

-        color: #000000;

-        font-family: Arial, Helvetica, sans-serif;

-    }

-

-    td.menu {

-        background: #FFDC75;

-    }

-

-    .center {

-        text-align: center;

-    }

-

-    .code {

-        color: #000000;

-        font-family: "Courier New", Courier, monospace;

-        font-size: 110%;

-        margin-left: 2.5em;

-    }

-

-     #banner {

-        margin-bottom: 12px;

-     }

-

-     p#congrats {

-         margin-top: 0;

-         font-weight: bold;

-         text-align: center;

-     }

-

-     p#footer {

-         text-align: right;

-         font-size: 80%;

-     }

-     /*]]>*/

-   </style>

-</head>

-

-<body>

-

-<!-- Header -->

-<table id="banner" width="100%">

-    <tr>

-      <td align="left" style="width:130px">

-        <a href="http://tomcat.apache.org/">

-          <img src="tomcat.gif" height="92" width="130" alt="The Mighty Tomcat - MEOW!"/>

-        </a>

-      </td>

-      <td align="left" valign="top"><b>Apache Tomcat</b></td>

-      <td align="right">

-        <a href="http://www.apache.org/">

-          <img src="asf-logo-wide.gif" height="51" width="537" alt="The Apache Software Foundation"/>

-        </a>

-       </td>

-     </tr>

-</table>

-

-<table>

-    <tr>

-

-        <!-- Table of Contents -->

-        <td valign="top">

-            <table width="100%" border="1" cellspacing="0" cellpadding="3">

-                <tr>

-                  <th>Administration</th>

-                </tr>

-                <tr>

-                  <td class="menu">

-                    <a href="/manager/status">Status</a><br/>

-                    <a href="/manager/html">Tomcat&nbsp;Manager</a><br/>

-                    &nbsp;

-                  </td>

-                </tr>

-            </table>

-            <br />

-            <table width="100%" border="1" cellspacing="0" cellpadding="3">

-                <tr>

-                  <th>Documentation</th>

-                </tr>

-                <tr>

-                  <td class="menu">

-                    <a href="RELEASE-NOTES.txt">Release&nbsp;Notes</a><br/>

-                    <a href="/docs/changelog.html">Change&nbsp;Log</a><br/>

-                    <a href="/docs">Tomcat&nbsp;Documentation</a><br/>

-                    &nbsp;

-                    </td>

-                </tr>

-            </table>

-            <br/>

-            <table width="100%" border="1" cellspacing="0" cellpadding="3">

-                <tr>

-                  <th>Tomcat Online</th>

-                </tr>

-                <tr>

-                  <td class="menu">

-                    <a href="http://tomcat.apache.org/">Home&nbsp;Page</a><br/>

-                    <a href="http://tomcat.apache.org/faq/">FAQ</a><br/>

-                    <a href="http://tomcat.apache.org/bugreport.html">Bug&nbsp;Database</a><br/>

-                    <a href="http://mail-archives.apache.org/mod_mbox/tomcat-users/">Users&nbsp;Mailing&nbsp;List</a><br/>

-                    <a href="http://mail-archives.apache.org/mod_mbox/tomcat-dev/">Developers&nbsp;Mailing&nbsp;List</a><br/>

-                    <a href="irc://irc.freenode.net/#tomcat">IRC</a><br/>

-                    &nbsp;

-                  </td>

-                </tr>

-            </table>

-            <br/>

-            <table width="100%" border="1" cellspacing="0" cellpadding="3">

-                <tr>

-                  <th>Miscellaneous</th>

-                </tr>

-                <tr>

-                  <td class="menu">

-                    <a href="/examples/servlets/">Servlets Examples</a><br/>

-                    <a href="/examples/jsp/">JSP Examples</a><br/>

-                    <a href="http://wiki.apache.org/tomcat/Specifications">Specifications</a><br/>

-                        &nbsp;

-                  </td>

-                </tr>

-            </table>

-        </td>

-

-        <td style="width:20px">&nbsp;</td>

-

-        <!-- Body -->

-        <td align="left" valign="top">

-          <p id="congrats">If you're seeing this page via a web browser, it means you've setup Tomcat successfully. Congratulations!</p>

-

-          <p>As you may have guessed by now, this is the default Tomcat home page. It can be found on the local filesystem at:</p>

-          <p class="code">$CATALINA_HOME/webapps/ROOT/index.html</p>

-

-          <p>where "$CATALINA_HOME" is the root of the Tomcat installation directory. If you're seeing this page, and you don't think you should be, then you're either a user who has arrived at new installation of Tomcat, or you're an administrator who hasn't got his/her setup quite right. Providing the latter is the case, please refer to the <a href="/docs">Tomcat Documentation</a> for more detailed setup and administration information than is found in the INSTALL file.</p>

-

-            <p><b>NOTE: For security reasons, using the manager webapp

-            is restricted to users with certain roles such as "manager-gui".</b>

-            Users are defined in <code>$CATALINA_HOME/conf/tomcat-users.xml</code>.</p>

-

-            <p>Included with this release are a host of sample Servlets and JSPs (with associated source code), extensive documentation, and an introductory guide to developing web applications.</p>

-

-            <p>Tomcat mailing lists are available at the Tomcat project web site:</p>

-

-           <ul>

-               <li><b><a href="http://tomcat.apache.org/lists.html#tomcat-users">tomcat-users</a></b> for general questions related to configuring and using Tomcat</li>

-               <li><b><a href="http://tomcat.apache.org/lists.html#tomcat-dev">tomcat-dev</a></b> for developers working on Tomcat</li>

-           </ul>

-

-            <p>Thanks for using Tomcat!</p>

-

-            <p id="footer"><img src="tomcat-power.gif" width="77" height="80" alt="Powered by Tomcat"/><br/>

-            &nbsp;

-

-            Copyright &copy; 1999-2014 Apache Software Foundation<br/>

-            All Rights Reserved

-            </p>

-        </td>

-

-    </tr>

-</table>

-

-</body>

-</html>

diff --git a/tomcat-uid/webapps/ROOT/index.jsp b/tomcat-uid/webapps/ROOT/index.jsp
index 8828d20..d223bb4 100644
--- a/tomcat-uid/webapps/ROOT/index.jsp
+++ b/tomcat-uid/webapps/ROOT/index.jsp
@@ -1,209 +1,222 @@
-<!--

-  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

+<%--

+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

+    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.

--->

-<?xml version="1.0" encoding="ISO-8859-1"?>

-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

-   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

+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.

+--%>

+<!DOCTYPE html>

 <%@ page session="false" %>

-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

+<%

+java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy");

+request.setAttribute("year", sdf.format(new java.util.Date()));

+request.setAttribute("tomcatUrl", "http://tomcat.apache.org/");

+request.setAttribute("tomcatDocUrl", "/docs/");

+request.setAttribute("tomcatExamplesUrl", "/examples/");

+%>

+<html lang="en">

     <head>

-    <title><%= application.getServerInfo() %></title>

-    <style type="text/css">

-    /*<![CDATA[*/

-      body {

-          color: #000000;

-          background-color: #FFFFFF;

-          font-family: Arial, "Times New Roman", Times, serif;

-          margin: 10px 0px;

-      }

+        <title><%=request.getServletContext().getServerInfo() %></title>

+        <link href="favicon.ico" rel="icon" type="image/x-icon" />

+        <link href="favicon.ico" rel="shortcut icon" type="image/x-icon" />

+        <link href="tomcat.css" rel="stylesheet" type="text/css" />

+    </head>

 

-    img {

-       border: none;

-    }

+    <body>

+        <div id="wrapper">

+            <div id="navigation" class="curved container">

+                <span id="nav-home"><a href="${tomcatUrl}">Home</a></span>

+                <span id="nav-hosts"><a href="${tomcatDocUrl}">Documentation</a></span>

+                <span id="nav-config"><a href="${tomcatDocUrl}config/">Configuration</a></span>

+                <span id="nav-examples"><a href="${tomcatExamplesUrl}">Examples</a></span>

+                <span id="nav-wiki"><a href="http://wiki.apache.org/tomcat/FrontPage">Wiki</a></span>

+                <span id="nav-lists"><a href="${tomcatUrl}lists.html">Mailing Lists</a></span>

+                <span id="nav-help"><a href="${tomcatUrl}findhelp.html">Find Help</a></span>

+                <br class="separator" />

+            </div>

+            <div id="asf-box">

+                <h1>${pageContext.servletContext.serverInfo}</h1>

+            </div>

+            <div id="upper" class="curved container">

+                <div id="congrats" class="curved container">

+                    <h2>If you're seeing this, you've successfully installed Tomcat. Congratulations!</h2>

+                </div>

+                <div id="notice">

+                    <img src="tomcat.png" alt="[tomcat logo]" />

+                    <div id="tasks">

+                        <h3>Recommended Reading:</h3>

+                        <h4><a href="${tomcatDocUrl}security-howto.html">Security Considerations HOW-TO</a></h4>

+                        <h4><a href="${tomcatDocUrl}manager-howto.html">Manager Application HOW-TO</a></h4>

+                        <h4><a href="${tomcatDocUrl}cluster-howto.html">Clustering/Session Replication HOW-TO</a></h4>

+                    </div>

+                </div>

+                <div id="actions">

+                    <div class="button">

+                        <a class="container shadow" href="/manager/status"><span>Server Status</span></a>

+                    </div>

+                    <div class="button">

+                        <a class="container shadow" href="/manager/html"><span>Manager App</span></a>

+                    </div>

+                    <div class="button">

+                        <a class="container shadow" href="/host-manager/html"><span>Host Manager</span></a>

+                    </div>

+                </div>

+                <!--

+                <br class="separator" />

+                -->

+                <br class="separator" />

+            </div>

+            <div id="middle" class="curved container">

+                <h3>Developer Quick Start</h3>

+                <div class="col25">

+                    <div class="container">

+                        <p><a href="${tomcatDocUrl}setup.html">Tomcat Setup</a></p>

+                        <p><a href="${tomcatDocUrl}appdev/">First Web Application</a></p>

+                    </div>

+                </div>

+                <div class="col25">

+                    <div class="container">

+                        <p><a href="${tomcatDocUrl}realm-howto.html">Realms &amp; AAA</a></p>

+                        <p><a href="${tomcatDocUrl}jndi-datasource-examples-howto.html">JDBC DataSources</a></p>

+                    </div>

+                </div>

+                <div class="col25">

+                    <div class="container">

+                        <p><a href="${tomcatExamplesUrl}">Examples</a></p>

+                    </div>

+                </div>

+                <div class="col25">

+                    <div class="container">

+                        <p><a href="http://wiki.apache.org/tomcat/Specifications">Servlet Specifications</a></p>

+                        <p><a href="http://wiki.apache.org/tomcat/TomcatVersions">Tomcat Versions</a></p>

+                    </div>

+                </div>

+                <br class="separator" />

+            </div>

+            <div id="lower">

+                <div id="low-manage" class="">

+                    <div class="curved container">

+                        <h3>Managing Tomcat</h3>

+                        <p>For security, access to the <a href="/manager/html">manager webapp</a> is restricted.

+                        Users are defined in:</p>

+                        <pre>$CATALINA_HOME/conf/tomcat-users.xml</pre>

+                        <p>In Tomcat 7.0 access to the manager application is split between

+                           different users. &nbsp; <a href="${tomcatDocUrl}manager-howto.html">Read more...</a></p>

+                        <br />

+                        <h4><a href="${tomcatDocUrl}RELEASE-NOTES.txt">Release Notes</a></h4>

+                        <h4><a href="${tomcatDocUrl}changelog.html">Changelog</a></h4>

+                        <h4><a href="${tomcatUrl}migration.html">Migration Guide</a></h4>

+                        <h4><a href="${tomcatUrl}security.html">Security Notices</a></h4>

+                    </div>

+                </div>

+                <div id="low-docs" class="">

+                    <div class="curved container">

+                        <h3>Documentation</h3>

+                        <h4><a href="${tomcatDocUrl}">Tomcat 7.0 Documentation</a></h4>

+                        <h4><a href="${tomcatDocUrl}config/">Tomcat 7.0 Configuration</a></h4>

+                        <h4><a href="http://wiki.apache.org/tomcat/FrontPage">Tomcat Wiki</a></h4>

+                        <p>Find additional important configuration information in:</p>

+                        <pre>$CATALINA_HOME/RUNNING.txt</pre>

+                        <p>Developers may be interested in:</p>

+                        <ul>

+                            <li><a href="http://tomcat.apache.org/bugreport.html">Tomcat 7.0 Bug Database</a></li>

+                            <li><a href="${tomcatDocUrl}api/index.html">Tomcat 7.0 JavaDocs</a></li>

+                            <li><a href="http://svn.apache.org/repos/asf/tomcat/tc7.0.x/">Tomcat 7.0 SVN Repository</a></li>

+                        </ul>

+                    </div>

+                </div>

+                <div id="low-help" class="">

+                    <div class="curved container">

+                        <h3>Getting Help</h3>

+                        <h4><a href="${tomcatUrl}faq/">FAQ</a> and <a href="${tomcatUrl}lists.html">Mailing Lists</a></h4>

+                        <p>The following mailing lists are available:</p>

+                        <ul>

+                            <li id="list-announce"><strong><a href="${tomcatUrl}lists.html#tomcat-announce">tomcat-announce</a><br />

+                                Important announcements, releases, security vulnerability notifications. (Low volume).</strong>

+                            </li>

+                            <li><a href="${tomcatUrl}lists.html#tomcat-users">tomcat-users</a><br />

+                                User support and discussion

+                            </li>

+                            <li><a href="${tomcatUrl}lists.html#taglibs-user">taglibs-user</a><br />

+                                User support and discussion for <a href="${tomcatUrl}taglibs/">Apache Taglibs</a>

+                            </li>

+                            <li><a href="${tomcatUrl}lists.html#tomcat-dev">tomcat-dev</a><br />

+                                Development mailing list, including commit messages

+                            </li>

+                        </ul>

+                    </div>

+                </div>

+                <br class="separator" />

+            </div>

+            <div id="footer" class="curved container">

+                <div class="col20">

+                    <div class="container">

+                        <h4>Other Downloads</h4>

+                        <ul>

+                            <li><a href="${tomcatUrl}download-connectors.cgi">Tomcat Connectors</a></li>

+                            <li><a href="${tomcatUrl}download-native.cgi">Tomcat Native</a></li>

+                            <li><a href="${tomcatUrl}taglibs/">Taglibs</a></li>

+                            <li><a href="${tomcatDocUrl}deployer-howto.html">Deployer</a></li>

+                        </ul>

+                    </div>

+                </div>

+                <div class="col20">

+                    <div class="container">

+                        <h4>Other Documentation</h4>

+                        <ul>

+                            <li><a href="${tomcatUrl}connectors-doc/">Tomcat Connectors</a></li>

+                            <li><a href="${tomcatUrl}connectors-doc/">mod_jk Documentation</a></li>

+                            <li><a href="${tomcatUrl}native-doc/">Tomcat Native</a></li>

+                            <li><a href="${tomcatDocUrl}deployer-howto.html">Deployer</a></li>

+                        </ul>

+                    </div>

+                </div>

+                <div class="col20">

+                    <div class="container">

+                        <h4>Get Involved</h4>

+                        <ul>

+                            <li><a href="${tomcatUrl}getinvolved.html">Overview</a></li>

+                            <li><a href="${tomcatUrl}svn.html">SVN Repositories</a></li>

+                            <li><a href="${tomcatUrl}lists.html">Mailing Lists</a></li>

+                            <li><a href="http://wiki.apache.org/tomcat/FrontPage">Wiki</a></li>

+                        </ul>

+                    </div>

+                </div>

+                <div class="col20">

+                    <div class="container">

+                        <h4>Miscellaneous</h4>

+                        <ul>

+                            <li><a href="${tomcatUrl}contact.html">Contact</a></li>

+                            <li><a href="${tomcatUrl}legal.html">Legal</a></li>

+                            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>

+                            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>

+                        </ul>

+                    </div>

+                </div>

+                <div class="col20">

+                    <div class="container">

+                        <h4>Apache Software Foundation</h4>

+                        <ul>

+                            <li><a href="${tomcatUrl}whoweare.html">Who We Are</a></li>

+                            <li><a href="${tomcatUrl}heritage.html">Heritage</a></li>

+                            <li><a href="http://www.apache.org">Apache Home</a></li>

+                            <li><a href="${tomcatUrl}resources.html">Resources</a></li>

+                        </ul>

+                    </div>

+                </div>

+                <br class="separator" />

+            </div>

+            <p class="copyright">Copyright &copy;1999-${year} Apache Software Foundation.  All Rights Reserved</p>

+        </div>

+    </body>

 

-    a:link, a:visited {

-        color: blue

-    }

-

-    th {

-        font-family: Verdana, "Times New Roman", Times, serif;

-        font-size: 110%;

-        font-weight: normal;

-        font-style: italic;

-        background: #D2A41C;

-        text-align: left;

-    }

-

-    td {

-        color: #000000;

-        font-family: Arial, Helvetica, sans-serif;

-    }

-

-    td.menu {

-        background: #FFDC75;

-    }

-

-    .center {

-        text-align: center;

-    }

-

-    .code {

-        color: #000000;

-        font-family: "Courier New", Courier, monospace;

-        font-size: 110%;

-        margin-left: 2.5em;

-    }

-

-     #banner {

-        margin-bottom: 12px;

-     }

-

-     p#congrats {

-         margin-top: 0;

-         font-weight: bold;

-         text-align: center;

-     }

-

-     p#footer {

-         text-align: right;

-         font-size: 80%;

-     }

-     /*]]>*/

-   </style>

-</head>

-

-<body>

-

-<!-- Header -->

-<table id="banner" width="100%">

-    <tr>

-      <td align="left" style="width:130px">

-        <a href="http://tomcat.apache.org/">

-          <img src="tomcat.gif" height="92" width="130" alt="The Mighty Tomcat - MEOW!"/>

-        </a>

-      </td>

-      <td align="left" valign="top"><b><%= application.getServerInfo() %></b></td>

-      <td align="right">

-        <a href="http://www.apache.org/">

-          <img src="asf-logo-wide.gif" height="51" width="537" alt="The Apache Software Foundation"/>

-        </a>

-       </td>

-     </tr>

-</table>

-

-<table>

-    <tr>

-

-        <!-- Table of Contents -->

-        <td valign="top">

-            <table width="100%" border="1" cellspacing="0" cellpadding="3">

-                <tr>

-                  <th>Administration</th>

-                </tr>

-                <tr>

-                  <td class="menu">

-                    <a href="/manager/status">Status</a><br/>

-                    <a href="/manager/html">Tomcat&nbsp;Manager</a><br/>

-                    &nbsp;

-                  </td>

-                </tr>

-            </table>

-            <br />

-            <table width="100%" border="1" cellspacing="0" cellpadding="3">

-                <tr>

-                  <th>Documentation</th>

-                </tr>

-                <tr>

-                  <td class="menu">

-                    <a href="RELEASE-NOTES.txt">Release&nbsp;Notes</a><br/>

-                    <a href="/docs/changelog.html">Change&nbsp;Log</a><br/>

-                    <a href="/docs">Tomcat&nbsp;Documentation</a><br/>

-                    &nbsp;

-                    </td>

-                </tr>

-            </table>

-            <br/>

-            <table width="100%" border="1" cellspacing="0" cellpadding="3">

-                <tr>

-                  <th>Tomcat Online</th>

-                </tr>

-                <tr>

-                  <td class="menu">

-                    <a href="http://tomcat.apache.org/">Home&nbsp;Page</a><br/>

-                    <a href="http://tomcat.apache.org/faq/">FAQ</a><br/>

-                    <a href="http://tomcat.apache.org/bugreport.html">Bug&nbsp;Database</a><br/>

-                    <a href="http://mail-archives.apache.org/mod_mbox/tomcat-users/">Users&nbsp;Mailing&nbsp;List</a><br/>

-                    <a href="http://mail-archives.apache.org/mod_mbox/tomcat-dev/">Developers&nbsp;Mailing&nbsp;List</a><br/>

-                    <a href="irc://irc.freenode.net/#tomcat">IRC</a><br/>

-                    &nbsp;

-                  </td>

-                </tr>

-            </table>

-            <br/>

-            <table width="100%" border="1" cellspacing="0" cellpadding="3">

-                <tr>

-                  <th>Miscellaneous</th>

-                </tr>

-                <tr>

-                  <td class="menu">

-                    <a href="/examples/servlets/">Servlets Examples</a><br/>

-                    <a href="/examples/jsp/">JSP Examples</a><br/>

-                    <a href="http://wiki.apache.org/tomcat/Specifications">Specifications</a><br/>

-                        &nbsp;

-                  </td>

-                </tr>

-            </table>

-        </td>

-

-        <td style="width:20px">&nbsp;</td>

-

-        <!-- Body -->

-        <td align="left" valign="top">

-          <p id="congrats">If you're seeing this page via a web browser, it means you've setup Tomcat successfully. Congratulations!</p>

-

-          <p>As you may have guessed by now, this is the default Tomcat home page. It can be found on the local filesystem at:</p>

-          <p class="code">$CATALINA_HOME/webapps/ROOT/index.jsp</p>

-

-          <p>where "$CATALINA_HOME" is the root of the Tomcat installation directory. If you're seeing this page, and you don't think you should be, then you're either a user who has arrived at new installation of Tomcat, or you're an administrator who hasn't got his/her setup quite right. Providing the latter is the case, please refer to the <a href="/docs">Tomcat Documentation</a> for more detailed setup and administration information than is found in the INSTALL file.</p>

-

-            <p><b>NOTE: For security reasons, using the manager webapp

-            is restricted to users with certain roles such as "manager-gui".</b>

-            Users are defined in <code>$CATALINA_HOME/conf/tomcat-users.xml</code>.</p>

-

-            <p>Included with this release are a host of sample Servlets and JSPs (with associated source code), extensive documentation, and an introductory guide to developing web applications.</p>

-

-            <p>Tomcat mailing lists are available at the Tomcat project web site:</p>

-

-           <ul>

-               <li><b><a href="http://tomcat.apache.org/lists.html#tomcat-users">tomcat-users</a></b> for general questions related to configuring and using Tomcat</li>

-               <li><b><a href="http://tomcat.apache.org/lists.html#tomcat-dev">tomcat-dev</a></b> for developers working on Tomcat</li>

-           </ul>

-

-            <p>Thanks for using Tomcat!</p>

-

-            <p id="footer"><img src="tomcat-power.gif" width="77" height="80" alt="Powered by Tomcat"/><br/>

-            &nbsp;

-

-            Copyright &copy; 1999-2014 Apache Software Foundation<br/>

-            All Rights Reserved

-            </p>

-        </td>

-

-    </tr>

-</table>

-

-</body>

 </html>

diff --git a/tomcat-uid/webapps/ROOT/tomcat-power.gif b/tomcat-uid/webapps/ROOT/tomcat-power.gif
index c1a7404..01c400b 100644
--- a/tomcat-uid/webapps/ROOT/tomcat-power.gif
+++ b/tomcat-uid/webapps/ROOT/tomcat-power.gif
Binary files differ
diff --git a/tomcat-uid/webapps/ROOT/tomcat.css b/tomcat-uid/webapps/ROOT/tomcat.css
new file mode 100644
index 0000000..d4b1190
--- /dev/null
+++ b/tomcat-uid/webapps/ROOT/tomcat.css
@@ -0,0 +1,351 @@
+/*

+  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.

+*/

+body {

+    margin: 10px 20px;

+    text-align: center;

+    font-family: Arial, sans-serif;

+}

+

+h1, h2, h3, h4, h5, h6, p, ul, ol {

+    margin: 0 0 0.5em;

+}

+h1 {

+    font-size: 18pt;

+    margin: 0.5em 0 0;

+}

+h2 {

+    font-size: 16pt;

+}

+h3 {

+    font-size: 13pt;

+}

+h4 {

+    font-size: 12pt;

+}

+h5 {

+    font-size: 11pt;

+}

+p {

+    font-size: 11pt

+}

+

+ul {

+    margin: 0;

+    padding: 0 0 0 0.25em;

+    text-indent: 0;

+    list-style: none;

+}

+li {

+    margin: 0;

+    padding: 0 0 0.25em;

+    text-indent: 0;

+    font-size: 80%;

+}

+

+pre {

+    text-indent: 0.25em;

+    width: 90%;

+    font-size: 90%;

+}

+

+br.separator {

+    margin: 0;

+    padding: 0;

+    clear: both;

+}

+

+a img {

+    border: 0 none;

+}

+

+.container {

+    padding: 10px;

+    margin: 0 0 10px;

+}

+

+.col20 {

+    float: left;

+    width: 20%;

+}

+

+.col25 {

+    float: left;

+    width: 25%;

+}

+

+#wrapper {

+    display: block;

+    margin: 0 auto;

+    text-align: left;

+    min-width: 720px;

+    max-width: 1000px;

+}

+.curved {

+    border-radius: 10px;

+    -moz-border-radius: 10px;

+    -webkit-border-radius: 10px;

+    -khtml-border-radius: 10px;

+}

+

+#navigation {

+    background: #eee url(bg-nav.png) repeat-x top left;

+    margin: 0 0 10px;

+    padding: 0;

+}

+#navigation span {

+    float: left;

+}

+#navigation span a {

+    display: block;

+    padding: 10px;

+    font-weight: bold;

+    text-shadow: 1px 1px 1px #fff;

+}

+#navigation span a:link,

+#navigation span a:visited,

+#navigation span a:hover,

+#navigation span a:active {

+    color: #666;

+    text-decoration: none;

+}

+#navigation span#nav-help {

+    float: right;

+    margin-right: 0;

+}

+

+#asf-box {

+    height: 40px;

+    background: #fff url(asf-logo-wide.svg) no-repeat top right;}

+#asf-box h1 {

+    padding: 0;

+    margin: 0;

+}

+

+#upper {

+    background: #fff url(bg-upper.png) repeat-x top left;

+}

+

+#congrats {

+    text-align: center;

+    padding: 10px;

+    margin: 0 40px 20px;

+    background-color: #9c9;

+}

+#congrats h2 {

+    font-size: 14pt;

+    padding: 0;

+    margin: 0;

+    color: #fff;

+}

+

+#notice {

+    float: left;

+    width: 560px;

+    color: #696;

+}

+#notice a:link,

+#notice a:visited,

+#notice a:hover,

+#notice a:active {

+    color: #090;

+    text-decoration: none;

+}

+#notice img,

+#notice #tasks {

+    float: left;

+}

+#tasks a:link,

+#tasks a:visited,

+#tasks a:hover,

+#tasks a:active {

+    text-decoration: underline;

+}

+#notice img {

+    margin-right: 20px;

+}

+

+#actions {

+    float: right;

+    width: 140px;

+}

+

+#actions .button {

+    display: block;

+    padding: 0;

+    height: 36px;

+    background: url(bg-button.png) no-repeat top left;

+}

+

+#actions .button a {

+    display: block;

+    padding: 0;

+}

+

+#actions .button a:link,

+#actions .button a:visited,

+#actions .button a:hover,

+#actions .button a:active {

+    color: #696;

+    text-decoration: none;

+}

+

+#actions .button a span {

+    display: block;

+    padding: 6px 10px;

+    color: #666;

+    text-shadow: 1px 1px 1px #fff;

+    font-size: 10pt;

+    font-weight: bold;

+}

+

+#middle {

+    background: #eef url(bg-middle.png) repeat-x top left;

+    margin: 20px 0;

+    padding: 1px 10px;

+}

+#middle h3 {

+    margin: 0 0 10px;

+    color: #033;

+}

+#middle p {

+    font-size: 10pt;

+}

+#middle a:link,

+#middle a:visited,

+#middle a:hover,

+#middle a:active {

+    color: #366;

+    font-weight: bold;

+}

+#middle .col25 .container {

+    padding: 0 0 1px;

+}

+

+#developers {

+    float: left;

+    width: 40%;

+}

+#security {

+    float: right;

+    width: 50%;

+}

+

+#lower {

+    padding: 0;

+}

+

+#lower a:link,

+#lower a:visited,

+#lower a:hover,

+#lower a:active {

+    color: #600;

+}

+

+#lower strong a:link,

+#lower strong a:visited,

+#lower strong a:hover,

+#lower strong a:active {

+    color: #c00;

+}

+

+#lower h3 {

+    color: #963;

+    font-size: 14pt;

+}

+#lower h4 {

+    font-size: 12pt;

+}

+#lower ul {

+    padding: 0;

+    margin: 0.5em 0;

+}

+#lower p,

+#lower li {

+    font-size: 9pt;

+    color: #753;

+    margin: 0 0 0.1em;

+}

+#lower li {

+    padding: 3px 5px;

+}

+#lower li strong {

+    color: #a53;

+}

+#lower li#list-announce {

+    border: 1px solid #f90;

+    background-color: #ffe8c8;

+}

+#lower p {

+    font-size: 10.5pt;

+}

+

+#low-manage,

+#low-docs,

+#low-help {

+    float: left;

+    width: 32%;

+}

+#low-docs {

+    margin: 0 0 0 2.2%;

+}

+#low-help {

+    float: right;

+}

+

+#low-manage div,

+#low-docs div,

+#low-help div {

+    min-height: 280px;

+    border: 3px solid #ffdc75;

+    background-color: #fff1c8;

+    padding: 10px;

+}

+

+#footer {

+    padding: 0;

+    margin: 20px 0;

+    color: #999;

+    background-color: #eee;

+}

+#footer h4 {

+    margin: 0 0 10px;

+    font-size: 10pt;

+}

+#footer p {

+    margin: 0 0 10px;

+    font-size: 10pt;

+}

+#footer ul {

+    margin: 6px 0 1px;

+    padding: 0;

+}

+#footer li {

+    margin: 0;

+    font-size: 9pt;

+}

+

+#footer a:link,

+#footer a:visited,

+#footer a:hover,

+#footer a:active {

+    color: #666;

+}

+

+.copyright {

+    font-size: 10pt;

+    color: #666;

+}
\ No newline at end of file
diff --git a/tomcat-uid/webapps/ROOT/tomcat.gif b/tomcat-uid/webapps/ROOT/tomcat.gif
index 6175673..f2aa6f8 100644
--- a/tomcat-uid/webapps/ROOT/tomcat.gif
+++ b/tomcat-uid/webapps/ROOT/tomcat.gif
Binary files differ
diff --git a/tomcat-uid/webapps/ROOT/tomcat.png b/tomcat-uid/webapps/ROOT/tomcat.png
new file mode 100644
index 0000000..209b07f
--- /dev/null
+++ b/tomcat-uid/webapps/ROOT/tomcat.png
Binary files differ
diff --git a/tomcat-uid/webapps/ROOT/tomcat.svg b/tomcat-uid/webapps/ROOT/tomcat.svg
index dbccdaf..3636850 100644
--- a/tomcat-uid/webapps/ROOT/tomcat.svg
+++ b/tomcat-uid/webapps/ROOT/tomcat.svg
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>

+<?xml version="1.0" encoding="UTF-8" standalone="no"?>

 <!--

   Licensed to the Apache Software Foundation (ASF) under one or more

   contributor license agreements.  See the NOTICE file distributed with

@@ -16,150 +16,516 @@
   limitations under the License.

 -->

 <!-- Generator: Adobe Illustrator 11 Build 196, SVG Export Plug-In . SVG Version: 6.0.0 Build 78)  -->

-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"    "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" [

-	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">

-	<!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">

-	<!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">

-	<!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">

-	<!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">

-	<!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">

-	<!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">

-	<!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">

-	<!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">

-	<!ENTITY ns_svg "http://www.w3.org/2000/svg">

-	<!ENTITY ns_xlink "http://www.w3.org/1999/xlink">

-]>

-<svg 

-	 xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;" i:viewOrigin="176.7139 486.707" i:rulerOrigin="-156 -296" i:pageBounds="156 496 456 296"

-	 xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"

-	 width="260.162" height="184.413" viewBox="0 0 260.162 184.413" overflow="visible" enable-background="new 0 0 260.162 184.413"

-	 xml:space="preserve">

-	<metadata>

-		<variableSets  xmlns="&ns_vars;">

-			<variableSet  varSetName="binding1" locked="none">

-				<variables></variables>

-				<v:sampleDataSets  xmlns="&ns_custom;" xmlns:v="&ns_vars;"></v:sampleDataSets>

-			</variableSet>

-		</variableSets>

-		<sfw  xmlns="&ns_sfw;">

-			<slices></slices>

-			<sliceSourceBounds  y="302.294" x="176.714" width="260.162" height="184.413" bottomLeftOrigin="true"></sliceSourceBounds>

-		</sfw>

-<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?><x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 3.0-29, framework 1.6'>

-<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>

+<svg:svg

+   xmlns:xapGImg="http://ns.adobe.com/xap/1.0/g/img/"

+   xmlns:xap="http://ns.adobe.com/xap/1.0/"

+   xmlns:ns0="http://ns.adobe.com/SaveForWeb/1.0/"

+   xmlns:ns="http://ns.adobe.com/Variables/1.0/"

+   xmlns:i="http://ns.adobe.com/AdobeIllustrator/10.0/"

+   xmlns:x="adobe:ns:meta/"

+   xmlns:dc="http://purl.org/dc/elements/1.1/"

+   xmlns:cc="http://creativecommons.org/ns#"

+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

+   xmlns:svg="http://www.w3.org/2000/svg"

+   xmlns:xlink="http://www.w3.org/1999/xlink"

+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"

+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"

+   i:viewOrigin="176.7139 486.707"

+   i:rulerOrigin="-156 -296"

+   i:pageBounds="156 496 456 296"

+   width="260.162"

+   height="184.413"

+   viewBox="0 0 260.162 184.413"

+   overflow="visible"

+   enable-background="new 0 0 260.162 184.413"

+   xml:space="preserve"

+   id="svg2"

+   sodipodi:version="0.32"

+   inkscape:version="0.46"

+   sodipodi:docname="tomcat.svg"

+   inkscape:output_extension="org.inkscape.output.svg.inkscape"><svg:defs

+   id="defs59"><inkscape:perspective

+     sodipodi:type="inkscape:persp3d"

+     inkscape:vp_x="0 : 92.206497 : 1"

+     inkscape:vp_y="0 : 1000 : 0"

+     inkscape:vp_z="260.16199 : 92.206497 : 1"

+     inkscape:persp3d-origin="130.08099 : 61.470998 : 1"

+     id="perspective63" /></svg:defs><sodipodi:namedview

+   inkscape:window-height="725"

+   inkscape:window-width="1051"

+   inkscape:pageshadow="2"

+   inkscape:pageopacity="0.0"

+   guidetolerance="10.0"

+   gridtolerance="10.0"

+   objecttolerance="10.0"

+   borderopacity="1.0"

+   bordercolor="#666666"

+   pagecolor="#ffffff"

+   id="base"

+   showgrid="false"

+   inkscape:zoom="2.1025362"

+   inkscape:cx="130.08099"

+   inkscape:cy="91.968689"

+   inkscape:window-x="35"

+   inkscape:window-y="192"

+   inkscape:current-layer="svg2" />

+    <svg:metadata

+   id="metadata4">

+        <ns:variableSets>

+            <ns:variableSet

+   varSetName="binding1"

+   locked="none">

+                <ns:variables />

+                <ns:sampleDataSets />

+            </ns:variableSet>

+        </ns:variableSets>

+        <ns0:sfw>

+            <ns0:slices />

+            <ns0:sliceSourceBounds

+   y="302.294"

+   x="176.714"

+   width="260.162"

+   height="184.413"

+   bottomLeftOrigin="true" />

+        </ns0:sfw>

+<xpacket /><x:xmpmeta

+   x:xmptk="XMP toolkit 3.0-29, framework 1.6">

 

- <rdf:Description rdf:about=''

-  xmlns:pdf='http://ns.adobe.com/pdf/1.3/'>

+<svg:metadata

+   id="metadata61"><rdf:RDF>

+

+ <rdf:Description

+   rdf:about="">

  </rdf:Description>

 

- <rdf:Description rdf:about=''

-  xmlns:tiff='http://ns.adobe.com/tiff/1.0/'>

+ <rdf:Description

+   rdf:about="">

  </rdf:Description>

 

- <rdf:Description rdf:about=''

-  xmlns:xap='http://ns.adobe.com/xap/1.0/'

-  xmlns:xapGImg='http://ns.adobe.com/xap/1.0/g/img/'>

+ <rdf:Description

+   rdf:about="">

   <xap:CreateDate>2006-05-09T08:17:21Z</xap:CreateDate>

   <xap:ModifyDate>2006-05-09T08:37:38Z</xap:ModifyDate>

   <xap:CreatorTool>Illustrator</xap:CreatorTool>

   <xap:Thumbnails>

    <rdf:Alt>

-    <rdf:li rdf:parseType='Resource'>

+    <rdf:li

+   rdf:parseType="Resource">

      <xapGImg:format>JPEG</xapGImg:format>

      <xapGImg:width>256</xapGImg:width>

      <xapGImg:height>184</xapGImg:height>

-     <xapGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA&#xA;AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK&#xA;DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f&#xA;Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAuAEAAwER&#xA;AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA&#xA;AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB&#xA;UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE&#xA;1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ&#xA;qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy&#xA;obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp&#xA;0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo&#xA;+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7&#xA;FXYq7FXYq7FXYq7FXYq7FXhH/OYHnWfQ/wAurfRLSUxXXmK49GQqaN9VtwJJqH3cxqfYnFXhP5Y/&#xA;85O+f/JU0enaw769okbBJLS8ZvrUKg0IhnarDj/I9R2HHFX2F+Xn5neT/P8ApP6R8u3glKAfW7KS&#xA;iXNuzdFljqaezCqnsTirK8VdirsVdirsVdirsVdirC/zM/Nvyd+XemC71255Xcqk2WmQUa5nI2+F&#xA;CRxUd3ag+nbFXx1+Zf8Azkn+YvneaW1tLh9C0NgwXTrB2V3Sm/rzji8m3UDitP2cVfV//OOfmabz&#xA;D+T3l+6uHMl1aRPYTsxqSbVzEhJ7kxKhxV6VirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd&#xA;irsVfHn/ADlxdSa7+bvlvyvGx4RW0EVARtNfXJVqf7BY+uRlKgT3JAt5r/zkD5ZGgfmfqSRR+nZ6&#xA;gsd9agdOMq0f/ksj5h9nZvEwgnmNi2Z4cMiw/wAqebPMHlTXLfW9BvHstQtjVZEPwstQWjkXo6NT&#xA;4lOxzOan3v8Akl+cel/mX5a+tAJa69ZcU1fTlJojGvGWLluYpKbV6GqmtKlV6NirsVdirsVdirsV&#xA;eWfnr+eGl/lroywwBLzzPfox02wJqqL0+sT03EanoOrnYdyFXwh5i8x655j1i41jW7yS+1K6blNc&#xA;SmpPgABQKo6BVFB2xVnf5Q+SjrWh+d9Yli5w6XolylsadbqSNnTj8kiYf7IZg6zUeHKERzlIfL8U&#xA;3YoWCe4Pff8AnCfVTN5D1zTCamz1P11HcLcQIAPlWE5nNL6KxV2KuxV2KuxV2KuxV2KuxV2KuxV2&#xA;KuxV2KuxV2KuxV2KvjD8wm/Sv/OX8UTGsdrqGnCMNUU+rW0Mp6f5ammY2sNYZ/1T9zZi+oe9m/8A&#xA;zkx+Xc/mPytFrunRepqehc3ljUVeS0cAyAU6mMqHA8OXfNB2PqhCfAeUvv8A2uZqcdix0fIedQ69&#xA;m35OefrryN+YOla2kpjsjKttqqDo9nMwEoI78ftr/lKMVfaeqf8AOSH5KaaSs3meCZx0W1inuanf&#xA;YNDG69vHFWM3v/OYn5QW5YQ/pK8ArQwWqitPD1pIuvviqVT/APObH5cKR6GjaxIP2i8dqhB9qTvi&#xA;qmP+c2fIFd9C1Wnfa2/6q4qmFv8A85n/AJUSvxksdZtx/NJb25H/ACTuHOKp3bf85XfkpPBI7avN&#xA;BIisywS2lwGcqCeIZUdKmm1WGKvijzz5x1bzl5q1HzFqjlrm+lLrHWqxRDaOFP8AJjSij7+uKpNb&#xA;W1xdXMVtbRtNcTuscMKAszu54qqgbkkmgwE1uVfbHkL8uk8o/lTPoMiK+o3drPNqZHRrieIhlr4I&#xA;tEB9q5yWo1fi6gS/hBFfN2UMfDAjqwT/AJwdvyt/5usC20sVlOq77em0yMR2/wB2Cudc619ZYq7F&#xA;XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXxZKTJ/zmFc+oedNTmA5b/ZtG49fCgpmH2h/&#xA;cS9zbh+sPqDrsc4t2r57/Nf/AJxkGo3c+teSTFb3ExMlxo0hEcTMdybd/spU/sN8PgQNs3+i7Xoc&#xA;OX5/rcLLpusWIaF/zif56vFWTVr6y0pG6xgtczL81QLH90mZWTtnFH6bk1x0sjz2Z1pf/OIvlOIL&#xA;+lNbvrthSv1dYrZSe+zC4ND88wp9uTP0xA9+/wCptGkHUsms/wDnGf8AKS3AEunT3dOpmupxXam/&#xA;pNFmPPtjOeRA+H67bBpoPDv+ch/yt03yXrdjeaFbG30HUouCQ8pJBFcQ0DqXkZ2+NSrCrfzeGbns&#xA;vWHNAiX1BxdRi4TtySH8jfJdn5u/MOy07UIfrGl28ct3fw1IDRxrxUEqQaGV0By7X6g4sRkOfRhh&#xA;hxSp9N3X/OO/5P3FSdBETGnxRXN0nT/JEvH8M50dq6gfxfYHOOnh3JDqP/OKn5a3NTazajYt+yIp&#xA;0dfpEsbn/hsvj21lHMRP497A6SPmwzW/+cQr9A76H5himO/CG9haL5AyxGT/AIhmXj7cifqiR7t/&#xA;1NUtIehZh+S3/OP8Xk+5GveYXivNfTkLSKIloLYGqlwzBecjL3p8P45i9odqeIOCH09fNtw6fh3P&#xA;N7DfIz2VwijkzRuFA6klTmpxmpD3uRLk+bf+cJrrj+Yet2tT+90hpeP7J9O5hWp9/wB5tneunfZm&#xA;KuxV2KuxV2KuxV2KuxVZLNFDG0srrHGu7O5CqB7k4qks3nzyNC5jm8xaZHIOqPeW6nf2L4qmFhrW&#xA;j6iK6ff294KVrbypLt1r8BPjirAvzb/Pnyf+WrW9rqKS6hq90vqRaba8eaxVp6krMQEUkEL1JPbq&#xA;cVYFof8Azmp5BupVj1fR9Q0wNsZo/SuY1/1qGN6fJDir2Xyf+Yfkrzjam48taxb6iqgGSKNisyA9&#xA;PUhcLKn+yXFWRYq7FXYq7FXxRrBNj/zl/NVwC+rL8XtcWw+Hf/jJTMXXC8M/6pbMP1h9SZxLtnYq&#xA;7FWG+afzg/LnyvdNZ6vrUSXqGj2sKvcSofB1hV+B/wBamZmHs/NkFxjt8mqWaMeZRPk78zvI/nF5&#xA;ItA1RLm5hHKS1dXhmC1pyEcoRmXputRkdRosuLeQ2TDLGXJCfm/5JXzj5D1HSo05X8a/WtNPcXMI&#xA;JUD/AFxVP9lk+z9R4WUE8jsWOaHFGnl3/OI/lpodN1zzFMlGuJUsLcsKELCPUlpXsWkQfNc2Xbmb&#xA;eMPj+r9LRpI8y+hc0DmuxV2KuxV2Kvl//nClHP5oas4B4Lok6luwLXdqQPpoc9AdK+08VdirsVdi&#xA;rsVdiqXeYPMOi+XtIudY1q7jsdNtF5z3EpooHQAd2ZjsqjcnYYq+VfPf/OV3nXzNqp0D8stPlto5&#xA;mMcF0IfrGoT+8UIDrGD8mbvVcVSqz/5xn/Pjzs66h5t1RbUueX+5W7kurgA/yxx+sq/6pZaeGKsj&#xA;h/5wanMYM3nNUk7qmml1/wCCN0n6sVQt7/zhDr8B56Z5stppEIMZntZLfcb1qkk9KHFXzr5mtdUs&#xA;tfv9O1S5a7vtOuJbKaZndwWt3MZ4mSjcartUDFUsxVFabqeo6XfQ3+m3UtlfW7c4Lq3dopUbxV1I&#xA;IxV9Sfkr/wA5aNcT2+gfmG6K8hWO18wqAi1OwF2q0Vf+Mi0H8w6tir6lVlZQykMrCqsNwQe4xVvF&#xA;XYq+Kfzzro3/ADlLa6oxKJLdaReFiaApGsMLeG1ISMqzw4sco94LKBogvqPOEdw7FXkf55/mBrlj&#xA;Jp3kbykX/wAVeYSFE0Zo8FuzFOSt+wzlW+P9lQx2NDm27N0sZXlyfRFxs+Qj0jmUd5B/IHyP5bsI&#xA;31Oyh1zWnAa6vb1BMnqHciKKSqKAehI5e+Q1XamTIfSeGPlzTj08YjfcsJ/PDy5pXkHX/LH5geW7&#xA;WPTGhvlt9Rt7RBFHKpBk+wgCjnGkiPQbg5m9m5jnhLFM3s1Z4iBEg+hOu4zn3NQOkaLpuj20ltp8&#xA;IghlnnunRe8tzK0sh/4JzQdhtlmXLKZuXdXyYxiByR2VsnYqxjV/zO/L3SJWh1DzDYQzoaPD66PI&#xA;p/ykQsw+kZlY9Dmnyifu+9qOWI6pvoOvaRr+kwato9yt3p1zz9C4UMob03MbbMFOzoR0ynLiljkY&#xA;yFEM4yBFhV1WVYdLvJWJCxwSOxHWioTjhFzA8wsuRfPn/OEVoX83eZLzekOnxQnpSsswb/mVneOn&#xA;fYOKuxV2KuxV2KqF9e2lhZT315KsFpaxtNcTuaKkcYLMzHwAFcVfFHnPzR50/wCchPzJi8veXlaH&#xA;y7aO5sYnqsUUCkK97dU/bYdB2qFXcklV9U/lj+UnlH8u9IWz0a2WS+dQL7VpVBuLhh1q37KV+yg2&#xA;Huakqs1xV2KuxV8v/nf/AM4patrnmG+80eSp4Xn1GR7m/wBIuW9ImdyWd4JSOH7xjUq9KGvxb0Cr&#xA;5/1j8mPzX0iRkvfKepgL9qSC3e5jG9P7yASJ1PjiqRjyb5vMvpDQ9QMtePpi1m5culKca1xVPtG/&#xA;JT82dYdUsvKepUf7MlxA1rGe395cekn44q+zf+cffKv5m+VvJ50bzvPbzRwFf0RFHK01xbxU+KCV&#xA;6cCqmnDizU3FaUAVeo4q7FXx5/zmxpD2vnTy7rcdUN5YPbh12POzmL1qO4FyuKsl/Lz/AJyc8ra2&#xA;sNj5mUaHqZAU3TGtnI3Qnn1ir1o/wj+bOY1XY8474/UO7r+1z8epB2Oz2iKWKaJJYnWSKQBkkQhl&#xA;ZTuCCNiDmnIINFygVGXTNOmvYb6W1hkvbbkLe6eNWljDgq3ByOS1UkGhwjJIDhs0ei0LtE5FLxD/&#xA;AJyycP5F0ezQcp59WjaNdt+NvMp/GQZuuxI/vJH+j+lxNWfSPe9rgiEMEcQNRGoQE9+IpmmlKyS5&#xA;QCpgSsllihieWVxHFGpeR2NFVVFSST0AGEAk0EEvn2fVfOv5269e6foN9Jof5e6fIYbm9QMst2af&#xA;ZIBUtyG4QkKqkFqmgzfiGLRQBkOLKfx+C4ZMspobRZzof/OOv5U6VCiyaUdSnUUa4vZZJGb5opSL&#xA;7kzBydrZ5HY8PuDbHTQDP9G0XStE02HTNJtks9Pt+Xo20Qoi83LtQe7MTmBkyynLikbJboxAFBJv&#xA;zO1Aaf8Al35lu60ZNNuljP8AlvEyJ/wzDL9FDizQH9IfYxymol59/wA4P6S0eg+adXI+G6ura0Vv&#xA;e2jeRgP+kkZ2zqX01irsVdirsVdir50/5zJ/MGbSfK1j5PspOFxrrGa/KmhFpAwon/PWWn0KR3xV&#xA;mf8Azjd+WEPkj8vrae5iA17XES91KQijorrWG333HpI24/mLYq9YxV2KuxV2KuxV2KuxV2KuxV2K&#xA;obUdT03TbR7zUbuGytI/7y4uJFijX5u5VRir5U/5yz/MX8tfNfl7S7DQtZh1LW9NvS5W2V3iFvJG&#xA;yyUnC+kfjVPsscVSv8i/yi/LTzn5Ij1XVLSafU4J5rW9C3EkaFlIdCFQrT926980XaOuy4cnDGqI&#xA;vk5eDDGQsvdvKXkby35StXtdBgmtrZ6Vge6uZ4wf5ljmkkRCe5UCuaPPqp5Tc9/gHLhjEeSN8x3+&#xA;o6foGoX2m2hv9QtoJJbWyFazSKpKxjjv8R22yOCEZTAkaBZTJAsPHv8AlcP53/8Altpv+BuP+ac3&#xA;H8n6X/VPti4vjZP5rzz8wfPP5i+bfNvluw1Dyq1rqWjzG+g0ROZmuRVZDVGHPjxgbcDpXNhpdNiw&#xA;wkYy9Mutj8dWnJOUiAQ9D/5XD+d//ltpv+BuP+ac1/8AJ+l/1T7Yt3jZP5rv+Vw/nf8A+W2m/wCB&#xA;uP8AmnH+T9L/AKp9sV8bJ/NYp+ZX5v8A5qXnli40LVfKbaCutAWkdyxlWRwWXnHGrheRdfhI8DmV&#xA;pNBgE+KMuLh9zXkzTIoirR/kbzf+bvlHy1Y+XtO/LedobYENM6zK0kjtyeRzxoOTH6BtkNTp9Plm&#xA;ZyyfaEwnOIoRej+RPO35o6xr62fmPyf+hdNMTub71C1HWnFaV/azX6rS4IQuE+KXds348kyaIZ7q&#xA;jaqthKdKSCS/pSBbp3jhr4uY1kbbwA38Rmux8PF6r4fJuldbPlv8+YvzstdPS483apafoO7nEEVh&#xA;pcjJbl6NIA0bKkjgenWsnKhpnTdnHTH+7HqHfz+f6nAz8f8AFyfQ3/OLHl06N+TWkyOnCfVpJ9Rm&#xA;Hj6r+nEfphiQ5t3GeuYq7FXYq7FXYq+MfzQhXzz/AM5YWmgz1lsLe7sbB4zvW3gRbi5TvSrNLir7&#xA;OxV2KuxV2KuxV2KuxV2KuxV5j59/5yM/K7yb6kFxqQ1TU0qP0dpvG4cMO0kgIij36hn5e2KvAvMv&#xA;/OWP5p+arl9P8laWukxtXiYIzfXvHpUuy+mg+UdR/NkJ5IwFyIA80xiSaDF/+VT/AJo+b7sah5w1&#xA;h1kavx3sz3k617KgYoo9uYp4ZptR7QYIbRuZ8uXzP7XMx6GcuezJYf8AnH3yrBptwjXFxd6g8LrB&#xA;NIwSNJSpCOEQA7NvRmOak+0eQzGwjCxfU11/FOT/ACfEDnZYH+S+sfmZZeajoHlC8htrq6ZnubC/&#xA;K/VnMAPLkrAtyUdfT+Kg8BnSa7HhMOLINg6/CZA1F9k6KdbOmw/pxbZdTp/pH1IyNAW8U9UK9Pnn&#xA;I5eDi9F8PnzdlG63R2VsmndUUu5CooJZiaAAdSTiBaHhP5N8/On5r+bPzEkBbT7dv0do7EGhWgUM&#xA;tRswgjUsP+LM3vaH7nBDCOZ5/j3/AHOJh9UzJ7vmicx2KvEf+clQLS78i63cEjT9O1cC6O3H4mjl&#xA;FR/qwPm77G3GSPUj9f63E1XQvbQQQCDUHoc0jlN4pSXzN5z8q+V7ZLjX9Tg0+OSvpLK37x+PXhGv&#xA;J3pXfiMuw6bJlNQFsJ5BHmXzJ+dn5haf+Z/mby75e8qtLPbLN6EbyI0YluruRI0oh+KigChIHU50&#xA;/ZmilhieL6i4GoyiZ2fbWh6Ra6Noun6PaClpp1tFaW4/4rgQRr+C5s3HR2KuxV2KuxV2KvjfymCP&#xA;+c0p/rdK/pTU+POlKfUp/S/4144q+yMVdirsVdirsVdirsVeQfmX/wA5Ofl55MaaxtZv0/rcdVNl&#xA;ZMDEj+E1x8SL4ELyYdxir5W/Mf8A5yD/ADJ88GSC6vjpmjyVC6VYFoYmQ1FJXr6kte/I8fADFXme&#xA;Kvpj8jdTtb3yJBFFGkdxYyyW9zwVU5MDzRzTqSjipPU1zhvaDHKOosk8Mht5d/6/i7rQSBh5h6Fm&#xA;ic12Kvnvz6l35B/Nqz8z2CEQyzLqMSqeIY143UVf8upr7Pnedl5RqdLwS5gcJ/R9n2uj1MPDyWPe&#xA;+wdL1Ky1TTbXUrGQTWd5Ek9vKOjJIoZT9xznMkDCRieYc2JsWisgyYZ+b1p5vvfIGqWPlSFZ9Tu0&#xA;9F1LiN/q77TelXYuV+EAkddt6A5vZ8sccoMzsPv6NOYSMdnzl+Wn5m/mVoKR+RtEtNLsrmGWSsOp&#xA;q1vM87t8Su8ssS+p0UKaGgAGdDqtHhyfvJ2fd3fBwseWUfSHq36V/wCcqf8AqzaN/wAGn/ZRms4N&#xA;B/OP2/qci83c79K/85U/9WbRv+DT/sox4NB/OP2/qW83c8o/Mj8z/wAy/MAm8i6zaaZfXU0sY9HT&#xA;Ea4lSdGqqxvFLKvqbFSBXqQc2el0eHH+8jY2693xcfJllL0l9KflXb+bbXyJpVp5riWLV7aIQsqu&#xA;JGMSbRGUio9ThQNQnx70znNccZyk4+R+9zsIkIi2W5iNqB1xdH/RF2+sxQy6XFE8t4tyiyRelGpZ&#xA;i6uCpAAyzFxcQ4D6ixlVb8nzj/zjB5UtfNn5xal5tisltNE0Rpbu1tEUCOOa6ZktYgBt+7j5tt3U&#xA;Z3UIkRAJt1BO77PySHYq7FXYq7FXYq+M/wAyX/wb/wA5b2WsP+7s7q90+7Zz8NILlEt7htqV3EmK&#xA;vszFXYq7FXYq7FWGfmR+bnkn8vrD6xr16PrkilrXS4KPdTdacY6jitRTmxC++Kvjz80/+clPPvnk&#xA;TWVq50Py45KfULRj6kqntcTjiz1H7K8V8QeuKsQ/KyLyvP5wtbTzFbC4trn91bc2IjW4JBj9QAjk&#xA;G+zQ7VIrmB2mcowE4jUh93Vv0wiZgS5Po7zD5J8ta/pa6bf2UfoQrxtWiAjeDbb0io+Hp06eIzht&#xA;N2jmwz4oyu+d7373dZNPCYoh8/effyj17yuZLu3B1DRgSRdRr8cS9f3yD7P+sPh+XTOz7P7Wxajb&#xA;6Z936u90+fSyx78wnP8Azj5r4s/M11o8jUi1OHlED/v63qwA+cbP92YvtDp+PCJjnA/Ydv1NugyV&#xA;Ou99C5xDuWDeefKvnzV9WiufL+v/AKKskt1jkt+Ui8pQ7sX+AEbqyj6M3XZ2t02LGRlhxyvnQO23&#xA;e4eow5JSuJoe8sD81/lL+ZF9pj3Go65Hq7WKPLBbMZGc7VZY+S9WC9O+bnSdsaQTEYQ4OLyAHxou&#xA;Jl0mWrJuvel/5Q/8rK80ySeXdA85S6P9Qh9W2spZ51RouXx+kEDD4CwqPfbvmz1pw4xxzhxX5Bxc&#xA;XFLYGnv35Y+RfzR0DXri881+af03p0lq8MVp6s0nGZpI2WSkiqNkRh9OaLW6rBkgBjjwm+4D7nMx&#xA;Y5g7m3p2axyGGfmF+U3k/wA82pGq23paii8bfVIAFuEpWgLU+NN/st9FDvmZpddkwnbePc1ZMMZ+&#xA;95R/iv8AMz8lbm20/wAzMPMvk2Z/Ssr5XpcIBvxXmSwKr/ut6r2Vxm28HDrAZQ9OTr+P0uNxzxbH&#xA;cNSeb/zJ/Om9uNM8pk+XPJ0Lelf6g7D13DD7L8DyJZf91oafzNTEYMOjAlP1ZOn7P1qZyymhsHrH&#xA;5d/lN5R8i2gXS7f1tRdaXGqTgNcPXqAeiJ/kr9NTvmq1euyZjvtHucjHhEPezPMJuePedvy3/OXV&#xA;fNF/qGg+c/0ZpM7KbWx9a4X0wI1VhxRSoqwJ2zc6fWaaMAJQuXuDizxZCbB2eNfm7F+Z3lQQaDr3&#xA;nKXV21SJmm0+GedgIQwCmVXC7OwIUd6HNtopYcvrhDhrrQcbKJR2JeieSv8AnHD8+9H0SJtG83Q+&#xA;XlvlS5udPinuonSR0Hwy+nHxLqPhO5zYtD2r8mvJH5m+V/0x/jjzN/iL659W/R/76eb0PS9X1f75&#xA;Vpz5p08MVel4q7FXYq7FXYq+Xv8AnNjya81joXnG3Sv1Vm0y/YCp4SEy25PgquJB82GKva/yY87J&#xA;5z/LXRNbaTneNALfUfEXVv8Au5SR25leY9mGKs2xV2KrZJI4o2kkYJGgLO7EBVUCpJJ6AYq+aPzm&#xA;/wCctrTTWn0L8vmjvL1ax3GvOA9vEehFsh2lYH9tvg8A1cVeMfl95AvPzCvLrzP5l1SW6iNwUueT&#xA;tJdTyqqsQ7tXgvFgPGmwp1zS9rdrflqjEXMj4OZpdL4m5Oz3O18seXrXSP0PDp0C6ZSjWhjVkb3c&#xA;NXk3ud842etzSyeIZHi73bDDAR4a2eaeb/yBsLlmvPK9x9QuQeX1OYs0JPX4JN3j/EfLN9ovaIj0&#xA;5hfmP0j9XycLNoBzh8noHku+1y50OKLXrV7XWLT9xeB6FZGUCkyOvwsHG549DUds03aOLHHJxYiD&#xA;jluPLy8v1OXp5SMakPUE9IBBBFQdiDmCDTe841/8pLaHW7bzL5U42OqWkyzvYfZt5+JqyrT+6LrV&#xA;f5fl1zoNL21xQOLPvGQri6j39/3+9wMujo8UOY6PSB06U9s54uewnzt5H8z69qsV5pXme60W3jgW&#xA;F7WAyhWcO7GQ+nLGKkMB07Zt9BrsGGBjkxiZvnt5d7iZ8M5m4ypj/wDyqbz9/wBT/f8A/BXP/ZRm&#xA;d/K+k/1CPyj+pp/K5f55+15z518keZ/y91G01W01SZ2nLiPVrYyW8qTMDzQurFgXQnfl8Qrm90Pa&#xA;GLVxIrl/CXCz4JYiHv8A+Qeia/NDH5tufO155k0u+s3gGm3Tzt9XufUjZuQkmlUPHwZdh0NQaHfV&#xA;9qTgP3YgIyB57bhv04PO7eyZp3KYZ+afm/zN5Z0KGby5okmtanezC1gVAXSF3UlXkRPjYbdqDxYd&#xA;83Q6eGWR45cIG7TmmYjYMC8p/kVrGu6ovmj81b1tV1Njyi0YODBEOoWQp8FB/vuP4fEtXM7P2nGE&#xA;eDAKHf8Aj7y1QwEm5orzX+Rd9pepP5n/ACuvm0HWlq0mlhqWc46lFBqqV/kYFP8AVyODtMSHBnHF&#xA;Hv8Ax9/NM8BBuGxZB+VP5j+ZPMs9/ovmbQJ9J13R1Q3s3ErbPzNEoGPJWehIA5KQKhu2Ua7RwxgT&#xA;hK4yZYcplsRuHo2a1yHh35u+SvN1nNrXnD/lYl/omiIFli0yB7gBSEVFiiC3EacpHGwAG5zd6HPi&#xA;lw4/DEpd+3z5OJmhIXLi2eW/lJ+UXnn829Svtdl1ue0XTjGo127MtzM9ytDHHG5dXrGg5E8vh+Hx&#xA;zo4QERQFBwSSeb2z/oXX86P/AC8Gq/8AI2+/7Kskh6L+UP5dedPJv6W/xN5wu/Nf1/6v9U+tvO/1&#xA;f0fV9Th68s3956i1pT7OKvRcVdirsVdirsVY/wCf/J9l5x8nar5bvKLFqMDRpKRX05R8UUlP8iRV&#xA;b6MVfLf/ADiz50vvJX5han+XXmGtsmoztDHE/SLU4Dw4jt++Qca9yEpir7ExVK/MnmbQvLOjXGs6&#xA;5eR2Om2q8pZ5TT5KoG7M3RVUVJ6Yq+M/zS/PHzr+bWrnyv5Vt5rPy67fDZoaS3CqaerduDRU/wAi&#xA;vEd+RplWbNDFEymaiGUIGRoc0Nc/846uugI1vqXPX1BaRGFLVtv7tTTmtP5z18BnOw9pInLRj+77&#xA;+vv/AB9rsD2eeHY+pV/Io6rofmDWPK2rwSWlzJEl3FBIKCsbem5UjZuYddxUHjke34xy4YZYGwDW&#xA;3n/YuhJjMxL2rOSdq7FXYq7FXYq7FXYq7FUt8w6Bp2v6Pc6VqCc7a5XiSPtIw3V0J6Mp3GZGl1M8&#xA;GQTjzH2+TXlxicaLxryB5w1r8nPPM+i63yl8v3rKbrgCVKE0ju4V8R0ZR13HUDO3ywx67CJw59P1&#xA;H8ebpgZYZ0X1xZXlpfWkN5ZyrPa3CLLBNGQyOjiqspHUEZzE4mJo8w54N7q2RS7FXYq73xVTuLi3&#xA;treS4uJFht4VMk00hCoiKKszMdgAOpwxiSaHNBNPlfzv5j8wfnh+Yll5O8qBhoVtKTFKwIQqvwzX&#xA;047IgNEB33p9p6Z13Z2iGGNn6zz/AFOtz5eM+T7B8j+TdG8m+V7Hy7o8fCzso+Jc/blkO8ksh7s7&#xA;bn7htTNi0J9irsVdirsVdirsVdirsVfLP/OXf5WXENxb/mXoKNHNCY4tbMNVdWQhbe7BG9RtGx/1&#xA;PfFWefl3/wA5I+VdQ/KqTzN5mu0ttV0YLbavarT1Z7gqfSaCPbl9YCkgdFIb9la4q+cvNPm3z/8A&#xA;nr5uCUNnolo1YLRSxtrOIkgSSdPUmYd+p7cV6Yms1mPTw4pn3DqW3FhlkNB695O8l6J5U00Wemx/&#xA;vHAN1duB6szDux8B2XoM4LXdoZNTK5cug7vx3u7w4I4xQT/MFvUJbGzluYbqSFGubfl6ExA5oHFG&#xA;AbrQjqMsjmkImIPplzDEwBIPUNahew2Nhc3s54wWsTzSt4JGpZj9wxw4zOYiP4iB81nLhBPc8w/J&#xA;Tzn5v8y3mqHV7oXFlaIhjHpojLJKxIAZQtQFQ9a50XbujwYYRMI8MifsH4DgaLNOZNmwHq+cy7F2&#xA;KuxV2KuxV2KuxVjXnzyLpnm/SDZ3P7m7hq9leAVaJyO/ijftL/EDNj2d2jLTTsbxPMfjq4+o04yD&#xA;zeb/AJZ/mj5g/KrXZPKnmyKSTQS9QFq5t+Z/v7c/txP1ZR8x8VQet1Gmx6vGMmM+r8bF1UJyxS4Z&#xA;PqrTNT0/VLCDUNOuI7qyuVDwXETBkZT3BGczkxygeGQohzgQRYRWRZOxVSurq2tLaW6upUgtoVLz&#xA;TSMEREUVLMxoABhjEyNDcoJp8v8A5n/mrr/5n65D5E8hQTTadcy+kxQcZL1lNeTV+xbpTl8VNvia&#xA;nTOp7O7OGL1S+v7v2uvz5+LYcn0j+SX5N6V+Wvlv6uCl1r96FfV9RUGjMKlYoq7iKOu38x+I+A2z&#xA;jPR8VdirsVdirsVdirsVdirsVSDz3rvlfQ/KWp6h5oaMaGsDx3kUgDCZJFK+iqEjm0leIXvir81d&#xA;SfTpdTupdPhkt9MedzawyMJJI4WYmNGeihmCbV74q+q/y8tfLEHlOyPlsV06VefqGnqvJ0czH/fl&#xA;RQ+HQbUzzrtWeY5z4v1D5V5eTv8ATCAgOFkma5yHYq7FWIfm3qBsfy81mRftSxLbge08ixN/wrHN&#xA;r2Jj4tVHys/Z+txdZKsZSD/nH3TRb+S5rwj4767kYH/IjVYwP+CDZm+0mQnNGPQR+/8AAauz4+gn&#xA;zenZzrnuxV2KuxV2KuxV2KuxVjnnbyLovm3Tfqt+np3MYJtL1APUiY+Feqn9pe/zocz9B2jk00rj&#xA;vHqPx1aM+njkG/N4/ovmf8xfyX1w2rr9b0W4fkbVyxtLgDq8T0Jikp12r4gimdkPA12PiHP7R7/x&#xA;7nUETwyovpX8vvzc8m+eLZf0ZdCDUgKzaVcEJcKR1KitJF/ykr70O2aHVaDJhO4uPf8Ajk5ePNGX&#xA;vTXzl578seTtMOoa9eLboa+hAPimmYfsxRjdj+A7kZVp9LPMaiP1Mp5BEbvmXzJ54/Mb87vMcflj&#xA;y1ZyQ6SzhksENFCKf96L2YbcV60+yDQAM1Cep0eghgF85d/6nX5cxn7n1H+S35IaB+Wmkkxlb3zD&#xA;eIo1LVGHyJhgrukQbfxbqewGe0vSsVdirsVdirsVdirsVdirsVQup6np+l6fc6jqNwlrY2kbTXNx&#xA;KeKJGgqzMfYYq+HfzQ/MTzL+dvnmHSNFR4PLtm7fo+2eoUIKh7y5pX42BoB+yPhG5JajU6mGGBnM&#xA;7BnjxmZoPQ4Pyv8AK8fk1vK5i5W8g5yXVAJjcU2nr/MO3am3TOGl2xmOfxfs6V3ft73dDSQ4OH7X&#xA;kehaz5g/KfzbLpWqK0+jXLB5VQfDJGaqlxDU7MKfEv0HsR0uowYu0MAlA+ocvI9x/HmHXY5ywTo8&#xA;n0Fp2o2OpWMN9YzLcWlwoeGZDUEH/Pcds4jNhljkYyFSDuYTEhY5KzTQoaPIqnwJAOCOOR3AKmQH&#xA;VyzQueKyKx8AQTiccgLIKiQPV5t/zkDctD5FijHS5voYm37BJJP1x5vPZwf4Qf6h+8OH2h/dj3p3&#xA;+UNt9X/LnRkoQXjklNRQ/vJnf9TbZjdtyvVT+H3Bs0Y/dBmOalynYq7FXYq7FXYq7FXYq7FUHq+j&#xA;6ZrFhLYanbJdWkwo8Tjb2II3Vh2I3GXYNRPFLigaLCeMSFF4R50/JTXdCnOq+VpJby1ib1FjjJF5&#xA;ARuCvGhenYr8Xt3zstB25jzenJ6Z/Yf1fF1OfRShvHcJFJ5F/M7zRY3PmTUI7m8eKMFHvZHa6mRe&#xA;0SvV2CjcdK/s1OZsu0NNimMVgHy5D39zQMGSQ4qfTP8AziV518hXnlX/AA3p1lBpPmi0XnqUIr6l&#xA;6F2+sq7lnfr8SV+A9AFIzYtD6BxV2KuxV2KuxV2KuxV2KuxV2KvjX/nI7847/wA+eYk/L/ye7XGj&#xA;QTiO4kgNRfXSnswNDBEeh6Egt0CnIZMkYRMpGgExiSaDJvy88h2PlDRRbJxl1G4o9/dAfbcDZVPX&#xA;gn7P3988/wC0+0Zamd8oDkP0+93um04xx82vOP5meVvKoMV7OZ7+lVsLejy+3PcKg/1j8q4dF2Tm&#xA;1G4HDDvP6O9c2qhj25l47r/mfzt+ak6aXovlxrmO3f1I47SF7meOuxLzAURT32UZ1/Z/ZcNNdEkn&#xA;n3fJ1OfUnJzDFvNXl7z35Lu/8P8AmCG60uQoLhbNpaxMsg+2nps0TVpQkHqKHcZseEXdbtFsbySH&#xA;Yqu9ST0/T5H068uFTx5UpWnjir2HyZ+T/wCfGr+U9O1/yreSS6VdKzWkEOo+iQI5HRlMcjxoPjjI&#xA;pXKMmmxT+qMT7wGcckhyJCOudA/5yq0IfvtM1G4VDuscNvqFadqwidj07HMXJ2Tpp84D4bfc2x1W&#xA;QdUvl/Oj8y9CmEPmHQ0iPQpc209pKT1/aNP+FzCyezunly4o/H9bbHX5Bzop1pv/ADkboslBqWkX&#xA;FsfG3dJx8/j9HNfl9mZfwTB94r9bkR7RHUMv0r82/wAvtSoserx28ndLoNb0/wBlIFT7mzWZuxdT&#xA;D+HiHlv9nP7HIhrMcutMst7i3uIlmt5Umib7MkbBlPyIqM1s8coGpAg+bkxkDuFTIJdirsVdirsV&#xA;dirH/PXm608q+XZ9Umo8391ZwH/dk7A8V+Qpyb2GZ/Z2iOoyiP8AD19zRqMwxxvq+cfL9n+Yf19/&#xA;Omi29ytzYytfnU41CgPyLOyhqCTqeSqDt1FM7+WoxYyIGQBOwDoxjlIE0+1/yK/O7S/zJ0IpP6dp&#xA;5nsVA1LT1OzrsPrEAO5jYncdVOx/ZJyGt6jirsVdirsVdirsVdirsVfO/wDzlT+dh8vaa/kfQJ6a&#xA;7qUf+5S4jPxWtrINoxTpJMD8wm/7SnFWA/k3+W48v6eNZ1OL/c1ep8EbDe3hbfhQ9Hbq3h08a8V2&#xA;52n4svCgfRHn5n9Q/HR3Gi03COI8yl/5qfm5LYTt5d8sP6mqM3pXd3GOZiY7elFStZa9T+z0+10v&#xA;7I7G4gMmUbdI/pP6mGr1demPzZX+UH/OJcl6I/MP5lNKZJj6sehB2EjV35XkoPKp68FNfFuq51wF&#xA;OqfT2j6Jo+i2Een6RZQafYxf3dtbRrFGPfigAqe5xVj35mflh5Y/MLy++k61CBKgLWGoIB69tKf2&#xA;o2PY0HJejD6CFXwV+Z35WeaPy715tL1qHlbyFmsNRjB9C4jBoGU/st/Mh3X5UJVYdirsVfb3/OHX&#xA;mKPUfyrfSS9Z9EvpovTrUiK4/wBIRvYM7yD6MVe7YqsmhhniaKaNZYnFHjcBlI8CDtirDde/JX8q&#xA;Ne5HUvK1g0j15zQRC1lJPcyW/pOT9OKvMfMn/OF/5eXwZ9D1K+0aY/ZRit3AP9g/CT/krirzTVv+&#xA;cTvzh8tSPdeVNVh1EDoLS4exuWp4rIVj/wCSpyGTHGYqQBHmmMiNwxq58/fnT5ImW382aVMYgeIO&#xA;oWzRch0pHcRhUfp1+LNVn7C02TcDhPl+rk5UNbkj1tlGgf8AOQHlS94x6rBNpUx6uR68P/BIOf8A&#xA;wmaPUezmWO+MiX2H9X2uZj7QifqFPRNK1vR9Wg9fTL2G9iHVoHV6V7NQ7H2OaTPpsmI1OJi5sMkZ&#xA;cjaNyhm7FXYqlGq+VNC1fULe91S2F69opW2hn+OFCxqzekfhLGg3avTbMzDrsuKBhA8N8yOfz/U0&#xA;zwRlKzumyqqqFUAKBQKNgAO2YhJJttp84edta0nyl+Y0Gu+Qr/0NQtH9W4WAfuI5wfiRSDxdJBUO&#xA;lOPUd6D0PsqWc4R4w36d5Hm6HUiAn6H2P+TH5xaN+ZXlwXcIW11u0ATVdM5VMbnpJHXcxP8Asnt0&#xA;PTNk470PFXYq7FXYq7FXYqwf84fzP078uvJtxrU/GXUJawaTZMf765YbVA34IPic+G3UjFXyR+U/&#xA;lPUvNnmK589+ZXa65XDzRPKB/pF2Wq0h7cIz0AFK7D7NM5/tztLwo+HA+uXPyH6z+OjnaLT8R4jy&#xA;DOPzf89t5Y8v+hZScdX1HlHbEdY0A/eS/MVovufbNJ2J2f4+TikPRD7T3fr/AGubrM/BGhzKf/8A&#xA;OK/5HQWtjb/mF5ltxLqV3+90K2mBPoxHpdMD1kk6x+C/F1O3dukfTGKuxV2KpL5v8neXfN+hz6J5&#xA;gs0vLCffi2zxuPsyROPiR17EfqxV8N/nR/zj/wCZfy5umvYeep+VpXpb6mq/FFyPwx3Kj7Ddg32W&#xA;7UO2KvKcVeu/84z/AJoQeRvPwi1KX0tC11Vs7+RjRIpA1YJ29kZipJ6KxPbFX3sCCKjcHocVbxV2&#xA;KuxV2Kqc9vBcQvBcRrNDIOMkUihlYHsVNQcVeX+cP+cZ/wAovM3OQ6QNIvH/AOPrSmFsQf8AjDRo&#xA;D/yLrirw/wA0f84fef8AQZ21DyRrKal6dTHEWNhejwVH5GJvmXT5ZGURIURYSCRyYf8A8rL/ADW8&#xA;jXo03zjpUslK8Y7+JreVlXasU6rxdf8AKo3zzT6rsHBk3j6D5cvl+qnLx62cee7P/LX5zeSdbKxS&#xA;XJ0y7bb0byiKT/kygmP5VIPtnO6rsLPi3iOOPlz+X6rc/HrYS57FnSsrKGUhlIqCNwRmmIINFywW&#xA;8CWLebfLnmTzCG0+PVV0jRm2n+rK0lzOpG6s7FFjXtRa17nembXRavBp/VwmeTz2A93P5uLmxTnt&#xA;dRSjR/yO8g6cVea2l1GVTUPdyEiv+pH6aEfMHL83tBqJ/TUfcP12whocY57sS80+XfMH5YeaLfz3&#xA;5JdorSKStxbAExxBz8UUigjlbydP8n58Tm97H7WGccE/7wf7L9vf8/dhavS8BsfT9z6x/Kf81NB/&#xA;MbyzHq2nEQXsVI9U0xmDSW03genJHpVHpuPAggb1wmbYq7FXYq7FVK6ure0tprq5lWG2gRpZ5nIV&#xA;ERByZmJ2AAFTir4W89eZtV/PD81xHas8Xlyw5RWXb0bJGHqTsDt6s7U/4Vei1zE12rjp8Rmfh5lt&#xA;w4jOVB7Zp2n2enWMFjZxiG1tkWKGMdAqig655xmyyyTM5G5F6CEREUOTxPS9Gb81/wA/YNJlLNo1&#xA;tMUuKbUsrEky0I6es9QD25jPQ+zNL4OCMevM+8/inQ6nJxzJfdcUUUUSRRIscUahY41AVVVRQAAb&#xA;AAZntC/FXYq7FXYqo3dnaXtrLaXkKXFrOpjnglUOjowoVZWqCD74q+T/AM7f+cTri0a48wfl7E09&#xA;pvJdeX6lpY+5NqTu6/8AFZ+Ifs16BV8xyRyRSNHIpSRCVdGBDBgaEEHoRiqLv9b1nUEjS/v7m7SF&#xA;VjhWeV5QiIOKqocmgUbADFU/8k/mp588l38N1oOrzwxREcrCR2ktJFH7MkDHgRTaoow7EYq/Qb8v&#xA;POFv5y8laR5mt4/RXUoBI8NeXpyqxjlQNtULIjCuKsixV2KuxV2KuxVB6rpGlavZSWGq2cF/ZS7S&#xA;W1zGssbfNHBGKvD/AD5/zh75B1r1Lny1PL5cvmqREtbizY/8YnYOlT/K9B/LirxDWPy7/Pr8pmea&#xA;GKW90OI8nuLOt5ZcQakvERzhHixVfnmJqdDhzj1xvz6/Ntx5pw5FNvKv/OQWi3fCDzDbNp0/Q3UI&#xA;aWAmnUqKyJv2+L55zWr9nJDfEeLyPP58vudhi7QB2kKepWGo6fqNst1YXMd1bP8AZmhcOp+lSc57&#xA;LhnjPDMGJ83YRmJCwbROVMlk0MU8LwzIJIZVKSRsKqysKEEHqCMlCZiQRsQggEUXiepWHmf8m/OM&#xA;PnDyiS+jSH07i3erxhHYFrafuY2oOD9QadwCe77J7UGojwy2yD7fN0mq0xxmx9L7C/Lr8wvL/n3y&#xA;zBr+iyExSfBc2z/3tvOAC8Ug8RXY9CNxm5cRk+KuxV2Kvm7/AJzA/NOTTNHg8haVKRf6ugn1ZkJ5&#xA;JacqJDt3mdTyH8op0bFUg/KjyOvlfy2n1iMDVr8LNfsaVXb4Ia/8Vg7/AOVXOB7Z1/j5aH0R5fpL&#xA;vNJg4I2eZZRr1/8Ao/Q9Rv8A/lktZp/+RUZf+Ga7SwE8sInkZAfa35ZVEnyYp/zg/o0Ump+atccV&#xA;mghtbKJu/Gd3ll/GBM9PecfWeKuxV2KuxV2KuxV2KvOfPf5Aflj521UatrGmtHqRFJ7m0kMDTdKG&#xA;Xjs7CmzUr+GKsb/6FD/Jv/lmvv8ApLb+mKu/6FD/ACb/AOWa+/6S2/pir0/yZ5Q0byf5as/LmirI&#xA;mmWPqfV1lcyOPWleZ6sevxyHFU7xV2KuxV2KuxV2KuxV2KvMfzC/5x1/LLzr6lzcaf8AovVn3/Se&#xA;ncYJGbrWSOhikr3LLy9xir5080f846/nH+XVzJqnlK6k1nT1NTLpwYXHFenrWR58/kvMZTmwQyx4&#xA;ZgSDKEzE2DSH8r/85ABZRZea7IwSoeD3lup+FgaH1YT8Qp34/wDA5zes9nBzwn4H9B/X83Y4u0Ok&#xA;w9b0nWdK1e0W80y7iu7ZukkTBgD4Hup9jvnM59PkxS4ZgxLsYZIyFg2q31jaX9pNZ3kKz2s6lJoX&#xA;FVZT2ORxZZY5CUTUgmURIUeTxy2svzN/KLzbcaj5Eil1DS9RRkNuIZLqMqDVUnij35Rk/A+3z3YZ&#xA;3Wg7YxZYXOQhMc7NfK/wHS59JKMthYZVB/zlL+eWlMZNc8owTWiEmRzaXlsaClaS83jp/sTmxx6r&#xA;FM1GUZe4guPLHIcwQ9C8jf8AOYH5ea7NFaa9bzeW7uUhRLMwns+RNADOgVl+bxhR3OXsHulvcW9z&#xA;BHcW0qTW8yh4Zo2Do6MKqysKggjoRir849U/MZtX/M6688azZnUTNdNcxWTSekFVPhtk5cZPhhVV&#xA;FKb0yjU4pZMZjE8JPVnjkIyBItnP/Qyn/fuf9Pv/AF4zm/8AQx/tn+x/487D+Uv6P2/sQWuf85A/&#xA;pXRNQ0z9A+j9etprb1vrfLh60ZTlx9Fa05VpXLcHs74eSM+O+Eg/T3f5zGev4okcPPz/AGPU/wDn&#xA;B7UUbTvNmmkgPFNaXCjuRIsqH7vTH350zrn1DirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV&#xA;dirsVdirsVdirBPzB/JP8uvPivJremKmpFaJqtofQul2oKuopJTsJFYYq+afOP8AzjN+afkK7fWP&#xA;JF7LrNjGeX+iVjvVUb0ktqlZh/qcq/yjK8uKGSPDIAjzZRkYmwl/lf8AP1opf0f5vsmgnjb05LyB&#xA;CCrA0PqwH4lI78f+BzmtZ7OA74T8D+g/r+bsMPaHSfzet6TrOlavZreaZdR3ds3SSJgwB8D3B9jv&#xA;nMZ9PkxS4ZgxLsoZIyFg2jMpZsJ87flR5Z8zxSTLCthqxBKX0Kgcm/4uQUEg9/te+bjQds5cBAke&#xA;KHcf0H8BxM+kjPlsWPfkJ+aPmL8t/PS+QfNEjHQbycWyo7FktbiZh6U8LH/dMpYcxsN+WxBr3OHN&#xA;HLATibiXSzgYmjzfWP8AyrzyB/1LOlf9INt/zRlrF3/KvPIH/Us6V/0g23/NGKu/5V55A/6lnSv+&#xA;kG2/5oxVHaV5Z8uaRJJJpOlWenySgLK9rbxQMyg1AYxqtRiqZYq7FXYq7FXYq7FXYq7FXYq7FXYq&#xA;7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqwT8xvyU/L/AM/xFtbsBHqQXjFq1pSG6XsKuARIB2EisB2x&#xA;V856t/ziZ+bHl/VpT5M1qO4sZhtcpcPYT0B2SVFJBp4hj8hleTFCYqQEh5i2UZGPI0of9C+f85Nf&#xA;9XeT/uLS/wDNWUfkNP8A6nD/AEo/Uz8ef84/N3/Qvn/OTX/V3k/7i0v/ADVj+Q0/+pw/0o/Uvjz/&#xA;AJx+aX3n/OK/576ldpcalLBdTgKguLi/MzqoNQAzVagqTTMjHijAVECI8tmEpEmybf/Z</xapGImg:image>

+     <xapGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA

+AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK

+DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f

+Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAuAEAAwER

+AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA

+AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB

+UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE

+1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ

+qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy

+obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp

+0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo

++DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7

+FXYq7FXYq7FXYq7FXYq7FXhH/OYHnWfQ/wAurfRLSUxXXmK49GQqaN9VtwJJqH3cxqfYnFXhP5Y/

+85O+f/JU0enaw769okbBJLS8ZvrUKg0IhnarDj/I9R2HHFX2F+Xn5neT/P8ApP6R8u3glKAfW7KS

+iXNuzdFljqaezCqnsTirK8VdirsVdirsVdirsVdirC/zM/Nvyd+XemC71255Xcqk2WmQUa5nI2+F

+CRxUd3ag+nbFXx1+Zf8Azkn+YvneaW1tLh9C0NgwXTrB2V3Sm/rzji8m3UDitP2cVfV//OOfmabz

+D+T3l+6uHMl1aRPYTsxqSbVzEhJ7kxKhxV6VirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd

+irsVfHn/ADlxdSa7+bvlvyvGx4RW0EVARtNfXJVqf7BY+uRlKgT3JAt5r/zkD5ZGgfmfqSRR+nZ6

+gsd9agdOMq0f/ksj5h9nZvEwgnmNi2Z4cMiw/wAqebPMHlTXLfW9BvHstQtjVZEPwstQWjkXo6NT

+4lOxzOan3v8Akl+cel/mX5a+tAJa69ZcU1fTlJojGvGWLluYpKbV6GqmtKlV6NirsVdirsVdirsV

+eWfnr+eGl/lroywwBLzzPfox02wJqqL0+sT03EanoOrnYdyFXwh5i8x655j1i41jW7yS+1K6blNc

+SmpPgABQKo6BVFB2xVnf5Q+SjrWh+d9Yli5w6XolylsadbqSNnTj8kiYf7IZg6zUeHKERzlIfL8U

+3YoWCe4Pff8AnCfVTN5D1zTCamz1P11HcLcQIAPlWE5nNL6KxV2KuxV2KuxV2KuxV2KuxV2KuxV2

+KuxV2KuxV2KuxV2KvjD8wm/Sv/OX8UTGsdrqGnCMNUU+rW0Mp6f5ammY2sNYZ/1T9zZi+oe9m/8A

+zkx+Xc/mPytFrunRepqehc3ljUVeS0cAyAU6mMqHA8OXfNB2PqhCfAeUvv8A2uZqcdix0fIedQ69

+m35OefrryN+YOla2kpjsjKttqqDo9nMwEoI78ftr/lKMVfaeqf8AOSH5KaaSs3meCZx0W1inuanf

+YNDG69vHFWM3v/OYn5QW5YQ/pK8ArQwWqitPD1pIuvviqVT/APObH5cKR6GjaxIP2i8dqhB9qTvi

+qmP+c2fIFd9C1Wnfa2/6q4qmFv8A85n/AJUSvxksdZtx/NJb25H/ACTuHOKp3bf85XfkpPBI7avN

+BIisywS2lwGcqCeIZUdKmm1WGKvijzz5x1bzl5q1HzFqjlrm+lLrHWqxRDaOFP8AJjSij7+uKpNb

+W1xdXMVtbRtNcTuscMKAszu54qqgbkkmgwE1uVfbHkL8uk8o/lTPoMiK+o3drPNqZHRrieIhlr4I

+tEB9q5yWo1fi6gS/hBFfN2UMfDAjqwT/AJwdvyt/5usC20sVlOq77em0yMR2/wB2Cudc619ZYq7F

+XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXxZKTJ/zmFc+oedNTmA5b/ZtG49fCgpmH2h/

+cS9zbh+sPqDrsc4t2r57/Nf/AJxkGo3c+teSTFb3ExMlxo0hEcTMdybd/spU/sN8PgQNs3+i7Xoc

+OX5/rcLLpusWIaF/zif56vFWTVr6y0pG6xgtczL81QLH90mZWTtnFH6bk1x0sjz2Z1pf/OIvlOIL

++lNbvrthSv1dYrZSe+zC4ND88wp9uTP0xA9+/wCptGkHUsms/wDnGf8AKS3AEunT3dOpmupxXam/

+pNFmPPtjOeRA+H67bBpoPDv+ch/yt03yXrdjeaFbG30HUouCQ8pJBFcQ0DqXkZ2+NSrCrfzeGbns

+vWHNAiX1BxdRi4TtySH8jfJdn5u/MOy07UIfrGl28ct3fw1IDRxrxUEqQaGV0By7X6g4sRkOfRhh

+hxSp9N3X/OO/5P3FSdBETGnxRXN0nT/JEvH8M50dq6gfxfYHOOnh3JDqP/OKn5a3NTazajYt+yIp

+0dfpEsbn/hsvj21lHMRP497A6SPmwzW/+cQr9A76H5himO/CG9haL5AyxGT/AIhmXj7cifqiR7t/

+1NUtIehZh+S3/OP8Xk+5GveYXivNfTkLSKIloLYGqlwzBecjL3p8P45i9odqeIOCH09fNtw6fh3P

+N7DfIz2VwijkzRuFA6klTmpxmpD3uRLk+bf+cJrrj+Yet2tT+90hpeP7J9O5hWp9/wB5tneunfZm

+KuxV2KuxV2KuxV2KuxVZLNFDG0srrHGu7O5CqB7k4qks3nzyNC5jm8xaZHIOqPeW6nf2L4qmFhrW

+j6iK6ff294KVrbypLt1r8BPjirAvzb/Pnyf+WrW9rqKS6hq90vqRaba8eaxVp6krMQEUkEL1JPbq

+cVYFof8Azmp5BupVj1fR9Q0wNsZo/SuY1/1qGN6fJDir2Xyf+Yfkrzjam48taxb6iqgGSKNisyA9

+PUhcLKn+yXFWRYq7FXYq7FXxRrBNj/zl/NVwC+rL8XtcWw+Hf/jJTMXXC8M/6pbMP1h9SZxLtnYq

+7FWG+afzg/LnyvdNZ6vrUSXqGj2sKvcSofB1hV+B/wBamZmHs/NkFxjt8mqWaMeZRPk78zvI/nF5

+ItA1RLm5hHKS1dXhmC1pyEcoRmXputRkdRosuLeQ2TDLGXJCfm/5JXzj5D1HSo05X8a/WtNPcXMI

+JUD/AFxVP9lk+z9R4WUE8jsWOaHFGnl3/OI/lpodN1zzFMlGuJUsLcsKELCPUlpXsWkQfNc2Xbmb

+eMPj+r9LRpI8y+hc0DmuxV2KuxV2Kvl//nClHP5oas4B4Lok6luwLXdqQPpoc9AdK+08VdirsVdi

+rsVdiqXeYPMOi+XtIudY1q7jsdNtF5z3EpooHQAd2ZjsqjcnYYq+VfPf/OV3nXzNqp0D8stPlto5

+mMcF0IfrGoT+8UIDrGD8mbvVcVSqz/5xn/Pjzs66h5t1RbUueX+5W7kurgA/yxx+sq/6pZaeGKsj

+h/5wanMYM3nNUk7qmml1/wCCN0n6sVQt7/zhDr8B56Z5stppEIMZntZLfcb1qkk9KHFXzr5mtdUs

+tfv9O1S5a7vtOuJbKaZndwWt3MZ4mSjcartUDFUsxVFabqeo6XfQ3+m3UtlfW7c4Lq3dopUbxV1I

+IxV9Sfkr/wA5aNcT2+gfmG6K8hWO18wqAi1OwF2q0Vf+Mi0H8w6tir6lVlZQykMrCqsNwQe4xVvF

+XYq+Kfzzro3/ADlLa6oxKJLdaReFiaApGsMLeG1ISMqzw4sco94LKBogvqPOEdw7FXkf55/mBrlj

+Jp3kbykX/wAVeYSFE0Zo8FuzFOSt+wzlW+P9lQx2NDm27N0sZXlyfRFxs+Qj0jmUd5B/IHyP5bsI

+31Oyh1zWnAa6vb1BMnqHciKKSqKAehI5e+Q1XamTIfSeGPlzTj08YjfcsJ/PDy5pXkHX/LH5geW7

+WPTGhvlt9Rt7RBFHKpBk+wgCjnGkiPQbg5m9m5jnhLFM3s1Z4iBEg+hOu4zn3NQOkaLpuj20ltp8

+IghlnnunRe8tzK0sh/4JzQdhtlmXLKZuXdXyYxiByR2VsnYqxjV/zO/L3SJWh1DzDYQzoaPD66PI

+p/ykQsw+kZlY9Dmnyifu+9qOWI6pvoOvaRr+kwato9yt3p1zz9C4UMob03MbbMFOzoR0ynLiljkY

+yFEM4yBFhV1WVYdLvJWJCxwSOxHWioTjhFzA8wsuRfPn/OEVoX83eZLzekOnxQnpSsswb/mVneOn

+fYOKuxV2KuxV2KqF9e2lhZT315KsFpaxtNcTuaKkcYLMzHwAFcVfFHnPzR50/wCchPzJi8veXlaH

+y7aO5sYnqsUUCkK97dU/bYdB2qFXcklV9U/lj+UnlH8u9IWz0a2WS+dQL7VpVBuLhh1q37KV+yg2

+Huakqs1xV2KuxV8v/nf/AM4patrnmG+80eSp4Xn1GR7m/wBIuW9ImdyWd4JSOH7xjUq9KGvxb0Cr

+5/1j8mPzX0iRkvfKepgL9qSC3e5jG9P7yASJ1PjiqRjyb5vMvpDQ9QMtePpi1m5culKca1xVPtG/

+JT82dYdUsvKepUf7MlxA1rGe395cekn44q+zf+cffKv5m+VvJ50bzvPbzRwFf0RFHK01xbxU+KCV

+6cCqmnDizU3FaUAVeo4q7FXx5/zmxpD2vnTy7rcdUN5YPbh12POzmL1qO4FyuKsl/Lz/AJyc8ra2

+sNj5mUaHqZAU3TGtnI3Qnn1ir1o/wj+bOY1XY8474/UO7r+1z8epB2Oz2iKWKaJJYnWSKQBkkQhl

+ZTuCCNiDmnIINFygVGXTNOmvYb6W1hkvbbkLe6eNWljDgq3ByOS1UkGhwjJIDhs0ei0LtE5FLxD/

+AJyycP5F0ezQcp59WjaNdt+NvMp/GQZuuxI/vJH+j+lxNWfSPe9rgiEMEcQNRGoQE9+IpmmlKyS5

+QCpgSsllihieWVxHFGpeR2NFVVFSST0AGEAk0EEvn2fVfOv5269e6foN9Jof5e6fIYbm9QMst2af

+ZIBUtyG4QkKqkFqmgzfiGLRQBkOLKfx+C4ZMspobRZzof/OOv5U6VCiyaUdSnUUa4vZZJGb5opSL

+7kzBydrZ5HY8PuDbHTQDP9G0XStE02HTNJtks9Pt+Xo20Qoi83LtQe7MTmBkyynLikbJboxAFBJv

+zO1Aaf8Al35lu60ZNNuljP8AlvEyJ/wzDL9FDizQH9IfYxymol59/wA4P6S0eg+adXI+G6ura0Vv

+e2jeRgP+kkZ2zqX01irsVdirsVdir50/5zJ/MGbSfK1j5PspOFxrrGa/KmhFpAwon/PWWn0KR3xV

+mf8Azjd+WEPkj8vrae5iA17XES91KQijorrWG333HpI24/mLYq9YxV2KuxV2KuxV2KuxV2KuxV2K

+obUdT03TbR7zUbuGytI/7y4uJFijX5u5VRir5U/5yz/MX8tfNfl7S7DQtZh1LW9NvS5W2V3iFvJG

+yyUnC+kfjVPsscVSv8i/yi/LTzn5Ij1XVLSafU4J5rW9C3EkaFlIdCFQrT926980XaOuy4cnDGqI

+vk5eDDGQsvdvKXkby35StXtdBgmtrZ6Vge6uZ4wf5ljmkkRCe5UCuaPPqp5Tc9/gHLhjEeSN8x3+

+o6foGoX2m2hv9QtoJJbWyFazSKpKxjjv8R22yOCEZTAkaBZTJAsPHv8AlcP53/8Altpv+BuP+ac3

+H8n6X/VPti4vjZP5rzz8wfPP5i+bfNvluw1Dyq1rqWjzG+g0ROZmuRVZDVGHPjxgbcDpXNhpdNiw

+wkYy9Mutj8dWnJOUiAQ9D/5XD+d//ltpv+BuP+ac1/8AJ+l/1T7Yt3jZP5rv+Vw/nf8A+W2m/wCB

+uP8AmnH+T9L/AKp9sV8bJ/NYp+ZX5v8A5qXnli40LVfKbaCutAWkdyxlWRwWXnHGrheRdfhI8DmV

+pNBgE+KMuLh9zXkzTIoirR/kbzf+bvlHy1Y+XtO/LedobYENM6zK0kjtyeRzxoOTH6BtkNTp9Plm

+ZyyfaEwnOIoRej+RPO35o6xr62fmPyf+hdNMTub71C1HWnFaV/azX6rS4IQuE+KXds348kyaIZ7q

+jaqthKdKSCS/pSBbp3jhr4uY1kbbwA38Rmux8PF6r4fJuldbPlv8+YvzstdPS483apafoO7nEEVh

+pcjJbl6NIA0bKkjgenWsnKhpnTdnHTH+7HqHfz+f6nAz8f8AFyfQ3/OLHl06N+TWkyOnCfVpJ9Rm

+Hj6r+nEfphiQ5t3GeuYq7FXYq7FXYq+MfzQhXzz/AM5YWmgz1lsLe7sbB4zvW3gRbi5TvSrNLir7

+OxV2KuxV2KuxV2KuxV2KuxV5j59/5yM/K7yb6kFxqQ1TU0qP0dpvG4cMO0kgIij36hn5e2KvAvMv

+/OWP5p+arl9P8laWukxtXiYIzfXvHpUuy+mg+UdR/NkJ5IwFyIA80xiSaDF/+VT/AJo+b7sah5w1

+h1kavx3sz3k617KgYoo9uYp4ZptR7QYIbRuZ8uXzP7XMx6GcuezJYf8AnH3yrBptwjXFxd6g8LrB

+NIwSNJSpCOEQA7NvRmOak+0eQzGwjCxfU11/FOT/ACfEDnZYH+S+sfmZZeajoHlC8htrq6ZnubC/

+K/VnMAPLkrAtyUdfT+Kg8BnSa7HhMOLINg6/CZA1F9k6KdbOmw/pxbZdTp/pH1IyNAW8U9UK9Pnn

+I5eDi9F8PnzdlG63R2VsmndUUu5CooJZiaAAdSTiBaHhP5N8/On5r+bPzEkBbT7dv0do7EGhWgUM

+tRswgjUsP+LM3vaH7nBDCOZ5/j3/AHOJh9UzJ7vmicx2KvEf+clQLS78i63cEjT9O1cC6O3H4mjl

+FR/qwPm77G3GSPUj9f63E1XQvbQQQCDUHoc0jlN4pSXzN5z8q+V7ZLjX9Tg0+OSvpLK37x+PXhGv

+J3pXfiMuw6bJlNQFsJ5BHmXzJ+dn5haf+Z/mby75e8qtLPbLN6EbyI0YluruRI0oh+KigChIHU50

+/ZmilhieL6i4GoyiZ2fbWh6Ra6Noun6PaClpp1tFaW4/4rgQRr+C5s3HR2KuxV2KuxV2KvjfymCP

++c0p/rdK/pTU+POlKfUp/S/4144q+yMVdirsVdirsVdirsVeQfmX/wA5Ofl55MaaxtZv0/rcdVNl

+ZMDEj+E1x8SL4ELyYdxir5W/Mf8A5yD/ADJ88GSC6vjpmjyVC6VYFoYmQ1FJXr6kte/I8fADFXme

+Kvpj8jdTtb3yJBFFGkdxYyyW9zwVU5MDzRzTqSjipPU1zhvaDHKOosk8Mht5d/6/i7rQSBh5h6Fm

+ic12Kvnvz6l35B/Nqz8z2CEQyzLqMSqeIY143UVf8upr7Pnedl5RqdLwS5gcJ/R9n2uj1MPDyWPe

++wdL1Ky1TTbXUrGQTWd5Ek9vKOjJIoZT9xznMkDCRieYc2JsWisgyYZ+b1p5vvfIGqWPlSFZ9Tu0

+9F1LiN/q77TelXYuV+EAkddt6A5vZ8sccoMzsPv6NOYSMdnzl+Wn5m/mVoKR+RtEtNLsrmGWSsOp

+q1vM87t8Su8ssS+p0UKaGgAGdDqtHhyfvJ2fd3fBwseWUfSHq36V/wCcqf8AqzaN/wAGn/ZRms4N

+B/OP2/qci83c79K/85U/9WbRv+DT/sox4NB/OP2/qW83c8o/Mj8z/wAy/MAm8i6zaaZfXU0sY9HT

+Ea4lSdGqqxvFLKvqbFSBXqQc2el0eHH+8jY2693xcfJllL0l9KflXb+bbXyJpVp5riWLV7aIQsqu

+JGMSbRGUio9ThQNQnx70znNccZyk4+R+9zsIkIi2W5iNqB1xdH/RF2+sxQy6XFE8t4tyiyRelGpZ

+i6uCpAAyzFxcQ4D6ixlVb8nzj/zjB5UtfNn5xal5tisltNE0Rpbu1tEUCOOa6ZktYgBt+7j5tt3U

+Z3UIkRAJt1BO77PySHYq7FXYq7FXYq+M/wAyX/wb/wA5b2WsP+7s7q90+7Zz8NILlEt7htqV3EmK

+vszFXYq7FXYq7FWGfmR+bnkn8vrD6xr16PrkilrXS4KPdTdacY6jitRTmxC++Kvjz80/+clPPvnk

+TWVq50Py45KfULRj6kqntcTjiz1H7K8V8QeuKsQ/KyLyvP5wtbTzFbC4trn91bc2IjW4JBj9QAjk

+G+zQ7VIrmB2mcowE4jUh93Vv0wiZgS5Po7zD5J8ta/pa6bf2UfoQrxtWiAjeDbb0io+Hp06eIzht

+N2jmwz4oyu+d7373dZNPCYoh8/effyj17yuZLu3B1DRgSRdRr8cS9f3yD7P+sPh+XTOz7P7Wxajb

+6Z936u90+fSyx78wnP8Azj5r4s/M11o8jUi1OHlED/v63qwA+cbP92YvtDp+PCJjnA/Ydv1NugyV

+Ou99C5xDuWDeefKvnzV9WiufL+v/AKKskt1jkt+Ui8pQ7sX+AEbqyj6M3XZ2t02LGRlhxyvnQO23

+e4eow5JSuJoe8sD81/lL+ZF9pj3Go65Hq7WKPLBbMZGc7VZY+S9WC9O+bnSdsaQTEYQ4OLyAHxou

+Jl0mWrJuvel/5Q/8rK80ySeXdA85S6P9Qh9W2spZ51RouXx+kEDD4CwqPfbvmz1pw4xxzhxX5Bxc

+XFLYGnv35Y+RfzR0DXri881+af03p0lq8MVp6s0nGZpI2WSkiqNkRh9OaLW6rBkgBjjwm+4D7nMx

+Y5g7m3p2axyGGfmF+U3k/wA82pGq23paii8bfVIAFuEpWgLU+NN/st9FDvmZpddkwnbePc1ZMMZ+

+95R/iv8AMz8lbm20/wAzMPMvk2Z/Ssr5XpcIBvxXmSwKr/ut6r2Vxm28HDrAZQ9OTr+P0uNxzxbH

+cNSeb/zJ/Om9uNM8pk+XPJ0Lelf6g7D13DD7L8DyJZf91oafzNTEYMOjAlP1ZOn7P1qZyymhsHrH

+5d/lN5R8i2gXS7f1tRdaXGqTgNcPXqAeiJ/kr9NTvmq1euyZjvtHucjHhEPezPMJuePedvy3/OXV

+fNF/qGg+c/0ZpM7KbWx9a4X0wI1VhxRSoqwJ2zc6fWaaMAJQuXuDizxZCbB2eNfm7F+Z3lQQaDr3

+nKXV21SJmm0+GedgIQwCmVXC7OwIUd6HNtopYcvrhDhrrQcbKJR2JeieSv8AnHD8+9H0SJtG83Q+

+XlvlS5udPinuonSR0Hwy+nHxLqPhO5zYtD2r8mvJH5m+V/0x/jjzN/iL659W/R/76eb0PS9X1f75

+Vpz5p08MVel4q7FXYq7FXYq+Xv8AnNjya81joXnG3Sv1Vm0y/YCp4SEy25PgquJB82GKva/yY87J

+5z/LXRNbaTneNALfUfEXVv8Au5SR25leY9mGKs2xV2KrZJI4o2kkYJGgLO7EBVUCpJJ6AYq+aPzm

+/wCctrTTWn0L8vmjvL1ax3GvOA9vEehFsh2lYH9tvg8A1cVeMfl95AvPzCvLrzP5l1SW6iNwUueT

+tJdTyqqsQ7tXgvFgPGmwp1zS9rdrflqjEXMj4OZpdL4m5Oz3O18seXrXSP0PDp0C6ZSjWhjVkb3c

+NXk3ud842etzSyeIZHi73bDDAR4a2eaeb/yBsLlmvPK9x9QuQeX1OYs0JPX4JN3j/EfLN9ovaIj0

+5hfmP0j9XycLNoBzh8noHku+1y50OKLXrV7XWLT9xeB6FZGUCkyOvwsHG549DUds03aOLHHJxYiD

+jluPLy8v1OXp5SMakPUE9IBBBFQdiDmCDTe841/8pLaHW7bzL5U42OqWkyzvYfZt5+JqyrT+6LrV

+f5fl1zoNL21xQOLPvGQri6j39/3+9wMujo8UOY6PSB06U9s54uewnzt5H8z69qsV5pXme60W3jgW

+F7WAyhWcO7GQ+nLGKkMB07Zt9BrsGGBjkxiZvnt5d7iZ8M5m4ypj/wDyqbz9/wBT/f8A/BXP/ZRm

+d/K+k/1CPyj+pp/K5f55+15z518keZ/y91G01W01SZ2nLiPVrYyW8qTMDzQurFgXQnfl8Qrm90Pa

+GLVxIrl/CXCz4JYiHv8A+Qeia/NDH5tufO155k0u+s3gGm3Tzt9XufUjZuQkmlUPHwZdh0NQaHfV

+9qTgP3YgIyB57bhv04PO7eyZp3KYZ+afm/zN5Z0KGby5okmtanezC1gVAXSF3UlXkRPjYbdqDxYd

+83Q6eGWR45cIG7TmmYjYMC8p/kVrGu6ovmj81b1tV1Njyi0YODBEOoWQp8FB/vuP4fEtXM7P2nGE

+eDAKHf8Aj7y1QwEm5orzX+Rd9pepP5n/ACuvm0HWlq0mlhqWc46lFBqqV/kYFP8AVyODtMSHBnHF

+Hv8Ax9/NM8BBuGxZB+VP5j+ZPMs9/ovmbQJ9J13R1Q3s3ErbPzNEoGPJWehIA5KQKhu2Ua7RwxgT

+hK4yZYcplsRuHo2a1yHh35u+SvN1nNrXnD/lYl/omiIFli0yB7gBSEVFiiC3EacpHGwAG5zd6HPi

+lw4/DEpd+3z5OJmhIXLi2eW/lJ+UXnn829Svtdl1ue0XTjGo127MtzM9ytDHHG5dXrGg5E8vh+Hx

+zo4QERQFBwSSeb2z/oXX86P/AC8Gq/8AI2+/7Kskh6L+UP5dedPJv6W/xN5wu/Nf1/6v9U+tvO/1

+f0fV9Th68s3956i1pT7OKvRcVdirsVdirsVY/wCf/J9l5x8nar5bvKLFqMDRpKRX05R8UUlP8iRV

+b6MVfLf/ADiz50vvJX5han+XXmGtsmoztDHE/SLU4Dw4jt++Qca9yEpir7ExVK/MnmbQvLOjXGs6

+5eR2Om2q8pZ5TT5KoG7M3RVUVJ6Yq+M/zS/PHzr+bWrnyv5Vt5rPy67fDZoaS3CqaerduDRU/wAi

+vEd+RplWbNDFEymaiGUIGRoc0Nc/846uugI1vqXPX1BaRGFLVtv7tTTmtP5z18BnOw9pInLRj+77

++vv/AB9rsD2eeHY+pV/Io6rofmDWPK2rwSWlzJEl3FBIKCsbem5UjZuYddxUHjke34xy4YZYGwDW

+3n/YuhJjMxL2rOSdq7FXYq7FXYq7FXYq7FUt8w6Bp2v6Pc6VqCc7a5XiSPtIw3V0J6Mp3GZGl1M8

+GQTjzH2+TXlxicaLxryB5w1r8nPPM+i63yl8v3rKbrgCVKE0ju4V8R0ZR13HUDO3ywx67CJw59P1

+H8ebpgZYZ0X1xZXlpfWkN5ZyrPa3CLLBNGQyOjiqspHUEZzE4mJo8w54N7q2RS7FXYq73xVTuLi3

+treS4uJFht4VMk00hCoiKKszMdgAOpwxiSaHNBNPlfzv5j8wfnh+Yll5O8qBhoVtKTFKwIQqvwzX

+047IgNEB33p9p6Z13Z2iGGNn6zz/AFOtz5eM+T7B8j+TdG8m+V7Hy7o8fCzso+Jc/blkO8ksh7s7

+bn7htTNi0J9irsVdirsVdirsVdirsVfLP/OXf5WXENxb/mXoKNHNCY4tbMNVdWQhbe7BG9RtGx/1

+PfFWefl3/wA5I+VdQ/KqTzN5mu0ttV0YLbavarT1Z7gqfSaCPbl9YCkgdFIb9la4q+cvNPm3z/8A

+nr5uCUNnolo1YLRSxtrOIkgSSdPUmYd+p7cV6Yms1mPTw4pn3DqW3FhlkNB695O8l6J5U00Wemx/

+vHAN1duB6szDux8B2XoM4LXdoZNTK5cug7vx3u7w4I4xQT/MFvUJbGzluYbqSFGubfl6ExA5oHFG

+AbrQjqMsjmkImIPplzDEwBIPUNahew2Nhc3s54wWsTzSt4JGpZj9wxw4zOYiP4iB81nLhBPc8w/J

+Tzn5v8y3mqHV7oXFlaIhjHpojLJKxIAZQtQFQ9a50XbujwYYRMI8MifsH4DgaLNOZNmwHq+cy7F2

+KuxV2KuxV2KuxVjXnzyLpnm/SDZ3P7m7hq9leAVaJyO/ijftL/EDNj2d2jLTTsbxPMfjq4+o04yD

+zeb/AJZ/mj5g/KrXZPKnmyKSTQS9QFq5t+Z/v7c/txP1ZR8x8VQet1Gmx6vGMmM+r8bF1UJyxS4Z

+PqrTNT0/VLCDUNOuI7qyuVDwXETBkZT3BGczkxygeGQohzgQRYRWRZOxVSurq2tLaW6upUgtoVLz

+TSMEREUVLMxoABhjEyNDcoJp8v8A5n/mrr/5n65D5E8hQTTadcy+kxQcZL1lNeTV+xbpTl8VNvia

+nTOp7O7OGL1S+v7v2uvz5+LYcn0j+SX5N6V+Wvlv6uCl1r96FfV9RUGjMKlYoq7iKOu38x+I+A2z

+jPR8VdirsVdirsVdirsVdirsVSDz3rvlfQ/KWp6h5oaMaGsDx3kUgDCZJFK+iqEjm0leIXvir81d

+SfTpdTupdPhkt9MedzawyMJJI4WYmNGeihmCbV74q+q/y8tfLEHlOyPlsV06VefqGnqvJ0czH/fl

+RQ+HQbUzzrtWeY5z4v1D5V5eTv8ATCAgOFkma5yHYq7FWIfm3qBsfy81mRftSxLbge08ixN/wrHN

+r2Jj4tVHys/Z+txdZKsZSD/nH3TRb+S5rwj4767kYH/IjVYwP+CDZm+0mQnNGPQR+/8AAauz4+gn

+zenZzrnuxV2KuxV2KuxV2KuxVjnnbyLovm3Tfqt+np3MYJtL1APUiY+Feqn9pe/zocz9B2jk00rj

+vHqPx1aM+njkG/N4/ovmf8xfyX1w2rr9b0W4fkbVyxtLgDq8T0Jikp12r4gimdkPA12PiHP7R7/x

+7nUETwyovpX8vvzc8m+eLZf0ZdCDUgKzaVcEJcKR1KitJF/ykr70O2aHVaDJhO4uPf8Ajk5ePNGX

+vTXzl578seTtMOoa9eLboa+hAPimmYfsxRjdj+A7kZVp9LPMaiP1Mp5BEbvmXzJ54/Mb87vMcflj

+y1ZyQ6SzhksENFCKf96L2YbcV60+yDQAM1Cep0eghgF85d/6nX5cxn7n1H+S35IaB+Wmkkxlb3zD

+eIo1LVGHyJhgrukQbfxbqewGe0vSsVdirsVdirsVdirsVdirsVQup6np+l6fc6jqNwlrY2kbTXNx

+KeKJGgqzMfYYq+HfzQ/MTzL+dvnmHSNFR4PLtm7fo+2eoUIKh7y5pX42BoB+yPhG5JajU6mGGBnM

+7BnjxmZoPQ4Pyv8AK8fk1vK5i5W8g5yXVAJjcU2nr/MO3am3TOGl2xmOfxfs6V3ft73dDSQ4OH7X

+kehaz5g/KfzbLpWqK0+jXLB5VQfDJGaqlxDU7MKfEv0HsR0uowYu0MAlA+ocvI9x/HmHXY5ywTo8

+n0Fp2o2OpWMN9YzLcWlwoeGZDUEH/Pcds4jNhljkYyFSDuYTEhY5KzTQoaPIqnwJAOCOOR3AKmQH

+VyzQueKyKx8AQTiccgLIKiQPV5t/zkDctD5FijHS5voYm37BJJP1x5vPZwf4Qf6h+8OH2h/dj3p3

++UNt9X/LnRkoQXjklNRQ/vJnf9TbZjdtyvVT+H3Bs0Y/dBmOalynYq7FXYq7FXYq7FXYq7FUHq+j

+6ZrFhLYanbJdWkwo8Tjb2II3Vh2I3GXYNRPFLigaLCeMSFF4R50/JTXdCnOq+VpJby1ib1FjjJF5

+ARuCvGhenYr8Xt3zstB25jzenJ6Z/Yf1fF1OfRShvHcJFJ5F/M7zRY3PmTUI7m8eKMFHvZHa6mRe

+0SvV2CjcdK/s1OZsu0NNimMVgHy5D39zQMGSQ4qfTP8AziV518hXnlX/AA3p1lBpPmi0XnqUIr6l

+6F2+sq7lnfr8SV+A9AFIzYtD6BxV2KuxV2KuxV2KuxV2KuxV2KvjX/nI7847/wA+eYk/L/ye7XGj

+QTiO4kgNRfXSnswNDBEeh6Egt0CnIZMkYRMpGgExiSaDJvy88h2PlDRRbJxl1G4o9/dAfbcDZVPX

+gn7P3988/wC0+0Zamd8oDkP0+93um04xx82vOP5meVvKoMV7OZ7+lVsLejy+3PcKg/1j8q4dF2Tm

+1G4HDDvP6O9c2qhj25l47r/mfzt+ak6aXovlxrmO3f1I47SF7meOuxLzAURT32UZ1/Z/ZcNNdEkn

+n3fJ1OfUnJzDFvNXl7z35Lu/8P8AmCG60uQoLhbNpaxMsg+2nps0TVpQkHqKHcZseEXdbtFsbySH

+Yqu9ST0/T5H068uFTx5UpWnjir2HyZ+T/wCfGr+U9O1/yreSS6VdKzWkEOo+iQI5HRlMcjxoPjjI

+pXKMmmxT+qMT7wGcckhyJCOudA/5yq0IfvtM1G4VDuscNvqFadqwidj07HMXJ2Tpp84D4bfc2x1W

+QdUvl/Oj8y9CmEPmHQ0iPQpc209pKT1/aNP+FzCyezunly4o/H9bbHX5Bzop1pv/ADkboslBqWkX

+FsfG3dJx8/j9HNfl9mZfwTB94r9bkR7RHUMv0r82/wAvtSoserx28ndLoNb0/wBlIFT7mzWZuxdT

+D+HiHlv9nP7HIhrMcutMst7i3uIlmt5Umib7MkbBlPyIqM1s8coGpAg+bkxkDuFTIJdirsVdirsV

+dirH/PXm608q+XZ9Umo8391ZwH/dk7A8V+Qpyb2GZ/Z2iOoyiP8AD19zRqMwxxvq+cfL9n+Yf19/

+Omi29ytzYytfnU41CgPyLOyhqCTqeSqDt1FM7+WoxYyIGQBOwDoxjlIE0+1/yK/O7S/zJ0IpP6dp

+5nsVA1LT1OzrsPrEAO5jYncdVOx/ZJyGt6jirsVdirsVdirsVdirsVfO/wDzlT+dh8vaa/kfQJ6a

+7qUf+5S4jPxWtrINoxTpJMD8wm/7SnFWA/k3+W48v6eNZ1OL/c1ep8EbDe3hbfhQ9Hbq3h08a8V2

+52n4svCgfRHn5n9Q/HR3Gi03COI8yl/5qfm5LYTt5d8sP6mqM3pXd3GOZiY7elFStZa9T+z0+10v

+7I7G4gMmUbdI/pP6mGr1demPzZX+UH/OJcl6I/MP5lNKZJj6sehB2EjV35XkoPKp68FNfFuq51wF

+OqfT2j6Jo+i2Een6RZQafYxf3dtbRrFGPfigAqe5xVj35mflh5Y/MLy++k61CBKgLWGoIB69tKf2

+o2PY0HJejD6CFXwV+Z35WeaPy715tL1qHlbyFmsNRjB9C4jBoGU/st/Mh3X5UJVYdirsVfb3/OHX

+mKPUfyrfSS9Z9EvpovTrUiK4/wBIRvYM7yD6MVe7YqsmhhniaKaNZYnFHjcBlI8CDtirDde/JX8q

+Ne5HUvK1g0j15zQRC1lJPcyW/pOT9OKvMfMn/OF/5eXwZ9D1K+0aY/ZRit3AP9g/CT/krirzTVv+

+cTvzh8tSPdeVNVh1EDoLS4exuWp4rIVj/wCSpyGTHGYqQBHmmMiNwxq58/fnT5ImW382aVMYgeIO

+oWzRch0pHcRhUfp1+LNVn7C02TcDhPl+rk5UNbkj1tlGgf8AOQHlS94x6rBNpUx6uR68P/BIOf8A

+wmaPUezmWO+MiX2H9X2uZj7QifqFPRNK1vR9Wg9fTL2G9iHVoHV6V7NQ7H2OaTPpsmI1OJi5sMkZ

+cjaNyhm7FXYqlGq+VNC1fULe91S2F69opW2hn+OFCxqzekfhLGg3avTbMzDrsuKBhA8N8yOfz/U0

+zwRlKzumyqqqFUAKBQKNgAO2YhJJttp84edta0nyl+Y0Gu+Qr/0NQtH9W4WAfuI5wfiRSDxdJBUO

+lOPUd6D0PsqWc4R4w36d5Hm6HUiAn6H2P+TH5xaN+ZXlwXcIW11u0ATVdM5VMbnpJHXcxP8Asnt0

+PTNk470PFXYq7FXYq7FXYqwf84fzP078uvJtxrU/GXUJawaTZMf765YbVA34IPic+G3UjFXyR+U/

+lPUvNnmK589+ZXa65XDzRPKB/pF2Wq0h7cIz0AFK7D7NM5/tztLwo+HA+uXPyH6z+OjnaLT8R4jy

+DOPzf89t5Y8v+hZScdX1HlHbEdY0A/eS/MVovufbNJ2J2f4+TikPRD7T3fr/AGubrM/BGhzKf/8A

+OK/5HQWtjb/mF5ltxLqV3+90K2mBPoxHpdMD1kk6x+C/F1O3dukfTGKuxV2KpL5v8neXfN+hz6J5

+gs0vLCffi2zxuPsyROPiR17EfqxV8N/nR/zj/wCZfy5umvYeep+VpXpb6mq/FFyPwx3Kj7Ddg32W

+7UO2KvKcVeu/84z/AJoQeRvPwi1KX0tC11Vs7+RjRIpA1YJ29kZipJ6KxPbFX3sCCKjcHocVbxV2

+KuxV2Kqc9vBcQvBcRrNDIOMkUihlYHsVNQcVeX+cP+cZ/wAovM3OQ6QNIvH/AOPrSmFsQf8AjDRo

+D/yLrirw/wA0f84fef8AQZ21DyRrKal6dTHEWNhejwVH5GJvmXT5ZGURIURYSCRyYf8A8rL/ADW8

+jXo03zjpUslK8Y7+JreVlXasU6rxdf8AKo3zzT6rsHBk3j6D5cvl+qnLx62cee7P/LX5zeSdbKxS

+XJ0y7bb0byiKT/kygmP5VIPtnO6rsLPi3iOOPlz+X6rc/HrYS57FnSsrKGUhlIqCNwRmmIINFywW

+8CWLebfLnmTzCG0+PVV0jRm2n+rK0lzOpG6s7FFjXtRa17nembXRavBp/VwmeTz2A93P5uLmxTnt

+dRSjR/yO8g6cVea2l1GVTUPdyEiv+pH6aEfMHL83tBqJ/TUfcP12whocY57sS80+XfMH5YeaLfz3

+5JdorSKStxbAExxBz8UUigjlbydP8n58Tm97H7WGccE/7wf7L9vf8/dhavS8BsfT9z6x/Kf81NB/

+MbyzHq2nEQXsVI9U0xmDSW03genJHpVHpuPAggb1wmbYq7FXYq7FVK6ure0tprq5lWG2gRpZ5nIV

+ERByZmJ2AAFTir4W89eZtV/PD81xHas8Xlyw5RWXb0bJGHqTsDt6s7U/4Vei1zE12rjp8Rmfh5lt

+w4jOVB7Zp2n2enWMFjZxiG1tkWKGMdAqig655xmyyyTM5G5F6CEREUOTxPS9Gb81/wA/YNJlLNo1

+tMUuKbUsrEky0I6es9QD25jPQ+zNL4OCMevM+8/inQ6nJxzJfdcUUUUSRRIscUahY41AVVVRQAAb

+AAZntC/FXYq7FXYqo3dnaXtrLaXkKXFrOpjnglUOjowoVZWqCD74q+T/AM7f+cTri0a48wfl7E09

+pvJdeX6lpY+5NqTu6/8AFZ+Ifs16BV8xyRyRSNHIpSRCVdGBDBgaEEHoRiqLv9b1nUEjS/v7m7SF

+VjhWeV5QiIOKqocmgUbADFU/8k/mp588l38N1oOrzwxREcrCR2ktJFH7MkDHgRTaoow7EYq/Qb8v

+POFv5y8laR5mt4/RXUoBI8NeXpyqxjlQNtULIjCuKsixV2KuxV2KuxVB6rpGlavZSWGq2cF/ZS7S

+W1zGssbfNHBGKvD/AD5/zh75B1r1Lny1PL5cvmqREtbizY/8YnYOlT/K9B/LirxDWPy7/Pr8pmea

+GKW90OI8nuLOt5ZcQakvERzhHixVfnmJqdDhzj1xvz6/Ntx5pw5FNvKv/OQWi3fCDzDbNp0/Q3UI

+aWAmnUqKyJv2+L55zWr9nJDfEeLyPP58vudhi7QB2kKepWGo6fqNst1YXMd1bP8AZmhcOp+lSc57

+LhnjPDMGJ83YRmJCwbROVMlk0MU8LwzIJIZVKSRsKqysKEEHqCMlCZiQRsQggEUXiepWHmf8m/OM

+PnDyiS+jSH07i3erxhHYFrafuY2oOD9QadwCe77J7UGojwy2yD7fN0mq0xxmx9L7C/Lr8wvL/n3y

+zBr+iyExSfBc2z/3tvOAC8Ug8RXY9CNxm5cRk+KuxV2Kvm7/AJzA/NOTTNHg8haVKRf6ugn1ZkJ5

+JacqJDt3mdTyH8op0bFUg/KjyOvlfy2n1iMDVr8LNfsaVXb4Ia/8Vg7/AOVXOB7Z1/j5aH0R5fpL

+vNJg4I2eZZRr1/8Ao/Q9Rv8A/lktZp/+RUZf+Ga7SwE8sInkZAfa35ZVEnyYp/zg/o0Ump+atccV

+mghtbKJu/Gd3ll/GBM9PecfWeKuxV2KuxV2KuxV2KvOfPf5Aflj521UatrGmtHqRFJ7m0kMDTdKG

+Xjs7CmzUr+GKsb/6FD/Jv/lmvv8ApLb+mKu/6FD/ACb/AOWa+/6S2/pir0/yZ5Q0byf5as/LmirI

+mmWPqfV1lcyOPWleZ6sevxyHFU7xV2KuxV2KuxV2KuxV2KvMfzC/5x1/LLzr6lzcaf8AovVn3/Se

+ncYJGbrWSOhikr3LLy9xir5080f846/nH+XVzJqnlK6k1nT1NTLpwYXHFenrWR58/kvMZTmwQyx4

+ZgSDKEzE2DSH8r/85ABZRZea7IwSoeD3lup+FgaH1YT8Qp34/wDA5zes9nBzwn4H9B/X83Y4u0Ok

+w9b0nWdK1e0W80y7iu7ZukkTBgD4Hup9jvnM59PkxS4ZgxLsYZIyFg2q31jaX9pNZ3kKz2s6lJoX

+FVZT2ORxZZY5CUTUgmURIUeTxy2svzN/KLzbcaj5Eil1DS9RRkNuIZLqMqDVUnij35Rk/A+3z3YZ

+3Wg7YxZYXOQhMc7NfK/wHS59JKMthYZVB/zlL+eWlMZNc8owTWiEmRzaXlsaClaS83jp/sTmxx6r

+FM1GUZe4guPLHIcwQ9C8jf8AOYH5ea7NFaa9bzeW7uUhRLMwns+RNADOgVl+bxhR3OXsHulvcW9z

+BHcW0qTW8yh4Zo2Do6MKqysKggjoRir849U/MZtX/M6688azZnUTNdNcxWTSekFVPhtk5cZPhhVV

+FKb0yjU4pZMZjE8JPVnjkIyBItnP/Qyn/fuf9Pv/AF4zm/8AQx/tn+x/487D+Uv6P2/sQWuf85A/

+pXRNQ0z9A+j9etprb1vrfLh60ZTlx9Fa05VpXLcHs74eSM+O+Eg/T3f5zGev4okcPPz/AGPU/wDn

+B7UUbTvNmmkgPFNaXCjuRIsqH7vTH350zrn1DirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV

+dirsVdirsVdirBPzB/JP8uvPivJremKmpFaJqtofQul2oKuopJTsJFYYq+afOP8AzjN+afkK7fWP

+JF7LrNjGeX+iVjvVUb0ktqlZh/qcq/yjK8uKGSPDIAjzZRkYmwl/lf8AP1opf0f5vsmgnjb05LyB

+CCrA0PqwH4lI78f+BzmtZ7OA74T8D+g/r+bsMPaHSfzet6TrOlavZreaZdR3ds3SSJgwB8D3B9jv

+nMZ9PkxS4ZgxLsoZIyFg2jMpZsJ87flR5Z8zxSTLCthqxBKX0Kgcm/4uQUEg9/te+bjQds5cBAke

+KHcf0H8BxM+kjPlsWPfkJ+aPmL8t/PS+QfNEjHQbycWyo7FktbiZh6U8LH/dMpYcxsN+WxBr3OHN

+HLATibiXSzgYmjzfWP8AyrzyB/1LOlf9INt/zRlrF3/KvPIH/Us6V/0g23/NGKu/5V55A/6lnSv+

+kG2/5oxVHaV5Z8uaRJJJpOlWenySgLK9rbxQMyg1AYxqtRiqZYq7FXYq7FXYq7FXYq7FXYq7FXYq

+7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqwT8xvyU/L/AM/xFtbsBHqQXjFq1pSG6XsKuARIB2EisB2x

+V856t/ziZ+bHl/VpT5M1qO4sZhtcpcPYT0B2SVFJBp4hj8hleTFCYqQEh5i2UZGPI0of9C+f85Nf

+9XeT/uLS/wDNWUfkNP8A6nD/AEo/Uz8ef84/N3/Qvn/OTX/V3k/7i0v/ADVj+Q0/+pw/0o/Uvjz/

+AJx+aX3n/OK/576ldpcalLBdTgKguLi/MzqoNQAzVagqTTMjHijAVECI8tmEpEmybf/Z</xapGImg:image>

     </rdf:li>

    </rdf:Alt>

   </xap:Thumbnails>

  </rdf:Description>

 

- <rdf:Description rdf:about=''

-  xmlns:dc='http://purl.org/dc/elements/1.1/'>

+ <rdf:Description

+   rdf:about="">

   <dc:format>image/svg+xml</dc:format>

  </rdf:Description>

 

-</rdf:RDF>

-</x:xmpmeta>

-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <?xpacket end='w'?>

-			</metadata>

-		<switch>

-			<foreignObject requiredExtensions="&ns_ai;" x="0" y="0" width="1" height="1">

-				<i:pgfRef  xlink:href="#adobe_illustrator_pgf">

-				</i:pgfRef>

-			</foreignObject>

-			<g i:extraneous="self">

-				<g id="colors" i:layer="yes" i:dimmedPercent="3" i:rgbTrio="#4F00FFFF4F00">

-					<path i:knockout="Off" fill="#F8DC75" d="M237.682,33.617c-0.019-5.071,0.402-24.5-2.5-30.4

-						c-7.869,2.99-19.189,11.68-22.431,21.588c-15.532-2.32-35.042-2.045-50.381,0.608C159.808,14.753,147.946,7.596,138.243,3

-						c-4.093,6.907-3.906,19.92-3.445,31.279c-0.018,0.013-0.037,0.024-0.054,0.037c1.8,47.7,22.2,74.399,52.799,92.399

-						c31.481-17.988,50.972-49.057,50.101-93.12C237.656,33.603,237.67,33.609,237.682,33.617z M216.485,25.421

-						c0.114,0.021,0.229,0.042,0.344,0.064C216.715,25.463,216.601,25.441,216.485,25.421z M214.527,25.083

-						c0.275,0.044,0.554,0.094,0.83,0.141C215.081,25.177,214.805,25.129,214.527,25.083z"/>

-					<path i:knockout="Off" fill="#D2A41F" d="M91.013,133.328c46.474,4.115,90.927,22.883,141.085,49.085h25.598l0.361,0.191

-						c0.516-2.575-1.888-6.025-4.752-9.229c-4.941-5.528-11.623-6.145-19.707-5.951c-5.738-6.83-41.004-43.861-41.004-43.861

-						l-4.808,3.395c-38.75-21.75-49.155-62.513-49.155-62.513c-33.792,8.148-69.78,28.334-90.391,49.761l-3.118,3.292

-						c-1.489,1.597-2.928,3.174-4.312,4.723C18.967,146.661,3,170.87,3,175.213v2.25h23.816l-0.505-0.668

-						c-2.449-12.943,4.443-23.341,10.279-30.385c4.179-5.044,11.1-9.801,21.968-12.457L91.013,133.328z"/>

-				</g>

-				<g id="tomcat" i:layer="yes" i:dimmedPercent="3" i:rgbTrio="#4F00FFFF4F00">

-					<path i:knockout="Off" d="M240.682,32.617c-0.019-5.071-1.598-26.5-4.5-32.4c-7.869,2.99-22.189,12.68-25.431,22.588

-						c-15.532-2.32-33.042-2.045-48.381,0.608C159.808,12.753,146.946,4.596,137.243,0c-4.093,6.907-5.906,22.92-5.445,34.279

-						c-0.018,0.013-0.037,0.024-0.054,0.037c1.8,47.7,25.2,77.399,55.799,95.399c31.481-17.988,53.972-53.057,53.101-97.12

-						C240.656,32.603,240.67,32.609,240.682,32.617z M214.485,23.421c0.114,0.021,0.229,0.042,0.344,0.064

-						C214.715,23.463,214.601,23.441,214.485,23.421z M212.527,23.083c0.275,0.044,0.554,0.094,0.83,0.141

-						C213.081,23.177,212.805,23.129,212.527,23.083z M235.784,36.059c0.81,39.69-19.44,71.279-47.79,87.48

-						c-48.118-23.977-57.183-84.71-48.977-117.289c2.283,12.454,6.424,20.266,15.394,24.098c19.533-5.591,46.423-6.033,66.231-0.57

-						c8.255-6.001,11.456-15.169,13.204-23.18C236.029,15.921,235.777,36.055,235.784,36.059z"/>

-					<g>

-						<rect x="133.209" y="90.51" i:knockout="Off" width="26.245" height="3.239"/> 

-						<rect x="133.209" y="82.732" i:knockout="Off" width="26.245" height="3.24"/> 

-						<rect x="213.35" y="90.51" i:knockout="Off" width="26.244" height="3.239"/> 

-						<rect x="213.35" y="82.732" i:knockout="Off" width="26.244" height="3.24"/> 

-						<g>

-							<path i:knockout="Off" d="M204.1,63.524h-27.188h-3.021h-12.561v-2.917h13.31c1.639-7.018,1.963-13.725-0.014-17.125

-								c-0.844-1.446-2.01-2.121-3.674-2.121c-7.609,0-10.753,8.046-10.884,8.389l0.002-0.003l-2.73-1.024

-								c0.156-0.42,3.965-10.278,13.612-10.278c2.692,0,4.834,1.235,6.191,3.57c2.41,4.141,2.127,11.305,0.494,18.592l23.354,0

-								c3.103-9.116,9.581-13.414,20.405-13.414v2.916c-11.732,0-15.019,4.973-17.366,10.498l12.743,0l-0.029,2.901L204.1,63.524z"

-								/>

-							<path i:knockout="Off" d="M206.017,77.925l0.019-0.003c-3.459-5.101-4.555-9.456-3.108-14.413l-2.971,0.015

-								c-1.035,3.3-0.62,8.273,1.929,12.54H172.21c1.806-3.616,3.479-8.025,4.702-12.54h-3.021

-								c-1.348,4.786-3.241,9.524-5.372,13.277l-0.689,1.213l16.652,10.482l-9.375,6.178l1.605,2.436l10.479-6.908l11.312,7.382

-								l1.554-2.468l-10.488-6.488c0,0,15.682-10.187,16.461-10.684C206.024,77.937,206.021,77.931,206.017,77.925z M187.156,86.733

-								l-12.317-7.755l24.071,0.006L187.156,86.733z"/>

-						</g>

-					</g>

-					<polygon i:knockout="Off" points="114.745,73.635 122.087,95.391 99.788,80.434 "/>

-					<polygon i:knockout="Off" points="93.261,83.153 101.147,96.75 84.559,88.32 "/>

-					<polygon i:knockout="Off" points="75.313,93.759 79.12,107.356 67.699,99.47 "/>

-					<polygon i:knockout="Off" points="196.871,130.199 189.801,141.077 202.31,135.366 "/>

-					<polygon i:knockout="Off" points="208.021,142.709 196.6,151.411 212.372,147.332 "/>

-					<polygon i:knockout="Off" points="180.282,24.686 188.713,43.178 194.151,24.414 "/>

-					<polygon i:knockout="Off" points="137.588,51.608 150.913,58.678 138.947,59.494 "/>

-					<polygon i:knockout="Off" points="140.851,66.021 149.009,69.284 142.211,71.188 "/>

-					<polygon i:knockout="Off" points="236.031,56.775 225.153,61.398 234.127,62.757 "/>

-					<polygon i:knockout="Off" points="231.68,70.1 223.25,72.548 230.048,74.995 "/>

-					<path i:knockout="Off" d="M256.305,173.375c-4.941-5.528-14.623-8.145-22.707-7.951c-5.738-6.83-39.004-41.861-39.004-41.861

-						l-2.306,2.903l40.162,43.238l1.743-0.149c10.912-0.935,17.115,4.983,18.757,6.819c1.204,1.347,1.931,2.575,2.326,3.539h-22.075

-						c-50.624-26.416-95.078-45.044-142.297-49.112c0.104-6.571,1.273-14.01,3.518-22.299l-4.343-1.177

-						c-2.308,8.521-3.523,16.236-3.661,23.133c-4.92-0.326-9.872-0.495-14.868-0.495c-4.237,0-8.095,0.394-11.614,1.077

-						c-4.59-4.587-8.5-8.959-11.823-13.108c21.936-22.85,58.15-43.498,89.533-51.092l-1.015-4.396

-						c-33.792,8.148-70.78,30.334-91.391,51.761c-9.565-12.91-13.36-23.504-14.487-31.532c-1.424-10.14,0.997-19.441,6.999-26.899

-						C47.15,44.099,60.502,43.277,74.23,45.586c-0.268,2.167,0.017,4.24,0.885,5.522c3.631,5.363,23.144,7.246,34.791,2.049

-						c-8.595-12.045-26.006-17.926-30.83-15.569c-1.598,0.781-2.804,2.214-3.63,3.886c-4.745-0.849-9.458-1.48-12.903-1.455

-						c-12.107,0.088-21.363,4.319-28.296,12.932c-6.802,8.451-9.551,18.944-7.95,30.347c1.516,10.8,6.863,22.286,15.825,34.198

-						c-1.489,1.597-2.928,3.174-4.312,4.723C15.967,146.661,0,172.87,0,177.213v2.25h28.816l-0.505-2.668

-						c-1.627-8.601,1.623-19.351,8.279-27.385c4.179-5.044,11.1-10.801,21.968-13.457c9.663,9.431,21.975,19.446,35.679,29.109

-						h21.414v-2.25c0-2.539-1.259-4.762-3.545-6.257c-3.383-2.212-8.605-2.517-13.402-0.881c-4.573-5.093-7.137-11.896-7.691-20.347

-						c46.474,4.115,90.927,22.883,141.085,49.085h27.598l0.361-1.809C260.572,180.029,259.169,176.579,256.305,173.375z

-						 M33.125,146.539c-6.816,8.227-10.429,19.094-9.601,28.424H5.372c3.647-7.894,18.176-30.712,39.644-53.76

-						c2.958,3.656,6.253,7.35,9.872,11.073C44.347,135.444,37.437,141.336,33.125,146.539z"/>

-				</g>

-			</g>

-		</switch>

-		<i:pgf  id="adobe_illustrator_pgf">

-			<![CDATA[

-			eJzdffle8sqy6H0B3gFUFGQwEyEBB2YHUEFwwJlJRJlkWGuv88d59lvVSUgICWmQ75x1716/7aed

+<cc:Work

+   rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type

+     rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></svg:metadata></x:xmpmeta>

+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <xpacket />

+            </svg:metadata>

+        <svg:switch

+   id="switch6">

+            <svg:foreignObject

+   requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/"

+   x="0"

+   y="0"

+   width="1"

+   height="1"

+   id="foreignObject8">

+                <i:pgfRef

+   xlink:href="#adobe_illustrator_pgf">

+                </i:pgfRef>

+            </svg:foreignObject>

+            <svg:g

+   i:extraneous="self"

+   id="g10">

+                <svg:g

+   id="colors"

+   i:layer="yes"

+   i:dimmedPercent="3"

+   i:rgbTrio="#4F00FFFF4F00">

+                    <svg:path

+   i:knockout="Off"

+   fill="#F8DC75"

+   d="M237.682,33.617c-0.019-5.071,0.402-24.5-2.5-30.4                         c-7.869,2.99-19.189,11.68-22.431,21.588c-15.532-2.32-35.042-2.045-50.381,0.608C159.808,14.753,147.946,7.596,138.243,3                         c-4.093,6.907-3.906,19.92-3.445,31.279c-0.018,0.013-0.037,0.024-0.054,0.037c1.8,47.7,22.2,74.399,52.799,92.399                         c31.481-17.988,50.972-49.057,50.101-93.12C237.656,33.603,237.67,33.609,237.682,33.617z M216.485,25.421                         c0.114,0.021,0.229,0.042,0.344,0.064C216.715,25.463,216.601,25.441,216.485,25.421z M214.527,25.083                         c0.275,0.044,0.554,0.094,0.83,0.141C215.081,25.177,214.805,25.129,214.527,25.083z"

+   id="path13" />

+                    <svg:path

+   i:knockout="Off"

+   fill="#D2A41F"

+   d="M91.013,133.328c46.474,4.115,90.927,22.883,141.085,49.085h25.598l0.361,0.191                         c0.516-2.575-1.888-6.025-4.752-9.229c-4.941-5.528-11.623-6.145-19.707-5.951c-5.738-6.83-41.004-43.861-41.004-43.861                         l-4.808,3.395c-38.75-21.75-49.155-62.513-49.155-62.513c-33.792,8.148-69.78,28.334-90.391,49.761l-3.118,3.292                         c-1.489,1.597-2.928,3.174-4.312,4.723C18.967,146.661,3,170.87,3,175.213v2.25h23.816l-0.505-0.668                         c-2.449-12.943,4.443-23.341,10.279-30.385c4.179-5.044,11.1-9.801,21.968-12.457L91.013,133.328z"

+   id="path15" />

+                </svg:g>

+                <svg:g

+   id="tomcat"

+   i:layer="yes"

+   i:dimmedPercent="3"

+   i:rgbTrio="#4F00FFFF4F00">

+                    <svg:path

+   i:knockout="Off"

+   d="M240.682,32.617c-0.019-5.071-1.598-26.5-4.5-32.4c-7.869,2.99-22.189,12.68-25.431,22.588                         c-15.532-2.32-33.042-2.045-48.381,0.608C159.808,12.753,146.946,4.596,137.243,0c-4.093,6.907-5.906,22.92-5.445,34.279                         c-0.018,0.013-0.037,0.024-0.054,0.037c1.8,47.7,25.2,77.399,55.799,95.399c31.481-17.988,53.972-53.057,53.101-97.12                         C240.656,32.603,240.67,32.609,240.682,32.617z M214.485,23.421c0.114,0.021,0.229,0.042,0.344,0.064                         C214.715,23.463,214.601,23.441,214.485,23.421z M212.527,23.083c0.275,0.044,0.554,0.094,0.83,0.141                         C213.081,23.177,212.805,23.129,212.527,23.083z M235.784,36.059c0.81,39.69-19.44,71.279-47.79,87.48                         c-48.118-23.977-57.183-84.71-48.977-117.289c2.283,12.454,6.424,20.266,15.394,24.098c19.533-5.591,46.423-6.033,66.231-0.57                         c8.255-6.001,11.456-15.169,13.204-23.18C236.029,15.921,235.777,36.055,235.784,36.059z"

+   id="path18" />

+                    <svg:g

+   id="g20">

+                        <svg:rect

+   x="133.209"

+   y="90.51"

+   i:knockout="Off"

+   width="26.245"

+   height="3.239"

+   id="rect22" />

+                        <svg:rect

+   x="133.209"

+   y="82.732"

+   i:knockout="Off"

+   width="26.245"

+   height="3.24"

+   id="rect24" />

+                        <svg:rect

+   x="213.35"

+   y="90.51"

+   i:knockout="Off"

+   width="26.244"

+   height="3.239"

+   id="rect26" />

+                        <svg:rect

+   x="213.35"

+   y="82.732"

+   i:knockout="Off"

+   width="26.244"

+   height="3.24"

+   id="rect28" />

+                        <svg:g

+   id="g30">

+                            <svg:path

+   i:knockout="Off"

+   d="M204.1,63.524h-27.188h-3.021h-12.561v-2.917h13.31c1.639-7.018,1.963-13.725-0.014-17.125                                 c-0.844-1.446-2.01-2.121-3.674-2.121c-7.609,0-10.753,8.046-10.884,8.389l0.002-0.003l-2.73-1.024                                 c0.156-0.42,3.965-10.278,13.612-10.278c2.692,0,4.834,1.235,6.191,3.57c2.41,4.141,2.127,11.305,0.494,18.592l23.354,0                                 c3.103-9.116,9.581-13.414,20.405-13.414v2.916c-11.732,0-15.019,4.973-17.366,10.498l12.743,0l-0.029,2.901L204.1,63.524z"

+   id="path32" />

+                            <svg:path

+   i:knockout="Off"

+   d="M206.017,77.925l0.019-0.003c-3.459-5.101-4.555-9.456-3.108-14.413l-2.971,0.015                                 c-1.035,3.3-0.62,8.273,1.929,12.54H172.21c1.806-3.616,3.479-8.025,4.702-12.54h-3.021                                 c-1.348,4.786-3.241,9.524-5.372,13.277l-0.689,1.213l16.652,10.482l-9.375,6.178l1.605,2.436l10.479-6.908l11.312,7.382                                 l1.554-2.468l-10.488-6.488c0,0,15.682-10.187,16.461-10.684C206.024,77.937,206.021,77.931,206.017,77.925z M187.156,86.733                                 l-12.317-7.755l24.071,0.006L187.156,86.733z"

+   id="path34" />

+                        </svg:g>

+                    </svg:g>

+                    <svg:polygon

+   i:knockout="Off"

+   points="114.745,73.635 122.087,95.391 99.788,80.434 "

+   id="polygon36" />

+                    <svg:polygon

+   i:knockout="Off"

+   points="93.261,83.153 101.147,96.75 84.559,88.32 "

+   id="polygon38" />

+                    <svg:polygon

+   i:knockout="Off"

+   points="75.313,93.759 79.12,107.356 67.699,99.47 "

+   id="polygon40" />

+                    <svg:polygon

+   i:knockout="Off"

+   points="196.871,130.199 189.801,141.077 202.31,135.366 "

+   id="polygon42" />

+                    <svg:polygon

+   i:knockout="Off"

+   points="208.021,142.709 196.6,151.411 212.372,147.332 "

+   id="polygon44" />

+                    <svg:polygon

+   i:knockout="Off"

+   points="180.282,24.686 188.713,43.178 194.151,24.414 "

+   id="polygon46" />

+                    <svg:polygon

+   i:knockout="Off"

+   points="137.588,51.608 150.913,58.678 138.947,59.494 "

+   id="polygon48" />

+                    <svg:polygon

+   i:knockout="Off"

+   points="140.851,66.021 149.009,69.284 142.211,71.188 "

+   id="polygon50" />

+                    <svg:polygon

+   i:knockout="Off"

+   points="236.031,56.775 225.153,61.398 234.127,62.757 "

+   id="polygon52" />

+                    <svg:polygon

+   i:knockout="Off"

+   points="231.68,70.1 223.25,72.548 230.048,74.995 "

+   id="polygon54" />

+                    <svg:path

+   i:knockout="Off"

+   d="M256.305,173.375c-4.941-5.528-14.623-8.145-22.707-7.951c-5.738-6.83-39.004-41.861-39.004-41.861                         l-2.306,2.903l40.162,43.238l1.743-0.149c10.912-0.935,17.115,4.983,18.757,6.819c1.204,1.347,1.931,2.575,2.326,3.539h-22.075                         c-50.624-26.416-95.078-45.044-142.297-49.112c0.104-6.571,1.273-14.01,3.518-22.299l-4.343-1.177                         c-2.308,8.521-3.523,16.236-3.661,23.133c-4.92-0.326-9.872-0.495-14.868-0.495c-4.237,0-8.095,0.394-11.614,1.077                         c-4.59-4.587-8.5-8.959-11.823-13.108c21.936-22.85,58.15-43.498,89.533-51.092l-1.015-4.396                         c-33.792,8.148-70.78,30.334-91.391,51.761c-9.565-12.91-13.36-23.504-14.487-31.532c-1.424-10.14,0.997-19.441,6.999-26.899                         C47.15,44.099,60.502,43.277,74.23,45.586c-0.268,2.167,0.017,4.24,0.885,5.522c3.631,5.363,23.144,7.246,34.791,2.049                         c-8.595-12.045-26.006-17.926-30.83-15.569c-1.598,0.781-2.804,2.214-3.63,3.886c-4.745-0.849-9.458-1.48-12.903-1.455                         c-12.107,0.088-21.363,4.319-28.296,12.932c-6.802,8.451-9.551,18.944-7.95,30.347c1.516,10.8,6.863,22.286,15.825,34.198                         c-1.489,1.597-2.928,3.174-4.312,4.723C15.967,146.661,0,172.87,0,177.213v2.25h28.816l-0.505-2.668                         c-1.627-8.601,1.623-19.351,8.279-27.385c4.179-5.044,11.1-10.801,21.968-13.457c9.663,9.431,21.975,19.446,35.679,29.109                         h21.414v-2.25c0-2.539-1.259-4.762-3.545-6.257c-3.383-2.212-8.605-2.517-13.402-0.881c-4.573-5.093-7.137-11.896-7.691-20.347                         c46.474,4.115,90.927,22.883,141.085,49.085h27.598l0.361-1.809C260.572,180.029,259.169,176.579,256.305,173.375z                          M33.125,146.539c-6.816,8.227-10.429,19.094-9.601,28.424H5.372c3.647-7.894,18.176-30.712,39.644-53.76                         c2.958,3.656,6.253,7.35,9.872,11.073C44.347,135.444,37.437,141.336,33.125,146.539z"

+   id="path56" />

+                </svg:g>

+            </svg:g>

+        </svg:switch>

+        <i:pgf

+   id="adobe_illustrator_pgf">

+

+            eJzdffle8sqy6H0B3gFUFGQwEyEBB2YHUEFwwJlJRJlkWGuv88d59lvVSUgICWmQ75x1716/7aed

 Tnd1dXXN1fF6iuVQsjmot0J8mHG7vN70qFWbDEYxN2l1n3e70/FkhE2+G7+bZcMMdEqeS29qx7vW

 aNwZ9GPkEXmYw7d951e565vTrN/t80NbpTPptqB1Mug1apPw+K+2X5sLXs7UJvAwciAfMKKbZWJ8

 1J28hOepwbTf7PTbqcF/YPyo6OYZzi3AU0GKwuOzzk1rbO4TjrK8jB3DnAy/CLwYluBNQYInDL6V

@@ -231,9 +597,9 @@
 wizatDXmNPh+Zz3pKZPca/miVUv0TraDJ+qk1ZDPhN6TK+Ho2aWcVTb7/J2bW+vjIVOIhlic9HBh

 0rPWQLyphTiYlAmZV1p4eqyZJiWzqGuNfjdzr3aTZpjL/RfZetLzn1jia3R1YzlpOb7Hw6m0Xqu4

 nW+VecZm0qcQU37zb1lPmj9rXT09+n36pC6vYdq7vX7bdtLyZ+m9bjfpKXOXHx5aTw==

-			]]>

-			<![CDATA[

-			WuC9Lu9tLnF4ZLnWu+HFlu2kd2+nWxO7Sa+Z+5N8Rp8U1mKY9vI4+/ZaenmxnPTl+vvcdtKvaqSZ

+

+

+            WuC9Lu9tLnF4ZLnWu+HFlu2kd2+nWxO7Sa+Z+5N8Rp8U1mKY9vI4+/ZaenmxnPTl+vvcdtKvaqSZ

 s5n0Gbgl8zLuhqzXevU17F3LEm856dt5qG876chbDnj0SVGKGc/qLZPt9C4sJ5WuQluexEsoC5Py

 YfOhmb5F39RJ67zfdGhcXv9jobZPpuX2jn1n82stMO/7sSROemyaFIb9+tGYvnhgnnQ82D1SJ52c

 BGBf5tfqea49+ZVJU1X2fJ4VBkfj22MPTppY5EnnIW2lh6xpUsBY/GxLVKY9YfMhEysMDoUrRdLw

@@ -305,9 +671,9 @@
 Z3nNCH3NqWNRhjqUGk2gKpSkUist9TbLvL5Tytt6qEs5qXXL+XNgX1tsWcA4x5NpzIu5fVmUPr/e

 F+dLgFbdFzqVdaV9obsJaJVqZXPYCj0kv7mcCauVnSuZXKsdQ0rl1YzK2W3zVoeG7k4gClSqOgwi

 0zH6uCoq9Zqm5TWJKxvmk+MfKzGo172aBeH6hvnk2CwG7Whsptpb00H7bCWTY3anyg==

-			]]>

-			<![CDATA[

-			wu6fUTK4oKJdvHOv77ZHU8OYhfm8tvE8OTGL+bUxRjK1N4IxOtaj62N2xDDGU7kop5dYjvYgrWwj

+

+

+            wu6fUTK4oKJdvHOv77ZHU8OYhfm8tvE8OTGL+bUxRjK1N4IxOtaj62N2xDDGU7kop5dYjvYgrWwj

 2wK1GBCkAsngUZwBRcVXKEDSbbblZ3/ewrYJUGKQaSFlxto/ZrKwna65GX7YX3PzMm6bkxhcXmcj

 fEkRNOU2uSjLZH/MVudKwJki71/ny1NNV1U/YTxUc2jvhXOq3+JeJj77GxbsfUpLarRXYS5OudZY

 tLyOB8jCulF48vlyBrH6ck1aiOXtQBZycUnJMoU8cy0e8SUIdDjitgi01GDPraozV0TgnO7h8qrV

@@ -379,9 +745,9 @@
 lpU0fzpduDCfgeuiuNOg+mu34sI9ilY5Sb9wK1Yt8y3Xvn2YlK7TS2S6z50fUKvXWi2PjdiyTC1a

 48KF+bNfpfHzr2JN6kIL8y0LQthebL2M2w7Xg6nLWPZdiHnr9TZ2YDsfRcTcdr7ZjTqqxxHxWKhk

 6weNXrLfCA2Ske700iQDyFSpbktkEoff18+5/d1rjbk0kruZj6GfTebvHwuzfQYrSQ==

-			]]>

-			<![CDATA[

-			r7xXT5G5+/uV3l3vrNRqqTgpXKe6kodNX92XWrnD7HMY1nfvy/lLXDLxk3r1YWWKYg7MWk8aORyx

+

+

+            r7xXT5G5+/uV3l3vrNRqqTgpXKe6kodNX92XWrnD7HMY1nfvy/lLXDLxk3r1YWWKYg7MWk8aORyx

 mIhXSlOsjz6TQp7dafY+de+ZP1zFTCNWa2Yb79niaMSNk5799qh0EPLGdvn7y0gyIgbGn+cHg2nN

 5d07a0ny/snTzuOW53zi9yRzNwdb1VcxtlO+3854v/vlwl7rcxgSy4Wft+h3s9BOfL9ffeZbZVm+

 ej77uSuzw/xH+bPU6d6eHlxO795O/b63t3TA/1WNfF33ioH4h8s7DDwmJiNv2bc3GvE7nq1Ba3Dg

@@ -453,9 +819,9 @@
 Lr62f8haovf8Yc04PYnHPo2F1PfeaU4z631eY6ArffyilmvNXmPzVZT775feLkasRMXi67xe9IHG

 RiLG6bbk72QW0ObnZzHTBw8cvvxohp2JEj0ddRp+DdZ7KfHA+MPan7tg7+d8ecaLzulLOHK1XYUY

 mrvBfG6fO+a0bXyU0Oru5N738i9wAo+2SWQE3ZgZA0sBGkqA/f3QS1Yus3l9c1xezQ==

-			]]>

-			<![CDATA[

-			/+uVsVMcWj1fydIVaJkY6tHRMYsgyXgOCkrwCO24+QfFRLx3nDYEfV74bBdsZOKA04JCxEFV1UJG

+

+

+            /+uVsVMcWj1fydIVaJkY6tHRMYsgyXgOCkrwCO24+QfFRLx3nDYEfV74bBdsZOKA04JCxEFV1UJG

 4ihRTudvQA/xn5MoHjpBJQw4PGldUl9JqfH4kDl4KEWVcNosGAXblPlIxJ+TF4Qnm4GKYrToKNmv

 196V84K35xzujVvtrG/rrp3JeT8u5gNKF+J9zz9IDobDekqYpkqmiJTCYT5zJ+Pnu8Dx9uE2vnMG

 mA/siNssc39wWf5GHfVkB/Sj/SfVEfJ+fgyc6mRsiFx2vZWSIZQzH4QBi6/16v8A7SqHmTPbEvqg

@@ -527,9 +893,9 @@
 QIYgSWRT+EhUIDsHC5ZwC8jOMazSxghKJwkXjNsr46YubHja9QETQn+YXMGxBLvWI22wgIjSJsJa

 sUXgcBBsEQSlJSLwSgP8z91wKZ0krRMfdSsDCbOBRPfidA0AggGiBsTBS6zyROQEAgduiCiSpoiE

 hAQtUVmQlRYetxGIjYmyCiCw3wIBZLEXjiSpI0UlZaS56RCO/Vvrw0pOoXb4wiyMzA==

-			]]>

-			<![CDATA[

-			IPBw1sNSVMLjx8Ay4fBxoFlGOaQlwDEflWRcBeCdY4AKeUEGJCBa4HiJER7pmwHqwpPCSHBSgKp5

+

+

+            IPBw1sNSVMLjx8Ay4fBxoFlGOaQlwDEflWRcBeCdY4AKeUEGJCBa4HiJER7pmwHqwpPCSHBSgKp5

 IBegdDwgAg/HgQFUzdoKpC0aZZR+oN5ESFtEwSTPiGExipvEc2FJ4pAykT/g8YWJGFw/0iXP424J

 XAQQF4XXWJhbJCQjKQTCs3Bco4h3eJ8nYEELJ/HaYQfCBrA4EagPVyHKYZ6JwuBwklgBtrvqQtqO

 EMKOIow8TAa/8BKLrUDRPJwVNxx2RAgH/Tl8EoFfkUphRs7NCZEwnGGBkIyMZMVxeKwFmCfKAb9D

@@ -584,6 +950,18 @@
 ukDeRCUHcSZE8HDAoMSYAP01wiiEg5FscoCA3eHZQk4gS0TWgcxB1zOHngMGhS0GDnji58eRMPSA

 yFdpGTkB8E0SH4oi3zGv1zHaaRX58RZr7VZlVOt0WyNXe1z7q+Wu9fuDSW3SGsITd3vUGk8Go5Z7

 /Dn4G1vgFa2715u9zrn+L1T7Dxc=

-			]]>

-		</i:pgf>

-	</svg>

+

+        </i:pgf>

+    <svg:text

+   xml:space="preserve"

+   style="font-size:13.03699398px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Nimbus Sans L;-inkscape-font-specification:Nimbus Sans L"

+   x="246.20877"

+   y="10.629581"

+   id="text2436"

+   sodipodi:linespacing="125%"

+   transform="scale(0.9830254,1.0172677)"><svg:tspan

+     sodipodi:role="line"

+     id="tspan2438"

+     x="246.20877"

+     y="10.629581">TM</svg:tspan></svg:text>

+</svg:svg>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/BUILDING.txt b/tomcat-uid/webapps/docs/BUILDING.txt
index 45ee689..3f4e5b8 100644
--- a/tomcat-uid/webapps/docs/BUILDING.txt
+++ b/tomcat-uid/webapps/docs/BUILDING.txt
@@ -16,12 +16,12 @@
 ================================================================================

 

             ====================================================

-            Building The Apache Tomcat 6.0 Servlet/JSP Container

+            Building The Apache Tomcat 7.0 Servlet/JSP Container

             ====================================================

 

-This subproject contains the source code for Tomcat 6.0, a container that

-implements the Servlet 2.5 and JSP 2.1 specifications from the Java

-Community Process <http://www.jcp.org/>.

+This subproject contains the source code for Tomcat 7.0, a container that

+implements the Servlet 3.0, JSP 2.2, EL 2.2 and WebSocket 1.1 specifications

+from the Java Community Process <http://www.jcp.org/>.

 

 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.

@@ -31,138 +31,479 @@
 source distribution, do the following:

 

 

-(0) Download and Install a Java Development Kit

+(1) Download and Install a Java 6 and Java 7 Development Kit

 

-* If the JDK is already installed, skip to (1).

+ 1. If the JDKs are already installed, skip to (2).

 

-* Download a Java Development Kit (JDK) of Java SE version 5 from

+ 2. Download a version 6 of the Java Development Kit (JDK) release (use the

+    latest update available for your chosen version) from

 

-    http://www.oracle.com/technetwork/java/javase/downloads/index.html

-    or from another JDK vendor.

+        http://www.oracle.com/technetwork/java/javase/downloads/index.html

+        or from another JDK vendor.

 

-  Note regarding versions of Java later than Java SE 5:

+    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 source code

-    for this library is downloaded, processed by the build script

-    (renaming the packages) and compiled.

+      As documented elsewhere, one of the components in Apache Tomcat includes

+      a private copy of the Apache Commons DBCP library. The source code

+      for this library is downloaded, processed by the build script

+      (renaming the packages) and compiled.

 

-    Due to changes in JDBC interfaces implemented by the library between

-    versions of Java SE specification, the library has to target specific

-    version of Java and can be compiled only with the JDK version

-    implementing this version of specification.

+      Due to changes in JDBC interfaces implemented by the library between

+      versions of Java SE specification, the library has to target specific

+      version of Java and can be compiled only with the JDK version

+      implementing this version of specification. Therefore, the build Tomcat

+      build process must be executed with a Java 6 JDK.

 

-    See Apache Commons DBCP project web site for more details on

-    available versions of the library and its requirements,

+      See Apache Commons DBCP project web site for more details on

+      available versions of the library and its requirements,

 

-      http://commons.apache.org/dbcp/

+        http://commons.apache.org/dbcp/

 

-  It is possible to use later versions of JDK to build Tomcat 6.0, but the

-  building of that component (tomcat-dbcp.jar) will be skipped and a

-  warning will be printed.

+      If you really want to use a later version of JDK to build Tomcat,

+      several workarounds are possible. One of them is to skip building

+      the component (tomcat-dbcp.jar).

 

-* Install the JDK according to the instructions included with the release.

+ 3. Install the Java 6 JDK according to the instructions included with the

+    release.

 

-* Set an environment variable JAVA_HOME to the pathname of the directory

-  into which you installed the JDK release.

+ 4. Set an environment variable JAVA_HOME to the pathname of the directory

+    into which you installed the JDK release.

+

+ 5. Download a version 7 of the Java Development Kit (JDK) release (use the

+    latest update available for your chosen version) from

+

+        http://www.oracle.com/technetwork/java/javase/downloads/index.html

+        or from another JDK vendor.

+

+ 6. Install the Java 7 JDK according to the instructions included with the

+    release.

+

+* NOTE: The Java 7 JDK is only required if you wish to build Tomcat with

+  JSR-356 (Java WebSocket 1.1) support.

 

 

-(1) Install Apache Ant 1.6.x on your computer

+(2) Install Apache Ant version 1.8.2 or later on your computer

 

-* If Apache Ant 1.6.x is already installed on your computer, skip to (2).

+ 1. If Apache Ant version 1.8.2 or later is already installed on your computer, skip to (3).

 

-* Download a binary distribution of Ant 1.6.x from:

+ 2. Download a binary distribution of Ant from:

 

-    http://ant.apache.org/bindownload.cgi

+        http://ant.apache.org/bindownload.cgi

 

-* 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.

+ 3. Unpack the binary distribution into a convenient location so that the

+    Ant release resides in its own directory (conventionally named

+    "apache-ant-[version]").

 

-* Create an ANT_HOME environment variable to point the directory

-  ${ant.home}.

+    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.

 

-* 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.

+ 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.

 

 

-(2) Building Tomcat 6.0

+(3) Building Tomcat 7.0

 

-(2.1) Checkout or obtain the source code for Tomcat 6.0

+(3.1) Checkout or obtain the source code for Tomcat 7.0

 

-* Tomcat 6.0 SVN repository URL:

-  http://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk/

+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.

 

-* Download a source package from:

-  http://tomcat.apache.org/download-60.cgi

+ *  Tomcat SVN repository URL:

 

-* Checkout the source using SVN, selecting a tag for released version or

-  trunk for the current development code, or unpack a source package. The

-  location where the source has been placed will be referred as

-  ${tomcat.source}.

+        http://svn.apache.org/repos/asf/tomcat/tc7.0.x/trunk/

 

-(2.2) Building

+ *  Source packages can be downloaded from:

 

-* Go to that directory, and do:

+        http://tomcat.apache.org/download-70.cgi

 

-    cd ${tomcat.source}

-    ant download

-    ant

+The location where the source has been placed will be further referred as

+${tomcat.source}.

 

-* WARNING: Running "ant download" command will download libraries required

-  to build Tomcat to the /usr/share/java directory.  On a typical Linux or

-  MacOX system an ordinary user  will not have access to write to this

-  directory, and, even if you do, it may not be appropriate for you to

-  write there.

+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:

 

-  On Windows this usually corresponds to the "C:\usr\share\java"

-  directory, unless Cygwin is used. Read below to learn how to customize

-  the directory used to download the binaries.

+  zip    -> CRLF

+  tar.gz -> LF

 

-* NOTE: Users accessing the Internet through a proxy must use a properties

-  file to indicate to Ant the proxy configuration. Read below.

+Note that the release build process does modify line-endings to ensure that

+each release package has the appropriate line-endings.

 

-* The build can be controlled by creating a ${tomcat.source}/build.properties

-  file, and adding the following content to it:

+(3.2) Building

 

-    # ----- Proxy setup -----

-    # Uncomment if using a proxy server

-    #proxy.host=proxy.domain

-    #proxy.port=8080

-    #proxy.use=on

+ 1. The build is controlled by creating a ${tomcat.source}/build.properties

+    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

+    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=on

+        proxy.host=proxy.domain

+        proxy.port=8080

+        proxy.user=username

+        proxy.password=password

+

+  See Apache Ant documentation for the <setproxy> task for details.

+

+* NOTE: Users wishing to build Tomcat with JSR-356 (Java WebSocket 1.1) support

+  must also set the java.7.home build property to the location of the Java 7 JDK

+  installation.

+

+ 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.

 

 

-(3) Updating sources

+(4) Updating sources and rebuilding

 

-It is recommended that you regularly update the downloaded Tomcat 6 sources

-using your SVN client.

-

-(4) Rebuilds

+It is recommended that you regularly update the downloaded Tomcat 7.0

+sources using your SVN client.

 

 For a quick rebuild of only modified code you can use:

-   

+

     cd ${tomcat.source}

     ant

 

-(5) Building the servlet and jsp API documentation

+

+(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 -f dist.xml dist-javadoc

+    ant build-docs

 

-(6) Building the extras (commons-logging, webservices etc.).

+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 -f extras.xml

+    ant javadoc

 

-(7) Building a release:

+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 -f dist.xml release

+    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. 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: BIO, NIO 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.bio=true

+    execute.test.nio=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.

+

+* NOTE: If you configured the build to use a Java 7 JDK (if the

+"java.7.home" property has been defined) the tests will be run with Java 7.

+

+The version of Java that was actually used to run the tests is reported by

+"org.apache.catalina.util.TestServerInfo" test 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. (This feature requires

+Apache Ant 1.8.2 or later).

+

+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

+

+

+(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.<date>" 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. 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 http://cobertura.sf.net for details. Using it

+  during Tomcat build is optional and is off by default.

+

+ Cobertura can be enabled using the following property:

+ 

+        test.cobertura=true

+

+ The report files by default are written to

+

+        output/coverage

+

+ 6. 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

+

+ 7. 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

+

+ 8. 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.

+

+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 invoking the "validate"

+target. The command is:

+

+    cd ${tomcat.source}

+    ant -Dexecute.validate=true validate

+

+

+(8.2) 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/tomcat-uid/webapps/docs/RELEASE-NOTES.txt b/tomcat-uid/webapps/docs/RELEASE-NOTES.txt
index b85ba0f..99cea1c 100644
--- a/tomcat-uid/webapps/docs/RELEASE-NOTES.txt
+++ b/tomcat-uid/webapps/docs/RELEASE-NOTES.txt
@@ -16,15 +16,16 @@
 ================================================================================

 

 

-                     Apache Tomcat Version 6.0.41

+                     Apache Tomcat Version 7.0.77

                             Release Notes

 

 

-=============================

-KNOWN ISSUES IN THIS RELEASE:

-=============================

+=========

+CONTENTS:

+=========

 

 * Dependency Changes

+* API Stability

 * JNI Based Applications

 * Bundled APIs

 * Web application reloading and static fields in shared libraries

@@ -32,7 +33,6 @@
 * Enabling SSI and CGI Support

 * Security manager URLs

 * Symlinking static resources

-* Enabling invoker servlet

 * Viewing the Tomcat Change Log

 * Cryptographic software notice

 * When all else fails

@@ -41,17 +41,37 @@
 ===================

 Dependency Changes:

 ===================

-Tomcat 6.0 is designed to run on Java SE 5.0 and later.

+Tomcat 7.0 is designed to run on Java SE 6 and later.

 

-In addition, Tomcat 6.0 uses the Eclipse JDT Java compiler for compiling

-JSP pages.  This means you no longer need to have the complete

+In addition, Tomcat 7.0 uses the Eclipse JDT Java compiler for

+compiling JSP pages.  This means you no longer need to have the complete

 Java Development Kit (JDK) to run Tomcat, but a Java Runtime Environment

-(JRE) is sufficient.  The Eclipse JDT Java compiler is bundled with the 

+(JRE) is sufficient.  The Eclipse JDT Java compiler is bundled with the

 binary Tomcat distributions.  Tomcat can also be configured to use the

-compiler from the JDK to compile JSPs, or any other Java compiler supported 

+compiler from the JDK to compile JSPs, or any other Java compiler supported

 by Apache Ant.

 

 

+==============

+API Stability:

+==============

+The public interfaces for the following classes are fixed and will not be

+changed at all during the remaining lifetime of the 7.x series:

+- javax/**/*

+

+The public interfaces for the following classes may be added to in order to

+resolve bugs and/or add new features. No existing interface will be removed or

+changed although it may be deprecated.

+- org/apache/catalina/*

+- org/apache/catalina/comet/*

+

+Note: As Tomcat 7 matures, the above list will be added to. The list is not

+      considered complete at this time.

+

+The remaining classes are considered part of the Tomcat internals and may change

+without notice between point releases.

+

+

 =======================

 JNI Based Applications:

 =======================

@@ -76,28 +96,33 @@
 =============

 Bundled APIs:

 =============

-A standard installation of Tomcat 6.0 makes all of the following APIs available

+A standard installation of Tomcat 7.0 makes all of the following APIs available

 for use by web applications (by placing them in "lib"):

 * annotations-api.jar (Annotations package)

 * catalina.jar (Tomcat Catalina implementation)

 * catalina-ant.jar (Tomcat Catalina Ant tasks)

 * catalina-ha.jar (High availability package)

 * catalina-tribes.jar (Group communication)

-* ecj-4.3.1.jar (Eclipse JDT Java compiler)

-* el-api.jar (EL 2.1 API)

+* ecj-4.4.2.jar (Eclipse JDT Java compiler)

+* el-api.jar (EL 2.2 API)

 * jasper.jar (Jasper 2 Compiler and Runtime)

 * jasper-el.jar (Jasper 2 EL implementation)

-* jsp-api.jar (JSP 2.1 API)

-* servlet-api.jar (Servlet 2.5 API)

+* jsp-api.jar (JSP 2.2 API)

+* servlet-api.jar (Servlet 3.0 API)

+* tomcat7-websocket.jar (WebSocket 1.1 implementation)

+* tomcat-api.jar (Interfaces shared by Catalina and Jasper)

 * tomcat-coyote.jar (Tomcat connectors and utility classes)

 * tomcat-dbcp.jar (package renamed database connection pool based on Commons DBCP)

+* tomcat-jdbc.jar (Tomcat's database connection pooling solution)

+* tomcat-util.jar (Various utilities)

+* websocket-api.jar (WebSocket 1.1 API)

 

 You can make additional APIs available to all of your web applications by

 putting unpacked classes into a "classes" directory (not created by default),

 or by placing them in JAR files in the "lib" directory.

 

 To override the XML parser implementation or interfaces, use the endorsed

-mechanism of the JVM. The default configuration defines JARs located in 

+mechanism of the JVM. The default configuration defines JARs located in

 "endorsed" as endorsed.

 

 

@@ -164,59 +189,32 @@
 the check.

 

 

-=========================

-Enabling invoker servlet:

-=========================

-Starting with Tomcat 4.1.12, the invoker servlet is no longer available by

-default in all webapps. Enabling it for all webapps is possible by editing

-$CATALINA_HOME/conf/web.xml to uncomment the "/servlet/*" servlet-mapping

-definition.

-

-Using the invoker servlet in a production environment is not recommended and

-is unsupported.  More details are available on the Tomcat FAQ at

-http://tomcat.apache.org/faq/misc.html#invoker.

-

-

 ==============================

 Viewing the Tomcat Change Log:

 ==============================

 See changelog.html in this directory.

 

 

-============================================

-Multi-byte charset handling bug in Java 1.5:

-============================================

-Public versions of Sun/Oracle Java 1.5 are known to have a nasty bug in

-implementation of Charset.decode() method for certain character sets.

-

-For details, test and a list of affected character sets see:

-

-http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6196991

-https://issues.apache.org/bugzilla/show_bug.cgi?id=52579

-

-The UTF-8 charset is not affected by this issue.

-

-

 =============================

 Cryptographic software notice

 =============================

-This distribution includes cryptographic software.  The country in 

-which you currently reside may have restrictions on the import, 

-possession, use, and/or re-export to another country, of 

-encryption software.  BEFORE using any encryption software, please 

+This distribution includes cryptographic software.  The country in

+which you currently reside may have restrictions on the import,

+possession, use, and/or re-export to another country, of

+encryption software.  BEFORE using any encryption software, please

 check your country's laws, regulations and policies concerning the

-import, possession, or use, and re-export of encryption software, to 

+import, possession, or use, and re-export of encryption software, to

 see if this is permitted.  See <http://www.wassenaar.org/> for more

 information.

 

 The U.S. Government Department of Commerce, Bureau of Industry and

-Security (BIS), has classified this software as Export Commodity 

+Security (BIS), has classified this software as Export Commodity

 Control Number (ECCN) 5D002.C.1, which includes information security

 software using or performing cryptographic functions with asymmetric

 algorithms.  The form and manner of this Apache Software Foundation

 distribution makes it eligible for export under the License Exception

-ENC Technology Software Unrestricted (TSU) exception (see the BIS 

-Export Administration Regulations, Section 740.13) for both object 

+ENC Technology Software Unrestricted (TSU) exception (see the BIS

+Export Administration Regulations, Section 740.13) for both object

 code and source code.

 

 The following provides more details on the included cryptographic

diff --git a/tomcat-uid/webapps/docs/RUNNING.txt b/tomcat-uid/webapps/docs/RUNNING.txt
index 9e43e5d..52bdb58 100644
--- a/tomcat-uid/webapps/docs/RUNNING.txt
+++ b/tomcat-uid/webapps/docs/RUNNING.txt
@@ -16,20 +16,20 @@
 ================================================================================

 

             ===================================================

-            Running The Apache Tomcat 6.0 Servlet/JSP Container

+            Running The Apache Tomcat 7.0 Servlet/JSP Container

             ===================================================

 

-Apache Tomcat 6.0 requires a Java Standard Edition Runtime

-Environment (JRE) version 5.0 or later.

+Apache Tomcat 7.0 requires a Java Standard Edition Runtime

+Environment (JRE) version 6 or later.

 

 =============================

-Running With JRE 5.0 Or Later

+Running With JRE 6 Or Later

 =============================

 

 (1) Download and Install a Java SE Runtime Environment (JRE)

 

 (1.1) Download a Java SE Runtime Environment (JRE),

-      release version 5.0 or later, from

+      release version 6 or later, from

       http://www.oracle.com/technetwork/java/javase/downloads/index.html

 

 (1.2) Install the JRE according to the instructions included with the

@@ -67,17 +67,15 @@
 

 (3) Configure Environment Variables

 

-Tomcat is a Java application and does not use environment variables. The

-variables are used by the Tomcat startup scripts. The scripts use the variables

-to prepare the command that starts Tomcat.

+Tomcat is a Java application and does not use environment variables directly.

+Environment variables are used by the Tomcat startup scripts. The scripts use

+the environment variables to prepare the command that starts Tomcat.

 

 (3.1) Set CATALINA_HOME (required) and CATALINA_BASE (optional)

 

 The CATALINA_HOME environment variable should be set to the location of the

 root directory of the "binary" distribution of Tomcat.

 

-An example was given in (2.2) above.

-

 The Tomcat startup scripts have some logic to set this variable

 automatically if it is absent, based on the location of the startup script

 in *nix and on the current directory in Windows. That logic might not work

@@ -311,7 +309,7 @@
 

   <?xml version="1.0" encoding="UTF-8"?>

   <Context docBase="${catalina.home}/webapps/manager"

-    antiResourceLocking="false" privileged="true" useHttpOnly="true" >

+    antiResourceLocking="false" privileged="true" >

     <Valve className="org.apache.catalina.valves.RemoteAddrValve"

          allow="127\.0\.0\.1" />

   </Context>

@@ -395,14 +393,14 @@
 

     * Documentation for APR/Native library in the Tomcat User's Guide

 

-      http://tomcat.apache.org/tomcat-6.0-doc/apr.html

+      http://tomcat.apache.org/tomcat-7.0-doc/apr.html

 

     * Documentation for the HTTP and AJP protocol connectors in the Tomcat

       Configuration Reference

 

-      http://tomcat.apache.org/tomcat-6.0-doc/config/http.html

+      http://tomcat.apache.org/tomcat-7.0-doc/config/http.html

 

-      http://tomcat.apache.org/tomcat-6.0-doc/config/ajp.html

+      http://tomcat.apache.org/tomcat-7.0-doc/config/ajp.html

 

  - Apache Tomcat Native project home

 

@@ -457,22 +455,22 @@
 

     * Installing Apache Tomcat

 

-      http://tomcat.apache.org/tomcat-6.0-doc/setup.html

+      http://tomcat.apache.org/tomcat-7.0-doc/setup.html

 

     * Windows service HOW-TO

 

-      http://tomcat.apache.org/tomcat-6.0-doc/windows-service-howto.html

+      http://tomcat.apache.org/tomcat-7.0-doc/windows-service-howto.html

 

 The binary files of Apache Commons Daemon in Apache Tomcat distributions

 for Windows are named:

 

-  - "tomcat6.exe"

-  - "tomcat6w.exe"

+  - "tomcat7.exe"

+  - "tomcat7w.exe"

 

 These files are renamed copies of "prunsrv.exe" and "prunmgr.exe" from

 Apache Commons Daemon distribution. The file names have a meaning: they are

 used as the service name to register the service in Windows, as well as the

 key name to store distinct configuration for this installation of

-"procrun". If you would like to install several instances of Tomcat 6.0

+"procrun". If you would like to install several instances of Tomcat 7.0

 in parallel, you have to further rename those files, using the same naming

 scheme.

diff --git a/tomcat-uid/webapps/docs/WEB-INF/web.xml b/tomcat-uid/webapps/docs/WEB-INF/web.xml
index 57ebcf7..dd51ceb 100644
--- a/tomcat-uid/webapps/docs/WEB-INF/web.xml
+++ b/tomcat-uid/webapps/docs/WEB-INF/web.xml
@@ -16,9 +16,11 @@
   limitations under the License.

 -->

 <web-app xmlns="http://java.sun.com/xml/ns/javaee"

-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

-   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

-   version="2.5"> 

+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

+                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

+  version="3.0"

+  metadata-complete="true">

 

   <display-name>Tomcat Documentation</display-name>

   <description>

diff --git a/tomcat-uid/webapps/docs/aio.html b/tomcat-uid/webapps/docs/aio.html
index 19448ab..44de979 100644
--- a/tomcat-uid/webapps/docs/aio.html
+++ b/tomcat-uid/webapps/docs/aio.html
@@ -1,15 +1,90 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 6.0 (6.0.41) - Advanced IO and Tomcat</title><meta name="author" content="Remy Maucherat"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - Advanced IO and Tomcat</title><meta name="author" content="Remy Maucherat"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat 6.0</h1><h2>Advanced IO and Tomcat</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Advanced IO and Tomcat</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Comet_support">Comet support</a><ol><li><a href="#CometEvent">CometEvent</a></li><li><a href="#CometFilter">CometFilter</a></li><li><a href="#Example_code">Example code</a></li><li><a href="#Comet_timeouts">Comet timeouts</a></li></ol></li><li><a href="#Asynchronous_writes">Asynchronous writes</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

   <p>

-    With usage of APR or NIO APIs as the basis of its connectors, Tomcat is 

-    able to provide a number of extensions over the regular blocking IO 

+    With usage of APR or NIO APIs as the basis of its connectors, Tomcat is

+    able to provide a number of extensions over the regular blocking IO

     as provided with support for the Servlet API.

   </p>

 

@@ -30,9 +105,9 @@
   </p>

 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="CometEvent"><strong>CometEvent</strong></a></font></td></tr><tr><td><blockquote>

-  

+

   <p>

-    Servlets which implement the <code>org.apache.catalina.CometProcessor</code>

+    Servlets which implement the <code>org.apache.catalina.comet.CometProcessor</code>

     interface will have their event method invoked rather than the usual service

     method, according to the event which occurred. The event object gives

     access to the usual request and response objects, which may be used in the

@@ -41,38 +116,38 @@
     an END or ERROR event.

     The following event types exist:

   </p>

-  

+

   <ul>

-  <li>EventType.BEGIN: will be called at the beginning 

-     of the processing of the connection. It can be used to initialize any relevant 

-     fields using the request and response objects. Between the end of the processing 

+  <li>EventType.BEGIN: will be called at the beginning

+     of the processing of the connection. It can be used to initialize any relevant

+     fields using the request and response objects. Between the end of the processing

      of this event, and the beginning of the processing of the end or error events,

      it is possible to use the response object to write data on the open connection.

-     Note that the response object and dependent OutputStream and Writer are still 

-     not synchronized, so when they are accessed by multiple threads, 

-     synchronization is mandatory. After processing the initial event, the request 

+     Note that the response object and dependent OutputStream and Writer are still

+     not synchronized, so when they are accessed by multiple threads,

+     synchronization is mandatory. After processing the initial event, the request

      is considered to be committed.</li>

   <li>EventType.READ: This indicates that input data is available, and that one read can be made

        without blocking. The available and ready methods of the InputStream or

        Reader may be used to determine if there is a risk of blocking: the servlet

-       should read while data is reported available. When encountering a read error, 

-       the servlet should report it by propagating the exception properly. Throwing 

-       an exception will cause the error event to be invoked, and the connection 

-       will be closed. 

+       should read while data is reported available. When encountering a read error,

+       the servlet should report it by propagating the exception properly. Throwing

+       an exception will cause the error event to be invoked, and the connection

+       will be closed.

        Alternately, it is also possible to catch any exception, perform clean up

        on any data structure the servlet may be using, and using the close method

-       of the event. It is not allowed to attempt reading data from the request 

+       of the event. It is not allowed to attempt reading data from the request

        object outside of the execution of this method.<br>

        On some platforms, like Windows, a client disconnect is indicated by a READ event.

        Reading from the stream may result in -1, an IOException or an EOFException.

        Make sure you properly handle all these three cases.

-       If you don't catch the IOException, Tomcat will instantly invoke your event chain with an ERROR as 

+       If you don't catch the IOException, Tomcat will instantly invoke your event chain with an ERROR as

        it catches the error for you, and you will be notified of the error at that time.

   </li>

   <li>EventType.END: End may be called to end the processing of the request. Fields that have

      been initialized in the begin method should be reset. After this event has

      been processed, the request and response objects, as well as all their dependent

-     objects will be recycled and used to process other requests. End will also be 

+     objects will be recycled and used to process other requests. End will also be

      called when data is available and the end of file is reached on the request input

      (this usually indicates the client has pipelined a request).</li>

   <li>EventType.ERROR: Error will be called by the container in the case where an IO exception

@@ -88,13 +163,13 @@
   </p>

 

   <ul>

-  <li>EventSubType.TIMEOUT: The connection timed out (sub type of ERROR); note that this ERROR 

-    type is not fatal, and the connection will not be closed unless the servlet uses the close 

+  <li>EventSubType.TIMEOUT: The connection timed out (sub type of ERROR); note that this ERROR

+    type is not fatal, and the connection will not be closed unless the servlet uses the close

     method of the event.

   </li>

   <li>EventSubType.CLIENT_DISCONNECT: The client connection was closed (sub type of ERROR).

   </li>

-  <li>EventSubType.IOEXCEPTION: An IO exception occurred, such as invalid content, for example, 

+  <li>EventSubType.IOEXCEPTION: An IO exception occurred, such as invalid content, for example,

     an invalid chunk block (sub type of ERROR).

   </li>

   <li>EventSubType.WEBAPP_RELOAD: The web application is being reloaded (sub type of END).

@@ -105,43 +180,42 @@
 

   <p>

     As described above, the typical lifecycle of a Comet request will consist in a series of

-    events such as: BEGIN -&gt; READ -&gt; READ -&gt; READ -&gt; ERROR/TIMEOUT. At any time, the servlet 

+    events such as: BEGIN -&gt; READ -&gt; READ -&gt; READ -&gt; ERROR/TIMEOUT. At any time, the servlet

     may end processing of the request by using the close method of the event object.

   </p>

-  

+

   </blockquote></td></tr></table>

 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="CometFilter"><strong>CometFilter</strong></a></font></td></tr><tr><td><blockquote>

-  

+

   <p>

     Similar to regular filters, a filter chain is invoked when comet events are processed.

-    These filters should implement the CometFilter interface (which works in the same way as 

+    These filters should implement the CometFilter interface (which works in the same way as

     the regular Filter interface), and should be declared and mapped in the deployment

     descriptor in the same way as a regular filter. The filter chain when processing an event

     will only include filters which match all the usual mapping rules, and also implement

     the CometFiler interface.

   </p>

-  

+

   </blockquote></td></tr></table>

 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Example code"><!--()--></a><a name="Example_code"><strong>Example code</strong></a></font></td></tr><tr><td><blockquote>

-  

+

   <p>

     The following pseudo code servlet implements asynchronous chat functionality using the API

     described above:

   </p>

-  

-  <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-public class ChatServlet

+

+  <div class="codeBox"><pre><code>public class ChatServlet

     extends HttpServlet implements CometProcessor {

 

-    protected ArrayList&lt;HttpServletResponse&gt; connections = 

+    protected ArrayList&lt;HttpServletResponse&gt; connections =

         new ArrayList&lt;HttpServletResponse&gt;();

     protected MessageSender messageSender = null;

-    

+

     public void init() throws ServletException {

         messageSender = new MessageSender();

-        Thread messageSenderThread = 

+        Thread messageSenderThread =

             new Thread(messageSender, "MessageSender[" + getServletContext().getContextPath() + "]");

         messageSenderThread.setDaemon(true);

         messageSenderThread.start();

@@ -155,7 +229,7 @@
 

     /**

      * Process the given Comet event.

-     * 

+     *

      * @param event The Comet event that will be processed

      * @throws IOException

      * @throws ServletException

@@ -167,8 +241,8 @@
         if (event.getEventType() == CometEvent.EventType.BEGIN) {

             log("Begin for session: " + request.getSession(true).getId());

             PrintWriter writer = response.getWriter();

-            writer.println("&lt;!doctype html public \"-//w3c//dtd html 4.0 transitional//en\"&gt;");

-            writer.println("&lt;head&gt;&lt;title&gt;JSP Chat&lt;/title&gt;&lt;/head&gt;&lt;body bgcolor=\"#FFFFFF\"&gt;");

+            writer.println("&lt;!DOCTYPE html&gt;");

+            writer.println("&lt;head&gt;&lt;title&gt;JSP Chat&lt;/title&gt;&lt;/head&gt;&lt;body&gt;");

             writer.flush();

             synchronized(connections) {

                 connections.add(response);

@@ -193,7 +267,7 @@
             do {

                 int n = is.read(buf); //can throw an IOException

                 if (n &gt; 0) {

-                    log("Read " + n + " bytes: " + new String(buf, 0, n) 

+                    log("Read " + n + " bytes: " + new String(buf, 0, n)

                             + " for session: " + request.getSession(true).getId());

                 } else if (n &lt; 0) {

                     error(event, request, response);

@@ -207,10 +281,10 @@
 

         protected boolean running = true;

         protected ArrayList&lt;String&gt; messages = new ArrayList&lt;String&gt;();

-        

+

         public MessageSender() {

         }

-        

+

         public void stop() {

             running = false;

         }

@@ -265,15 +339,16 @@
 

     }

 

-}

-  </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-  

+}</code></pre></div>

+

   </blockquote></td></tr></table>

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Comet timeouts"><!--()--></a><a name="Comet_timeouts"><strong>Comet timeouts</strong></a></font></td></tr><tr><td><blockquote>

     <p>If you are using the NIO connector, you can set individual timeouts for your different comet connections.

-       To set a timeout, simply set a request attribute like the following code shows:

-       <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>CometEvent event.... event.setTimeout(30*1000);</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div> or

-       <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>event.getHttpServletRequest().setAttribute("org.apache.tomcat.comet.timeout", new Integer(30 * 1000));</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+       To set a timeout, simply set a request attribute like the following code shows:</p>

+    <div class="codeBox"><pre><code>CometEvent event.... event.setTimeout(30*1000);</code></pre></div>

+    <p>or</p>

+    <div class="codeBox"><pre><code>event.getHttpServletRequest().setAttribute("org.apache.tomcat.comet.timeout", new Integer(30 * 1000));</code></pre></div>

+    <p>

        This sets the timeout to 30 seconds.

        Important note: in order to set this timeout, it has to be done on the <code>BEGIN</code> event.

        The default value is <code>soTimeout</code>

@@ -286,7 +361,7 @@
 

   <p>

     When APR or NIO is enabled, Tomcat supports using sendfile to send large static files.

-    These writes, as soon as the system load increases, will be performed 

+    These writes, as soon as the system load increases, will be performed

     asynchronously in the most efficient way. Instead of sending a large response using

     blocking writes, it is possible to write content to a static file, and write it

     using a sendfile code. A caching valve could take advantage of this to cache the

@@ -294,17 +369,17 @@
     available if the request attribute <code>org.apache.tomcat.sendfile.support</code>

     is set to <code>Boolean.TRUE</code>.

   </p>

-  

+

   <p>

     Any servlet can instruct Tomcat to perform a sendfile call by setting the appropriate

     request attributes. It is also necessary to correctly set the content length

     for the response. When using sendfile, it is best to ensure that neither the

     request or response have been wrapped, since as the response body will be sent later

-    by the connector itself, it cannot be filtered. Other than setting the 3 needed 

+    by the connector itself, it cannot be filtered. Other than setting the 3 needed

     request attributes, the servlet should not send any response data, but it may use

     any method which will result in modifying the response header (like setting cookies).

   </p>

-  

+

   <ul>

   <li><code>org.apache.tomcat.sendfile.filename</code>: Canonical filename of the file which will be sent as

       a String</li>

@@ -312,6 +387,31 @@
   <li><code>org.apache.tomcat.sendfile.end</code>: End offset as a Long</li>

   </ul>

 

-  </blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+  </blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/aio.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/api/index.html b/tomcat-uid/webapps/docs/api/index.html
index ddd24ab..1918dee 100644
--- a/tomcat-uid/webapps/docs/api/index.html
+++ b/tomcat-uid/webapps/docs/api/index.html
@@ -23,11 +23,12 @@
 

 <body>

 

-Tomcat's internal javadoc is no longer installed by default. Download and install 

+Tomcat's internal javadoc is not installed by default. Download and install

 the "fulldocs" package to get it.

 

-You can also access the javadoc online in the Tomcat 

-<a href="http://tomcat.apache.org/tomcat-6.0-doc/">documentation bundle</a>.

+You can also access the javadoc online in the Tomcat

+<a href="http://tomcat.apache.org/tomcat-7.0-doc/">

+documentation bundle</a>.

 

 </body>

 </html>

diff --git a/tomcat-uid/webapps/docs/appdev/build.xml.txt b/tomcat-uid/webapps/docs/appdev/build.xml.txt
index ffbb584..2162535 100644
--- a/tomcat-uid/webapps/docs/appdev/build.xml.txt
+++ b/tomcat-uid/webapps/docs/appdev/build.xml.txt
@@ -17,7 +17,7 @@
 

 <!--

      General purpose build script for web applications and web services,

-     including enhanced support for deploying directly to a Tomcat 6

+     including enhanced support for deploying directly to a Tomcat

      based server.

 

      This build script assumes that the source code of your web application

@@ -103,7 +103,7 @@
                        Defaults to "build".

 

   catalina.home        The directory in which you have installed

-                       a binary distribution of Tomcat 6.  This will

+                       a binary distribution of Tomcat.  This will

                        be used by the "deploy" target.

 

   dist.home            The name of the base directory in which

@@ -111,7 +111,7 @@
                        Defaults to "dist".

 

   manager.password     The login password of a user that is assigned the

-                       "manager" role (so that he or she can execute

+                       "manager-script" role (so that he or she can execute

                        commands via the "/manager" web application)

 

   manager.url          The URL of the "/manager" web application on the

@@ -119,7 +119,7 @@
                        applications and web services.

 

   manager.username     The login username of a user that is assigned the

-                       "manager" role (so that he or she can execute

+                       "manager-script" role (so that he or she can execute

                        commands via the "/manager" web application)

 

 -->

@@ -131,7 +131,7 @@
   <property name="catalina.home" value="../../../.."/> <!-- UPDATE THIS! -->

   <property name="dist.home"     value="${basedir}/dist"/>

   <property name="docs.home"     value="${basedir}/docs"/>

-  <property name="manager.url"   value="http://localhost:8080/manager"/>

+  <property name="manager.url"   value="http://localhost:8080/manager/text"/>

   <property name="src.home"      value="${basedir}/src"/>

   <property name="web.home"      value="${basedir}/web"/>

 

@@ -148,7 +148,7 @@
   * Being copied into the "/WEB-INF/lib" directory during execution

     of the "deploy" target.

 

-  Because we will automatically include all of the Java classes that Tomcat 6

+  Because we will automatically include all of the Java classes that Tomcat

   exposes to web applications, we will not need to explicitly list any of those

   dependencies.  You only need to worry about external dependencies for JAR

   files that you are going to include inside your "/WEB-INF/lib" directory.

@@ -202,10 +202,10 @@
 <!--

 

   These properties define custom tasks for the Ant build tool that interact

-  with the "/manager" web application installed with Tomcat 6.  Before they

+  with the "/manager" web application installed with Tomcat.  Before they

   can be successfully utilized, you must perform the following steps:

 

-  - Copy the file "lib/catalina-ant.jar" from your Tomcat 6

+  - Copy the file "lib/catalina-ant.jar" from your Tomcat

     installation into the "lib" directory of your Ant installation.

 

   - Create a "build.properties" file in your application's top-level

@@ -346,7 +346,7 @@
 

 <!--

 

-  The "install" target tells the specified Tomcat 6 installation to dynamically

+  The "install" target tells the specified Tomcat installation to dynamically

   install this web application and make it available for execution.  It does

   *not* cause the existence of this web application to be remembered across

   Tomcat restarts; if you restart the server, you will need to re-install all

@@ -404,7 +404,7 @@
 

 <!--

 

-  The "list" target asks the specified Tomcat 6 installation to list the

+  The "list" target asks the specified Tomcat installation to list the

   currently running web applications, either loaded at startup time or

   installed dynamically.  It is useful to determine whether or not the

   application you are currently developing has been installed.

@@ -464,7 +464,7 @@
 

 <!--

 

-  The "reload" signals the specified application Tomcat 6 to shut itself down

+  The "reload" signals the specified application Tomcat to shut itself down

   and reload. This can be useful when the web application context is not

   reloadable and you have updated classes or property files in the

   /WEB-INF/classes directory or when you have added or updated jar files in the

@@ -472,7 +472,7 @@
 

   NOTE: The /WEB-INF/web.xml web application configuration file is not reread

   on a reload. If you have made changes to your web.xml file you must stop

-  then start the web application. 

+  then start the web application.

 

 -->

 

@@ -491,7 +491,7 @@
 

 <!--

 

-  The "remove" target tells the specified Tomcat 6 installation to dynamically

+  The "remove" target tells the specified Tomcat installation to dynamically

   remove this web application from service.

 

   NOTE:  This is the logical opposite of the "install" target.

diff --git a/tomcat-uid/webapps/docs/appdev/deployment.html b/tomcat-uid/webapps/docs/appdev/deployment.html
index 560827e..c2d9abd 100644
--- a/tomcat-uid/webapps/docs/appdev/deployment.html
+++ b/tomcat-uid/webapps/docs/appdev/deployment.html
@@ -1,10 +1,85 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (6.0.41) - Deployment</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (7.0.77) - Deployment</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Application Developer's Guide</h1><h2>Deployment</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

-<ul><li><a href="#Background">Background</a></li><li><a href="#Standard_Directory_Layout">Standard Directory Layout</a></li><li><a href="#Shared_Library_Files">Shared Library Files</a></li><li><a href="#Web_Application_Deployment_Descriptor">Web Application Deployment Descriptor</a></li><li><a href="#Tomcat_Context_Descriptor">Tomcat Context Descriptor</a></li><li><a href="#Deployment_With_Tomcat_6">Deployment With Tomcat 6</a></li></ul>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">App Dev Guide Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Deployment</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Background">Background</a></li><li><a href="#Standard_Directory_Layout">Standard Directory Layout</a></li><li><a href="#Shared_Library_Files">Shared Library Files</a></li><li><a href="#Web_Application_Deployment_Descriptor">Web Application Deployment Descriptor</a></li><li><a href="#Tomcat_Context_Descriptor">Tomcat Context Descriptor</a></li><li><a href="#Deployment_With_Tomcat">Deployment With Tomcat</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Background"><strong>Background</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>Before describing how to organize your source code directories,

@@ -71,8 +146,8 @@
     application, such as third party class libraries or JDBC drivers.</li>

 </ul>

 

-<p>When you install an application into Tomcat (or any other

-2.2/2.3-compatible server), the classes in the <code>WEB-INF/classes/</code>

+<p>When you install an application into Tomcat (or any other 2.2 or later

+Servlet container), the classes in the <code>WEB-INF/classes/</code>

 directory, as well as all classes in JAR files found in the

 <code>WEB-INF/lib/</code> directory, are made visible to other classes

 within your particular web application.  Thus, if

@@ -87,22 +162,22 @@
 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Shared Library Files"><!--()--></a><a name="Shared_Library_Files"><strong>Shared Library Files</strong></a></font></td></tr><tr><td><blockquote>

 

-<p>Like most servlet containers, Tomcat 6 also supports mechanisms to install

+<p>Like most servlet containers, Tomcat also supports mechanisms to install

 library JAR files (or unpacked classes) once, and make them visible to all

 installed web applications (without having to be included inside the web

 application itself).  The details of how Tomcat locates and shares such

 classes are described in the

 <a href="../class-loader-howto.html">Class Loader HOW-TO</a> documentation.

-The location commonly used within a Tomcat 6 installation for shared code is

+The location commonly used within a Tomcat installation for shared code is

 <strong>$CATALINA_HOME/lib</strong>. JAR files placed here are visible both to

 web applications and internal Tomcat code. This is a good place to put JDBC

 drivers that are required for both your application or internal Tomcat use

 (such as for a JDBCRealm).</p>

 

-<p>Out of the box, a standard Tomcat 6 installation includes a variety

+<p>Out of the box, a standard Tomcat installation includes a variety

 of pre-installed shared library files, including:</p>

 <ul>

-<li>The <em>Servlet 2.5</em> and <em>JSP 2.1</em> APIs that are fundamental

+<li>The <em>Servlet 3.0</em> and <em>JSP 2.2</em> APIs that are fundamental

     to writing servlets and JavaServer Pages.<br><br></li>

 </ul>

 

@@ -125,7 +200,7 @@
 

 <p><strong>NOTE</strong> - The Servlet Specification includes a Document

 Type Descriptor (DTD) for the web application deployment descriptor, and

-Tomcat 6 enforces the rules defined here when processing your application's

+Tomcat enforces the rules defined here when processing your application's

 <code>/WEB-INF/web.xml</code> file.  In particular, you <strong>must</strong>

 enter your descriptor elements (such as <code>&lt;filter&gt;</code>,

 <code>&lt;servlet&gt;</code>, and <code>&lt;servlet-mapping&gt;</code> in

@@ -138,22 +213,20 @@
 configuration and more. This XML file must contain one Context element, which

 will be considered as if it was the child of the Host element corresponding

 to the Host to which the web application is being deployed. The

-<a href="../config/index.html">Tomcat configuration documentation</a> contains

+<a href="../config/context.html">Tomcat configuration documentation</a> contains

 information on the Context element.</p>

 

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deployment With Tomcat 6"><!--()--></a><a name="Deployment_With_Tomcat_6"><strong>Deployment With Tomcat 6</strong></a></font></td></tr><tr><td><blockquote>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deployment With Tomcat"><!--()--></a><a name="Deployment_With_Tomcat"><strong>Deployment With Tomcat</strong></a></font></td></tr><tr><td><blockquote>

 

-    <blockquote><em>

-    <p>The description below uses the variable name $CATALINA_BASE to refer the

+    <p><em>The description below uses the variable name $CATALINA_BASE to refer the

     base directory against which most relative paths are resolved. If you have

-    not configured Tomcat 6 for multiple instances by setting a CATALINA_BASE

+    not configured Tomcat for multiple instances by setting a CATALINA_BASE

     directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME,

-    the directory into which you have installed Tomcat 6.</p>

-    </em></blockquote>

+    the directory into which you have installed Tomcat.</em></p>

 

 <p>In order to be executed, a web application must be deployed on

 a servlet container.  This is true even during development.

-We will describe using Tomcat 6 to provide the execution environment.

+We will describe using Tomcat to provide the execution environment.

 A web application can be deployed in Tomcat by one of the following

 approaches:</p>

 <ul>

@@ -177,18 +250,18 @@
     directory that Tomcat created, and then restart Tomcat, in order to reflect

     your changes.

     <br><br></li>

-<li><em>Use the Tomcat 6 "Manager" web application to deploy and undeploy

-    web applications</em>.  Tomcat 6 includes a web application, deployed

+<li><em>Use the Tomcat "Manager" web application to deploy and undeploy

+    web applications</em>.  Tomcat includes a web application, deployed

     by default on context path <code>/manager</code>, that allows you to

     deploy and undeploy applications on a running Tomcat server without

-    restarting it.  See the administrator documentation (TODO: hyperlink)

+    restarting it. See <a href="../manager-howto.html">Manager App HOW-TO</a>

     for more information on using the Manager web application.<br><br></li>

-<li><em>Use "Manager" Ant Tasks In Your Build Script</em>.  Tomcat 6

+<li><em>Use "Manager" Ant Tasks In Your Build Script</em>.  Tomcat

     includes a set of custom task definitions for the <code>Ant</code>

     build tool that allow you to automate the execution of commands to the

     "Manager" web application.  These tasks are used in the Tomcat deployer.

     <br><br></li>

-<li><em>Use the Tomcat Deployer</em>.  Tomcat 6 includes a packaged tool

+<li><em>Use the Tomcat Deployer</em>.  Tomcat includes a packaged tool

     bundling the Ant tasks, and can be used to automatically precompile JSPs

     which are part of the web application before deployment to the server.

     <br><br></li>

@@ -201,6 +274,31 @@
 unpacked directory structure (as Tomcat does), or to provide mechanisms for

 shared library files, but these features are commonly available.</p>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/appdev/deployment.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/appdev/index.html b/tomcat-uid/webapps/docs/appdev/index.html
index c811554..6a1990e 100644
--- a/tomcat-uid/webapps/docs/appdev/index.html
+++ b/tomcat-uid/webapps/docs/appdev/index.html
@@ -1,9 +1,84 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (6.0.41) - Table of Contents</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (7.0.77) - Table of Contents</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Application Developer's Guide</h1><h2>Table of Contents</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Preface"><strong>Preface</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">App Dev Guide Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Table of Contents</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Preface"><strong>Preface</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>This manual includes contributions from many members of the Tomcat Project

 developer community.  The following authors have provided significant content:

@@ -42,6 +117,31 @@
     practice using the described techniques.</li>

 </ul>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/appdev/index.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/appdev/installation.html b/tomcat-uid/webapps/docs/appdev/installation.html
index 70aaf8e..eb8023e 100644
--- a/tomcat-uid/webapps/docs/appdev/installation.html
+++ b/tomcat-uid/webapps/docs/appdev/installation.html
@@ -1,36 +1,111 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (6.0.41) - Installation</title><meta name="author" content="Craig R. McClanahan"><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

-      The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Application Developer's Guide</h1><h2>Installation</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Installation"><strong>Installation</strong></a></font></td></tr><tr><td><blockquote>

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (7.0.77) - Installation</title><meta name="author" content="Craig R. McClanahan"><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

 

-<p>In order to use Tomcat 6 for developing web applications, you must first

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">App Dev Guide Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Installation</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Installation"><strong>Installation</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>In order to use Tomcat for developing web applications, you must first

 install it (and the software it depends on).  The required steps are outlined

 in the following subsections.</p>

 

 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JDK"><strong>JDK</strong></a></font></td></tr><tr><td><blockquote>

 

-<p>Tomcat 6.0 was designed to run on J2SE 5.0.

+<p>Tomcat 7.0 was designed to run on Java SE 6.

 </p>

 

 <p>Compatible JDKs for many platforms (or links to where they can be found)

 are available at

-<a href="http://java.sun.com/j2se/">http://java.sun.com/j2se/</a>.</p>

+<a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">http://www.oracle.com/technetwork/java/javase/downloads/index.html</a>.</p>

 

 </blockquote></td></tr></table>

 

 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat"><strong>Tomcat</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>Binary downloads of the <strong>Tomcat</strong> server are available from

-<a href="http://tomcat.apache.org/download-60.cgi">http://tomcat.apache.org/download-60.cgi</a>.

+<a href="http://tomcat.apache.org/">http://tomcat.apache.org/</a>.

 This manual assumes you are using the most recent release

-of Tomcat 6.  Detailed instructions for downloading and installing

-Tomcat 6 are available <a href="../setup.html">here</a>.</p>

+of Tomcat 7.  Detailed instructions for downloading and installing

+Tomcat are available <a href="../setup.html">here</a>.</p>

 

 <p>In the remainder of this manual, example shell scripts assume that you have

 set an environment variable <code>CATALINA_HOME</code> that contains the

-pathname to the directory in which Tomcat 6 has been installed. Optionally, if

+pathname to the directory in which Tomcat has been installed. Optionally, if

 Tomcat has been configured for multiple instances, each instance will have its

 own <code>CATALINA_BASE</code> configured.</p>

 

@@ -40,11 +115,11 @@
 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Ant"><strong>Ant</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>Binary downloads of the <strong>Ant</strong> build tool are available from

-<a href="http://ant.apache.org/bindownload.cgi">http://ant.apache.org/bindownload.cgi</a>.

-This manual assumes you are using Ant 1.4 or later.  The instructions should

-also be compatible with later versions, but this has not been tested.</p>

+<a href="http://ant.apache.org/">http://ant.apache.org/</a>.

+This manual assumes you are using Ant 1.8 or later.  The instructions may

+also be compatible with other versions, but this has not been tested.</p>

 

-<p>Download and install Ant from the distribution directory mentioned above.

+<p>Download and install Ant.

 Then, add the <code>bin</code> directory of the Ant distribution to your

 <code>PATH</code> environment variable, following the standard practices for

 your operating system platform.  Once you have done this, you will be able to

@@ -65,11 +140,36 @@
 <p>Detailed instructions for installing and using source code control

 applications is beyond the scope of this manual.  However, CVS server and

 client tools for many platforms (along with documentation) can be downloaded

-from <a href="http://www.cvshome.org">http://www.cvshome.org</a>.</p>

+from <a href="http://www.cvshome.org/">http://www.cvshome.org/</a>.</p>

 

 </blockquote></td></tr></table>

 

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/appdev/installation.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/appdev/introduction.html b/tomcat-uid/webapps/docs/appdev/introduction.html
index 4038ed6..9de59cb 100644
--- a/tomcat-uid/webapps/docs/appdev/introduction.html
+++ b/tomcat-uid/webapps/docs/appdev/introduction.html
@@ -1,9 +1,84 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (6.0.41) - Introduction</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (7.0.77) - Introduction</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Application Developer's Guide</h1><h2>Introduction</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Overview"><strong>Overview</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">App Dev Guide Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Introduction</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Overview"><strong>Overview</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>Congratulations!  You've decided to (or been told to) learn how to

 build web applications using servlets and JSP pages, and picked the

@@ -20,7 +95,7 @@
 

 <p>The discussion in this manual is aimed at developers who will be using

 a text editor along with command line tools to develop and debug their

-applications.  As such, the recommendations are fairly generic -- but you

+applications.  As such, the recommendations are fairly generic &ndash; but you

 should easily be able to apply them in either a Windows-based or Unix-based

 development environment.  If you are utilizing an Integrated Development

 Environment (IDE) tool, you will need to adapt the advice given here to

@@ -32,8 +107,8 @@
 information, documentation, and software that is useful in developing

 web applications with Tomcat.</p>

 <ul>

-<li><a href="http://jcp.org/aboutJava/communityprocess/final/jsr245/index.html">http://jcp.org/aboutJava/communityprocess/final/jsr245/</a> -

-    <i>JavaServer Pages (JSP) Specification, Version 2.1</i>.  Describes

+<li><p><a href="http://jcp.org/aboutJava/communityprocess/mrel/jsr245/index.html">http://jcp.org/aboutJava/communityprocess/mrel/jsr245/</a> -

+    <i>JavaServer Pages (JSP) Specification, Version 2.2</i>.  Describes

     the programming environment provided by standard implementations

     of the JavaServer Pages (JSP) technology.  In conjunction with

     the Servlet API Specification (see below), this document describes

@@ -41,20 +116,45 @@
     information on scripting (Chapter 9), tag extensions (Chapter 7),

     and packaging JSP pages (Appendix A) is useful.  The Javadoc

     API Documentation is included in the specification, and with the

-    Tomcat download.<br><br></li>

-<li><a href="http://jcp.org/aboutJava/communityprocess/mrel/jsr154/index2.html">http://jcp.org/aboutJava/communityprocess/mrel/jsr154/index2.html</a> -

-    <i>Servlet API Specification, Version 2.5</i>.  Describes the

+    Tomcat download.</p></li>

+<li><p><a href="http://jcp.org/aboutJava/communityprocess/mrel/jsr315/index.html">http://jcp.org/aboutJava/communityprocess/mrel/jsr315/</a> -

+    <i>Servlet API Specification, Version 3.0</i>.  Describes the

     programming environment that must be provided by all servlet

     containers conforming to this specification.  In particular, you

     will need this document to understand the web application

-    directory structure and deployment file (Chapter 9), methods of

-    mapping request URIs to servlets (Chapter 11), container managed

-    security (Chapter 12), and the syntax of the <code>web.xml</code>

-    Web Application Deployment Descriptor (Chapter 13).  The Javadoc

+    directory structure and deployment file (Chapter 10), methods of

+    mapping request URIs to servlets (Chapter 12), container managed

+    security (Chapter 13), and the syntax of the <code>web.xml</code>

+    Web Application Deployment Descriptor (Chapter 14).  The Javadoc

     API Documentation is included in the specification, and with the

-    Tomcat download.<br><br></li>

+    Tomcat download.</p></li>

 </ul>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/appdev/introduction.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/appdev/processes.html b/tomcat-uid/webapps/docs/appdev/processes.html
index 1501f65..0e1cf79 100644
--- a/tomcat-uid/webapps/docs/appdev/processes.html
+++ b/tomcat-uid/webapps/docs/appdev/processes.html
@@ -1,9 +1,84 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (6.0.41) - Development Processes</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (7.0.77) - Development Processes</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Application Developer's Guide</h1><h2>Development Processes</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">App Dev Guide Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Development Processes</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Development_Processes">Development Processes</a><ol><li><a href="#One-Time_Setup_of_Ant_and_Tomcat_for_Development">One-Time Setup of Ant and Tomcat for Development</a></li><li><a href="#Create_Project_Source_Code_Directory">Create Project Source Code Directory</a></li><li><a href="#Edit_Source_Code_and_Pages">Edit Source Code and Pages</a></li><li><a href="#Build_the_Web_Application">Build the Web Application</a></li><li><a href="#Test_Your_Web_Application">Test Your Web Application</a></li><li><a href="#Creating_a_Release">Creating a Release</a></li></ol></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Development Processes"><!--()--></a><a name="Development_Processes"><strong>Development Processes</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -28,20 +103,20 @@
 <em>Manager</em> web application, you need to perform the following tasks

 once (no matter how many web applications you plan to develop).</p>

 <ul>

-<li><em>Configure the Ant custom tasks</em>.  The implementation code for the

+<li><p><em>Configure the Ant custom tasks</em>.  The implementation code for the

     Ant custom tasks is in a JAR file named

     <code>$CATALINA_HOME/lib/catalina-ant.jar</code>, which must be

     copied in to the <code>lib</code> directory of your Ant installation.

-    <br><br></li>

-<li><em>Define one or more Tomcat users</em>.  The <em>Manager</em> web

+    </p></li>

+<li><p><em>Define one or more Tomcat users</em>.  The <em>Manager</em> web

     application runs under a security constraint that requires a user to be

-    logged in, and have the security role <code>manager</code> assigned to

-    him or her.  How such users are defined depends on which Realm you have

+    logged in, and have the security role <code>manager-script</code> assigned

+    to him or her.  How such users are defined depends on which Realm you have

     configured in Tomcat's <code>conf/server.xml</code> file -- see the

     <a href="../realm-howto.html">Realm Configuration HOW-TO</a> for more

     information.  You may define any number of users (with any username

-    and password that you like) with the <code>manager</code> role.

-    <br><br></li>

+    and password that you like) with the <code>manager-script</code> role.

+    </p></li>

 </ul>

 

 </blockquote></td></tr></table>

@@ -59,38 +134,32 @@
 repository.  This might be done by a series of commands like this, where

 <code>{project}</code> is the name under which your project should be

 stored in the CVS repository, and {username} is your login username:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-cd {my home directory}

-mkdir myapp	&lt;-- Assumed "project source directory"

+<div class="codeBox"><pre><code>cd {my home directory}

+mkdir myapp &lt;-- Assumed "project source directory"

 cd myapp

 mkdir docs

 mkdir src

 mkdir web

 mkdir web/WEB-INF

 cvs import -m "Initial Project Creation" {project} \

-	{username} start

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    {username} start</code></pre></div>

 

 <p>Now, to verify that it was created correctly in CVS, we will perform a

 checkout of the new project:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-cd ..

+<div class="codeBox"><pre><code>cd ..

 mv myapp myapp.bu

-cvs checkout {project}

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+cvs checkout {project}</code></pre></div>

 

 <p>Next, you will need to create and check in an initial version of the

 <code>build.xml</code> script to be used for development.  For getting

 started quickly and easily, base your <code>build.xml</code> on the

 <a href="build.xml.txt">basic build.xml file</a>, included with this manual,

 or code it from scratch.</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-cd {my home directory}

+<div class="codeBox"><pre><code>cd {my home directory}

 cd myapp

-emacs build.xml		&lt;-- if you want a real editor :-)

+emacs build.xml     &lt;-- if you want a real editor :-)

 cvs add build.xml

-cvs commit

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+cvs commit</code></pre></div>

 

 <p>Until you perform the CVS commit, your changes are local to your own

 development directory.  Committing makes those changes visible to other

@@ -102,19 +171,17 @@
 directory.  The supported properties are listed in the comments inside

 the sample <code>build.xml</code> script.  At a minimum, you will generally

 need to define the <code>catalina.home</code> property defining where

-Tomcat 6 is installed, and the manager application username and password.

+Tomcat is installed, and the manager application username and password.

 You might end up with something like this:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-# Context path to install this application on

+<div class="codeBox"><pre><code># Context path to install this application on

 app.path=/hello

 

-# Tomcat 6 installation directory

-catalina.home=/usr/local/apache-tomcat-6.0

+# Tomcat 7 installation directory

+catalina.home=/usr/local/apache-tomcat-7.0

 

 # Manager webapp username and password

 manager.username=myusername

-manager.password=mypassword

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+manager.password=mypassword</code></pre></div>

 

 <p>In general, you will <strong>not</strong> want to check the

 <code>build.properties</code> file in to the CVS repository, because it

@@ -123,13 +190,11 @@
 <p>Now, create the initial version of the web application deployment

 descriptor.  You can base <code>web.xml</code> on the

 <a href="web.xml.txt">basic web.xml file</a>, or code it from scratch.</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-cd {my home directory}

+<div class="codeBox"><pre><code>cd {my home directory}

 cd myapp/web/WEB-INF

 emacs web.xml

 cvs add web.xml

-cvs commit

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+cvs commit</code></pre></div>

 

 Note that this is only an example web.xml file.  The full definition

 of the deployment descriptor file is in the

@@ -148,24 +213,20 @@
 

 <p>Whenever you wish to refresh your development directory to reflect the

 work performed by other developers, you will ask CVS to do it for you:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-cd {my home directory}

+<div class="codeBox"><pre><code>cd {my home directory}

 cd myapp

-cvs update -dP

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+cvs update -dP</code></pre></div>

 

 <p>To create a new file, go to the appropriate directory, create the file,

 and register it with CVS.  When you are satisfied with it's contents (after

 building and testing is successful), commit the new file to the repository.

 For example, to create a new JSP page:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-cd {my home directory}

-cd myapp/web		&lt;-- Ultimate destination is document root

+<div class="codeBox"><pre><code>cd {my home directory}

+cd myapp/web        &lt;-- Ultimate destination is document root

 emacs mypage.jsp

 cvs add mypage.jsp

 ... build and test the application ...

-cvs commit

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+cvs commit</code></pre></div>

 

 <p>Java source code that is defined in packages must be organized in a

 directory hierarchy (under the <strong>src/</strong> subdirectory) that

@@ -188,11 +249,9 @@
 <p>When you are ready to compile the application, issue the following

 commands (generally, you will want a shell window open that is set to

 the project source directory, so that only the last command is needed):</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-cd {my home directory}

-cd myapp		&lt;-- Normally leave a window open here

-ant

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>cd {my home directory}

+cd myapp        &lt;-- Normally leave a window open here

+ant</code></pre></div>

 

 <p>The Ant tool will be execute the default "compile" target in your

 <code>build.xml</code> file, which will compile any new or updated Java

@@ -200,11 +259,9 @@
 it will cause everything to be recompiled.</p>

 

 <p>To force the recompilation of your entire application, do this instead:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-cd {my home directory}

+<div class="codeBox"><pre><code>cd {my home directory}

 cd myapp

-ant all

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+ant all</code></pre></div>

 

 <p>This is a very good habit immediately before checking in changes, to

 make sure that you have not introduced any subtle problems that Javac's

@@ -220,36 +277,38 @@
 the sample <code>build.xml</code> script.  Using these commands might follow

 a pattern like this:</p>

 <ul>

-<li><em>Start Tomcat 6 if needed</em>.  If Tomcat 6 is not already running,

+<li><p><em>Start Tomcat if needed</em>.  If Tomcat is not already running,

     you will need to start it in the usual way.

-    <br><br></li>

-<li><em>Compile your application</em>.  Use the <code>ant compile</code>

+    </p></li>

+<li><p><em>Compile your application</em>.  Use the <code>ant compile</code>

     command (or just <code>ant</code>, since this is the default).  Make

     sure that there are no compilation errors.

-    <br><br></li>

-<li><em>Install the application</em>.  Use the <code>ant install</code>

+    </p></li>

+<li><p><em>Install the application</em>.  Use the <code>ant install</code>

     command.  This tells Tomcat to immediately start running your app on

     the context path defined in the <code>app.path</code> build property.

     Tomcat does <strong>NOT</strong> have to be restarted for this to

-    take effect.<br><br></li>

-<li><em>Test the application</em>.  Using your browser or other testing

+    take effect.

+    </p></li>

+<li><p><em>Test the application</em>.  Using your browser or other testing

     tools, test the functionality of your application.

-    <br><br></li>

-<li><em>Modify and rebuild as needed</em>.  As you discover that changes

+    </p></li>

+<li><p><em>Modify and rebuild as needed</em>.  As you discover that changes

     are required, make those changes in the original <strong>source</strong>

     files, not in the output build directory, and re-issue the

     <code>ant compile</code> command.  This ensures that your changes will

     be available to be saved (via <code>cvs commit</code>) later on --

     the output build directory is deleted and recreated as necessary.

-    <br><br></li>

-<li><em>Reload the application</em>.  Tomcat will recognize changes in

+    </p></li>

+<li><p><em>Reload the application</em>.  Tomcat will recognize changes in

     JSP pages automatically, but it will continue to use the old versions

     of any servlet or JavaBean classes until the application is reloaded.

     You can trigger this by executing the <code>ant reload</code> command.

-    <br><br></li>

-<li><em>Remove the application when you re done</em>.  When you are through

+    </p></li>

+<li><p><em>Remove the application when you are done</em>.  When you are through

     working on this application, you can remove it from live execution by

-    running the <code>ant remove</code> command.</li>

+    running the <code>ant remove</code> command.

+    </p></li>

 </ul>

 

 <p>Do not forget to commit your changes to the source code repository when

@@ -265,25 +324,52 @@
 of your web application that can be deployed on the production server.  The

 following general steps are required:</p>

 <ul>

-<li>Issue the command <code>ant all</code> from the project source

+<li><p>Issue the command <code>ant all</code> from the project source

     directory, to rebuild everything from scratch one last time.

-    <br><br></li>

-<li>Use the <code>cvs tag</code> command to create an identifier for

+    </p></li>

+<li><p>Use the <code>cvs tag</code> command to create an identifier for

     all of the source files utilized to create this release.  This allows

     you to reliably reconstruct a release (from sources) at a later

-    time.</li>

-<li>Issue the command <code>ant dist</code> to create a distributable

+    time.

+    </p></li>

+<li><p>Issue the command <code>ant dist</code> to create a distributable

     web application archive (WAR) file, as well as a JAR file containing

     the corresponding source code.

-    <br><br></li>

-<li>Package the contents of the <code>dist</code> directory using the

+    </p></li>

+<li><p>Package the contents of the <code>dist</code> directory using the

     <strong>tar</strong> or <strong>zip</strong> utility, according to

-    the standard release procedures used by your organization.</li>

+    the standard release procedures used by your organization.

+    </p></li>

 </ul>

 

 </blockquote></td></tr></table>

 

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/appdev/processes.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/appdev/sample/build.xml b/tomcat-uid/webapps/docs/appdev/sample/build.xml
index ffbb584..2162535 100644
--- a/tomcat-uid/webapps/docs/appdev/sample/build.xml
+++ b/tomcat-uid/webapps/docs/appdev/sample/build.xml
@@ -17,7 +17,7 @@
 

 <!--

      General purpose build script for web applications and web services,

-     including enhanced support for deploying directly to a Tomcat 6

+     including enhanced support for deploying directly to a Tomcat

      based server.

 

      This build script assumes that the source code of your web application

@@ -103,7 +103,7 @@
                        Defaults to "build".

 

   catalina.home        The directory in which you have installed

-                       a binary distribution of Tomcat 6.  This will

+                       a binary distribution of Tomcat.  This will

                        be used by the "deploy" target.

 

   dist.home            The name of the base directory in which

@@ -111,7 +111,7 @@
                        Defaults to "dist".

 

   manager.password     The login password of a user that is assigned the

-                       "manager" role (so that he or she can execute

+                       "manager-script" role (so that he or she can execute

                        commands via the "/manager" web application)

 

   manager.url          The URL of the "/manager" web application on the

@@ -119,7 +119,7 @@
                        applications and web services.

 

   manager.username     The login username of a user that is assigned the

-                       "manager" role (so that he or she can execute

+                       "manager-script" role (so that he or she can execute

                        commands via the "/manager" web application)

 

 -->

@@ -131,7 +131,7 @@
   <property name="catalina.home" value="../../../.."/> <!-- UPDATE THIS! -->

   <property name="dist.home"     value="${basedir}/dist"/>

   <property name="docs.home"     value="${basedir}/docs"/>

-  <property name="manager.url"   value="http://localhost:8080/manager"/>

+  <property name="manager.url"   value="http://localhost:8080/manager/text"/>

   <property name="src.home"      value="${basedir}/src"/>

   <property name="web.home"      value="${basedir}/web"/>

 

@@ -148,7 +148,7 @@
   * Being copied into the "/WEB-INF/lib" directory during execution

     of the "deploy" target.

 

-  Because we will automatically include all of the Java classes that Tomcat 6

+  Because we will automatically include all of the Java classes that Tomcat

   exposes to web applications, we will not need to explicitly list any of those

   dependencies.  You only need to worry about external dependencies for JAR

   files that you are going to include inside your "/WEB-INF/lib" directory.

@@ -202,10 +202,10 @@
 <!--

 

   These properties define custom tasks for the Ant build tool that interact

-  with the "/manager" web application installed with Tomcat 6.  Before they

+  with the "/manager" web application installed with Tomcat.  Before they

   can be successfully utilized, you must perform the following steps:

 

-  - Copy the file "lib/catalina-ant.jar" from your Tomcat 6

+  - Copy the file "lib/catalina-ant.jar" from your Tomcat

     installation into the "lib" directory of your Ant installation.

 

   - Create a "build.properties" file in your application's top-level

@@ -346,7 +346,7 @@
 

 <!--

 

-  The "install" target tells the specified Tomcat 6 installation to dynamically

+  The "install" target tells the specified Tomcat installation to dynamically

   install this web application and make it available for execution.  It does

   *not* cause the existence of this web application to be remembered across

   Tomcat restarts; if you restart the server, you will need to re-install all

@@ -404,7 +404,7 @@
 

 <!--

 

-  The "list" target asks the specified Tomcat 6 installation to list the

+  The "list" target asks the specified Tomcat installation to list the

   currently running web applications, either loaded at startup time or

   installed dynamically.  It is useful to determine whether or not the

   application you are currently developing has been installed.

@@ -464,7 +464,7 @@
 

 <!--

 

-  The "reload" signals the specified application Tomcat 6 to shut itself down

+  The "reload" signals the specified application Tomcat to shut itself down

   and reload. This can be useful when the web application context is not

   reloadable and you have updated classes or property files in the

   /WEB-INF/classes directory or when you have added or updated jar files in the

@@ -472,7 +472,7 @@
 

   NOTE: The /WEB-INF/web.xml web application configuration file is not reread

   on a reload. If you have made changes to your web.xml file you must stop

-  then start the web application. 

+  then start the web application.

 

 -->

 

@@ -491,7 +491,7 @@
 

 <!--

 

-  The "remove" target tells the specified Tomcat 6 installation to dynamically

+  The "remove" target tells the specified Tomcat installation to dynamically

   remove this web application from service.

 

   NOTE:  This is the logical opposite of the "install" target.

diff --git a/tomcat-uid/webapps/docs/appdev/sample/index.html b/tomcat-uid/webapps/docs/appdev/sample/index.html
index 87e3a61..a3db667 100644
--- a/tomcat-uid/webapps/docs/appdev/sample/index.html
+++ b/tomcat-uid/webapps/docs/appdev/sample/index.html
@@ -21,26 +21,26 @@
 </head>

 <body>

 <h2>Sample Application</h2>

-      <p> 

-        The example app has been packaged as a war file and can be downloaded 

-        <a href="sample.war">here</a> (Note: make sure your browser doesn't 

+      <p>

+        The example app has been packaged as a war file and can be downloaded

+        <a href="sample.war">here</a> (Note: make sure your browser doesn't

         change file extension or append a new one).

       </p>

-      <p> 

-        The easiest way to run this application is simply to move the war file 

-        to your <b>CATALINA_HOME/webapps</b> directory. Tomcat will automatically 

-        expand and deploy the application for you. You can view it with the 

-        following URL (assuming that you're running tomcat on port 8080 

+      <p>

+        The easiest way to run this application is simply to move the war file

+        to your <b>CATALINA_HOME/webapps</b> directory. Tomcat will automatically

+        expand and deploy the application for you. You can view it with the

+        following URL (assuming that you're running tomcat on port 8080

         as is the default):

         <br />

         <a href="http://localhost:8080/sample">http://localhost:8080/sample</a>

       </p>

       <p>

-        If you just want to browse the contents, you can unpack the war file 

+        If you just want to browse the contents, you can unpack the war file

         with the <b>jar</b> command.

-        <source>

-          jar -xvf sample.war

-        </source>

       </p>

+      <pre>

+        jar -xvf sample.war

+      </pre>

 </body>

 </html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/appdev/sample/src/mypackage/Hello.java b/tomcat-uid/webapps/docs/appdev/sample/src/mypackage/Hello.java
index 8c79077..47bba7c 100644
--- a/tomcat-uid/webapps/docs/appdev/sample/src/mypackage/Hello.java
+++ b/tomcat-uid/webapps/docs/appdev/sample/src/mypackage/Hello.java
@@ -5,21 +5,20 @@
  * 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.

  */

-

 package mypackage;

 

 import java.io.IOException;

 import java.io.PrintWriter;

-import java.util.Enumeration;

+

 import javax.servlet.ServletException;

 import javax.servlet.http.HttpServlet;

 import javax.servlet.http.HttpServletRequest;

@@ -37,6 +36,7 @@
 

 public final class Hello extends HttpServlet {

 

+    private static final long serialVersionUID = 1L;

 

     /**

      * Respond to a GET request for the content produced by

@@ -48,34 +48,35 @@
      * @exception IOException if an input/output error occurs

      * @exception ServletException if a servlet error occurs

      */

+    @Override

     public void doGet(HttpServletRequest request,

                       HttpServletResponse response)

       throws IOException, ServletException {

 

-	response.setContentType("text/html");

-	PrintWriter writer = response.getWriter();

+        response.setContentType("text/html");

+        PrintWriter writer = response.getWriter();

 

-	writer.println("<html>");

-	writer.println("<head>");

-	writer.println("<title>Sample Application Servlet Page</title>");

-	writer.println("</head>");

-	writer.println("<body bgcolor=white>");

+        writer.println("<html>");

+        writer.println("<head>");

+        writer.println("<title>Sample Application Servlet Page</title>");

+        writer.println("</head>");

+        writer.println("<body bgcolor=white>");

 

-	writer.println("<table border=\"0\">");

-	writer.println("<tr>");

-	writer.println("<td>");

-	writer.println("<img src=\"images/tomcat.gif\">");

-	writer.println("</td>");

-	writer.println("<td>");

-	writer.println("<h1>Sample Application Servlet</h1>");

-	writer.println("This is the output of a servlet that is part of");

-	writer.println("the Hello, World application.");

-	writer.println("</td>");

-	writer.println("</tr>");

-	writer.println("</table>");

+        writer.println("<table border=\"0\">");

+        writer.println("<tr>");

+        writer.println("<td>");

+        writer.println("<img src=\"images/tomcat.gif\">");

+        writer.println("</td>");

+        writer.println("<td>");

+        writer.println("<h1>Sample Application Servlet</h1>");

+        writer.println("This is the output of a servlet that is part of");

+        writer.println("the Hello, World application.");

+        writer.println("</td>");

+        writer.println("</tr>");

+        writer.println("</table>");

 

-	writer.println("</body>");

-	writer.println("</html>");

+        writer.println("</body>");

+        writer.println("</html>");

 

     }

 

diff --git a/tomcat-uid/webapps/docs/appdev/sample/web/WEB-INF/web.xml b/tomcat-uid/webapps/docs/appdev/sample/web/WEB-INF/web.xml
index 58daf30..7fe1af0 100644
--- a/tomcat-uid/webapps/docs/appdev/sample/web/WEB-INF/web.xml
+++ b/tomcat-uid/webapps/docs/appdev/sample/web/WEB-INF/web.xml
@@ -22,8 +22,8 @@
 

     <display-name>Hello, World Application</display-name>

     <description>

-	This is a simple web application with a source code organization

-	based on the recommendations of the Application Developer's Guide.

+        This is a simple web application with a source code organization

+        based on the recommendations of the Application Developer's Guide.

     </description>

 

     <servlet>

diff --git a/tomcat-uid/webapps/docs/appdev/sample/web/images/tomcat.gif b/tomcat-uid/webapps/docs/appdev/sample/web/images/tomcat.gif
index 32f7d80..f2aa6f8 100644
--- a/tomcat-uid/webapps/docs/appdev/sample/web/images/tomcat.gif
+++ b/tomcat-uid/webapps/docs/appdev/sample/web/images/tomcat.gif
Binary files differ
diff --git a/tomcat-uid/webapps/docs/appdev/sample/web/index.html b/tomcat-uid/webapps/docs/appdev/sample/web/index.html
index 7be5ae7..1cbcd63 100644
--- a/tomcat-uid/webapps/docs/appdev/sample/web/index.html
+++ b/tomcat-uid/webapps/docs/appdev/sample/web/index.html
@@ -34,10 +34,10 @@
 </tr>

 </table>

 

-<p>To prove that they work, you can execute either of the following links:

+<p>To prove that they work, you can execute either of the following links:</p>

 <ul>

-<li>To a <a href="hello.jsp">JSP page</a>.

-<li>To a <a href="hello">servlet</a>.

+<li>To a <a href="hello.jsp">JSP page</a>.</li>

+<li>To a <a href="hello">servlet</a>.</li>

 </ul>

 

 </body>

diff --git a/tomcat-uid/webapps/docs/appdev/source.html b/tomcat-uid/webapps/docs/appdev/source.html
index 845f7f2..cc9810f 100644
--- a/tomcat-uid/webapps/docs/appdev/source.html
+++ b/tomcat-uid/webapps/docs/appdev/source.html
@@ -1,19 +1,92 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (6.0.41) - Source Organization</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (7.0.77) - Source Organization</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Application Developer's Guide</h1><h2>Source Organization</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">App Dev Guide Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Source Organization</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Directory_Structure">Directory Structure</a><ol><li><a href="#External_Dependencies">External Dependencies</a></li></ol></li><li><a href="#Source_Code_Control">Source Code Control</a></li><li><a href="#BUILD.XML_Configuration_File">BUILD.XML Configuration File</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Directory Structure"><!--()--></a><a name="Directory_Structure"><strong>Directory Structure</strong></a></font></td></tr><tr><td><blockquote>

 

-    <blockquote><em>

-    <p>The description below uses the variable name $CATALINA_BASE to refer the

+    <p><em>The description below uses the variable name $CATALINA_BASE to refer the

     base directory against which most relative paths are resolved. If you have

-    not configured Tomcat 6 for multiple instances by setting a CATALINA_BASE

+    not configured Tomcat for multiple instances by setting a CATALINA_BASE

     directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME,

-    the directory into which you have installed Tomcat 6.</p>

-    </em></blockquote>

+    the directory into which you have installed Tomcat.</em></p>

 

 <p>A key recommendation of this manual is to separate the directory

 hierarchy containing your source code (described in this section) from

@@ -21,16 +94,16 @@
 (described in the preceding section).  Maintaining this separation has

 the following advantages:</p>

 <ul>

-<li>The contents of the source directories can be more easily administered,

+<li><p>The contents of the source directories can be more easily administered,

     moved, and backed up if the "executable" version of the application

     is not intermixed.

-    <br><br></li>

-<li>Source code control is easier to manage on directories that contain

+    </p></li>

+<li><p>Source code control is easier to manage on directories that contain

     only source files.

-    <br><br></li>

-<li>The files that make up an installable distribution of your

+    </p></li>

+<li><p>The files that make up an installable distribution of your

     application are much easier to select when the deployment

-    hierarchy is separate.</li>

+    hierarchy is separate.</p></li>

 </ul>

 

 <p>As we will see, the <code>ant</code> development tool makes the creation

@@ -58,8 +131,8 @@
     access those files.<br><br></li>

 <li><strong>web/WEB-INF/</strong> - The special configuration files required

     for your application, including the web application deployment descriptor

-    (<code>web.xml</code>, defined in the 

-    <a href="http://wiki.apache.org/tomcat/Specifications">Servlet Specification</a>), 

+    (<code>web.xml</code>, defined in the

+    <a href="http://wiki.apache.org/tomcat/Specifications">Servlet Specification</a>),

     tag library descriptors for custom tag libraries

     you have created, and other resource files you wish to include within

     your web application.  Even though this directory appears to be a

@@ -77,7 +150,7 @@
 <li><strong>build/</strong> - When you execute a default build

     (<code>ant</code>), this directory will contain an exact image

     of the files in the web application archive for this application.

-    Tomcat 6 allows you to deploy an application in an unpacked

+    Tomcat allows you to deploy an application in an unpacked

     directory like this, either by copying it to the

     <code>$CATALINA_BASE/webapps</code> directory, or by <em>installing</em>

     it via the "Manager" web application.  The latter approach is very

@@ -150,11 +223,9 @@
 easy way to tell CVS to ignore these directories is to create a file named

 <code>.cvsignore</code> (note the leading period) in your top-level source

 directory, with the following contents:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-build

+<div class="codeBox"><pre><code>build

 dist

-build.properties

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+build.properties</code></pre></div>

 

 <p>The reason for mentioning <code>build.properties</code> here will be

 explained in the <a href="processes.html">Processes</a> section.</p>

@@ -210,9 +281,7 @@
 the targets that are designed for use by the developer, versus those targets

 used internally.  To ask Ant to display the project documentation, change to

 the directory containing the <code>build.xml</code> file and type:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-ant -projecthelp

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>ant -projecthelp</code></pre></div>

 

 <p>To give you a head start, a <a href="build.xml.txt">basic build.xml file</a>

 is provided that you can customize and install in the project source directory

@@ -259,22 +328,22 @@
 </ul>

 

 <p>For interactive development and testing of your web application using

-Tomcat 6, the following additional targets are defined:</p>

+Tomcat, the following additional targets are defined:</p>

 <ul>

-<li><strong>install</strong> - Tell the currently running Tomcat 6 to make

+<li><strong>install</strong> - Tell the currently running Tomcat to make

     the application you are developing immediately available for execution

-    and testing.  This action does not require Tomcat 6 to be restarted, but

+    and testing.  This action does not require Tomcat to be restarted, but

     it is also not remembered after Tomcat is restarted the next time.

     <br><br></li>

 <li><strong>reload</strong> - Once the application is installed, you can

     continue to make changes and recompile using the <code>compile</code>

-    target.  Tomcat 6 will automatically recognize changes made to JSP pages,

+    target.  Tomcat will automatically recognize changes made to JSP pages,

     but not to servlet or JavaBean classes - this command will tell Tomcat

     to restart the currently installed application so that such changes are

     recognized.

     <br><br></li>

 <li><strong>remove</strong> - When you have completed your development and

-    testing activities, you can optionally tell Tomcat 6 to remove this

+    testing activities, you can optionally tell Tomcat to remove this

     application from service.

     </li>

 </ul>

@@ -282,6 +351,31 @@
 <p>Using the development and testing targets requires some additional

 one-time setup that is described on the next page.</p>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/appdev/source.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/appdev/web.xml.txt b/tomcat-uid/webapps/docs/appdev/web.xml.txt
index 42555f0..6574742 100644
--- a/tomcat-uid/webapps/docs/appdev/web.xml.txt
+++ b/tomcat-uid/webapps/docs/appdev/web.xml.txt
@@ -16,8 +16,8 @@
   limitations under the License.

 -->

 

-<!DOCTYPE web-app 

-    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 

+<!DOCTYPE web-app

+    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

     "http://java.sun.com/dtd/web-app_2_3.dtd">

 

 <web-app>

diff --git a/tomcat-uid/webapps/docs/apr.html b/tomcat-uid/webapps/docs/apr.html
index 7f8e05d..90eb2b9 100644
--- a/tomcat-uid/webapps/docs/apr.html
+++ b/tomcat-uid/webapps/docs/apr.html
@@ -1,24 +1,99 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 6.0 (6.0.41) - Apache Portable Runtime (APR) based Native library for Tomcat</title><meta name="author" content="Remy Maucherat"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - Apache Portable Runtime (APR) based Native library for Tomcat</title><meta name="author" content="Remy Maucherat"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat 6.0</h1><h2>Apache Portable Runtime (APR) based Native library for Tomcat</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

-<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Installation">Installation</a><ol><li><a href="#Windows">Windows</a></li><li><a href="#Linux">Linux</a></li></ol></li><li><a href="#APR_Components">APR Components</a></li><li><a href="#APR_Lifecycle_Listener_Configuration">APR Lifecycle Listener Configuration</a><ol><li><a href="#AprLifecycleListener">AprLifecycleListener</a></li></ol></li><li><a href="#APR_Connectors_Configuration">APR Connectors Configuration</a><ol><li><a href="#HTTP">HTTP</a></li><li><a href="#HTTPS">HTTPS</a></li><li><a href="#AJP">AJP</a></li></ol></li></ul>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Portable Runtime (APR) based Native library for Tomcat</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Installation">Installation</a><ol><li><a href="#Windows">Windows</a></li><li><a href="#Linux">Linux</a></li></ol></li><li><a href="#APR_Components">APR Components</a></li><li><a href="#APR_Lifecycle_Listener_Configuration">APR Lifecycle Listener Configuration</a><ol><li><a href="#AprLifecycleListener">AprLifecycleListener</a></li></ol></li><li><a href="#APR_Connectors_Configuration">APR Connectors Configuration</a><ol><li><a href="#HTTP/HTTPS">HTTP/HTTPS</a></li><li><a href="#AJP">AJP</a></li></ol></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

   <p>

-      Tomcat can use the <a href="http://apr.apache.org/">Apache Portable Runtime</a> to 

-      provide superior scalability, performance, and better integration with native server 

-      technologies. The Apache Portable Runtime is a highly portable library that is at 

+      Tomcat can use the <a href="http://apr.apache.org/">Apache Portable Runtime</a> to

+      provide superior scalability, performance, and better integration with native server

+      technologies. The Apache Portable Runtime is a highly portable library that is at

       the heart of Apache HTTP Server 2.x. APR has many uses, including access to advanced IO

       functionality (such as sendfile, epoll and OpenSSL), OS level functionality (random number

       generation, system status, etc), and native process handling (shared memory, NT

       pipes and Unix sockets).

   </p>

-  

+

   <p>

-      These features allows making Tomcat a general purpose webserver, will enable much better 

+      These features allows making Tomcat a general purpose webserver, will enable much better

       integration with other native web technologies, and overall make Java much more viable as

       a full fledged webserver platform rather than simply a backend focused technology.

   </p>

@@ -27,54 +102,54 @@
 

     <p>

       APR support requires three main native components to be installed:

-      <ul>

-        <li>APR library</li>

-        <li>JNI wrappers for APR used by Tomcat (libtcnative)</li>

-        <li>OpenSSL libraries</li>

-      </ul>

     </p>

+    <ul>

+      <li>APR library</li>

+      <li>JNI wrappers for APR used by Tomcat (libtcnative)</li>

+      <li>OpenSSL libraries</li>

+    </ul>

 

     <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Windows"><strong>Windows</strong></a></font></td></tr><tr><td><blockquote>

-    

+

     <p>

       Windows binaries are provided for tcnative-1, which is a statically compiled .dll which includes

       OpenSSL and APR. It can be downloaded from <a href="http://tomcat.apache.org/download-native.cgi">here</a>

       as 32bit or AMD x86-64 binaries.

       In security conscious production environments, it is recommended to use separate shared dlls

       for OpenSSL, APR, and libtcnative-1, and update them as needed according to security bulletins.

-      Windows OpenSSL binaries are linked from the <a href="http://www.openssl.org">Official OpenSSL 

+      Windows OpenSSL binaries are linked from the <a href="http://www.openssl.org">Official OpenSSL

       website</a> (see related/binaries).

     </p>

-    

+

     </blockquote></td></tr></table>

-    

+

     <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Linux"><strong>Linux</strong></a></font></td></tr><tr><td><blockquote>

-    

+

     <p>

-      Most Linux distributions will ship packages for APR and OpenSSL. The JNI wrapper (libtcnative) will 

+      Most Linux distributions will ship packages for APR and OpenSSL. The JNI wrapper (libtcnative) will

       then have to be compiled. It depends on APR, OpenSSL, and the Java headers.

     </p>

-    

+

     <p>

       Requirements:

-      <ul>

-        <li>APR 1.2+ development headers (libapr1-dev package)</li>

-        <li>OpenSSL 0.9.7+ development headers (libssl-dev package)</li>

-        <li>JNI headers from Java compatible JDK 1.4+</li>

-        <li>GNU development environment (gcc, make)</li>

-      </ul>

     </p>

-    

+    <ul>

+      <li>APR 1.2+ development headers (libapr1-dev package)</li>

+      <li>OpenSSL 0.9.7+ development headers (libssl-dev package)</li>

+      <li>JNI headers from Java compatible JDK 1.4+</li>

+      <li>GNU development environment (gcc, make)</li>

+    </ul>

+

     <p>

-      The wrapper library sources are located in the Tomcat binary bundle, in the 

+      The wrapper library sources are located in the Tomcat binary bundle, in the

       <code>bin/tomcat-native.tar.gz</code> archive.

-      Once the build environment is installed and the source archive is extracted, the wrapper library 

+      Once the build environment is installed and the source archive is extracted, the wrapper library

       can be compiled using (from the folder containing the configure script):

-      <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>./configure &amp;&amp; make &amp;&amp; make install</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

     </p>

-    

+    <div class="codeBox"><pre><code>./configure &amp;&amp; make &amp;&amp; make install</code></pre></div>

+

     </blockquote></td></tr></table>

-	

+

   </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="APR Components"><!--()--></a><a name="APR_Components"><strong>APR Components</strong></a></font></td></tr><tr><td><blockquote>

 

   <p>

@@ -87,216 +162,85 @@
 

   <p>

     When APR is enabled, the following features are also enabled in Tomcat:

-    <ul>

-      <li>Secure session ID generation by default on all platforms (platforms other than Linux required

-          random number generation using a configured entropy)</li>

-      <li>OS level statistics on memory usage and CPU usage by the Tomcat process are displayed by

-          the status servlet</li>

-    </ul>

   </p>

+  <ul>

+    <li>Secure session ID generation by default on all platforms (platforms other than Linux required

+        random number generation using a configured entropy)</li>

+    <li>OS level statistics on memory usage and CPU usage by the Tomcat process are displayed by

+        the status servlet</li>

+  </ul>

 

   </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="APR Lifecycle Listener Configuration"><!--()--></a><a name="APR_Lifecycle_Listener_Configuration"><strong>APR Lifecycle Listener Configuration</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="AprLifecycleListener"><strong>AprLifecycleListener</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>SSLEngine</code></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">SSLEngine</code></td><td align="left" valign="center">

     <p>

       Name of the SSLEngine to use. off: Do not use SSL, on: Use SSL but no specific ENGINE.

       The default value is <b>on</b>.

-      This initializes the native SSL engine, then enable the use of this engine in the connector 

+      This initializes the native SSL engine, then enable the use of this engine in the connector

       using the <code>SSLEnabled</code> attribute. Example:

-      <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /&gt;

-      </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

     </p>

-    <p>See the <a href="http://www.openssl.org">Official OpenSSL 

+      <div class="codeBox"><pre><code>&lt;Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /&gt;</code></pre></div>

+

+    <p>See the <a href="http://www.openssl.org">Official OpenSSL

        website</a> for more details on SSL hardware engines and manufacturers.

     </p>

     </td></tr></table>

     </blockquote></td></tr></table>

   </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="APR Connectors Configuration"><!--()--></a><a name="APR_Connectors_Configuration"><strong>APR Connectors Configuration</strong></a></font></td></tr><tr><td><blockquote>

 

-    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="HTTP"><strong>HTTP</strong></a></font></td></tr><tr><td><blockquote>

-    

-    <p>

-      When APR is enabled, the HTTP connector will use sendfile for handling large static files (all such

-      files will be sent asynchronously using high performance kernel level calls), and will use 

-      a socket poller for keepalive, increasing scalability of the server.

-    </p>

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="HTTP/HTTPS"><strong>HTTP/HTTPS</strong></a></font></td></tr><tr><td><blockquote>

 

-    <p>

-      The following attributes are supported in the HTTP APR connector in addition to the ones supported

-      in the regular HTTP connector:

-    </p>

+      <p>For HTTP configuration, see the <a href="config/http.html">HTTP</a>

+      connector configuration documentation.</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>keepAliveTimeout</code></td><td align="left" valign="center">

-      <p>The number of milliseconds this <strong>Connector</strong> will wait for

-       another HTTP request before closing the connection.

-       The default value is to use the value that has been set for the

-       connectionTimeout attribute. This value also controls the timeout interval which

-       is used for Comet connections.</p>

-    </td></tr><tr><td align="left" valign="center"><code>pollTime</code></td><td align="left" valign="center">

-      <p>Duration of a poll call. Lowering this value will slightly decrease latency of connections 

-      being kept alive in some cases, but will use more CPU as more poll calls are being made. The

-      default value is 2000 (5ms).</p>

-    </td></tr><tr><td align="left" valign="center"><code>pollerSize</code></td><td align="left" valign="center">

-      <p>Amount of sockets that the poller responsible for polling kept alive connections can hold at a

-      given time. Extra connections will be closed right away. The default value is 8192, corresponding to

-      8192 keepalive connections.</p>

-    </td></tr><tr><td align="left" valign="center"><code>pollerThreadCount</code></td><td align="left" valign="center">

-      <p>Number of threads used to poll kept alive connections. On Windows the

-      default is chosen so that the sockets managed by each thread is

-      less than 1024. For Linux the default is 1. Changing the default on

-      Windows is likely to have a negative performance impact.</p>

-    </td></tr><tr><td align="left" valign="center"><code>useSendfile</code></td><td align="left" valign="center">

-      <p>Use kernel level sendfile for certain static files. The default value is true.</p>

-    </td></tr><tr><td align="left" valign="center"><code>sendfileSize</code></td><td align="left" valign="center">

-      <p>Amount of sockets that the poller responsible for sending static files asynchronously can hold 

-      at a given time. Extra connections will be closed right away without any data being sent 

-      (resulting in a zero length file on the client side). Note that in most cases, sendfile is a call

-      that will return right away (being taken care of "synchronously" by the kernel), and the sendfile

-      poller will not be used, so the amount of static files which can be sent concurrently is much larger

-      than the specified amount. The default value is 1024.</p>

-    </td></tr><tr><td align="left" valign="center"><code>sendFileThreadCount</code></td><td align="left" valign="center">

-      <p>Number of threads used service sendfile sockets. On Windows the

-      default is chosen so that the sockets managed by each thread is

-      less than 1024. For Linux the default is 1. Changing the default on

-      Windows is likely to have a negative performance impact.</p>

-    </td></tr></table>

-    

+      <p>For HTTPS configuration, see the

+      <a href="config/http.html#SSL_Support">HTTPS</a> connector configuration

+      documentation.</p>

+

+      <p>An example SSL Connector declaration is:</p>

+      <div class="codeBox"><pre><code>&lt;Connector port="443" maxHttpHeaderSize="8192"

+                 maxThreads="150"

+                 enableLookups="false" disableUploadTimeout="true"

+                 acceptCount="100" scheme="https" secure="true"

+                 SSLEnabled="true"

+                 SSLCertificateFile="${catalina.base}/conf/localhost.crt"

+                 SSLCertificateKeyFile="${catalina.base}/conf/localhost.key" /&gt;</code></pre></div>

+

+

     </blockquote></td></tr></table>

-	

-    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="HTTPS"><strong>HTTPS</strong></a></font></td></tr><tr><td><blockquote>

-    

-    <p>

-      When APR is enabled, the HTTPS connector will use a socket poller for keepalive, increasing 

-      scalability of the server. It also uses OpenSSL, which may be more optimized than JSSE depending

-      on the processor being used, and can be complemented with many commercial accelerator components.

-      Unlike the HTTP connector, the HTTPS connector cannot use sendfile to optimize static file

-      processing.

-    </p>

 

-    <p>

-      The HTTPS APR connector has the same basic attributes than the HTTP APR connector, but adds 

-      OpenSSL specific ones. For the full details on using OpenSSL, please refer to OpenSSL documentations

-      and the many books available for it (see the <a href="http://www.openssl.org">Official OpenSSL 

-      website</a>). The SSL specific attributes for the connector are:

-    </p>

-    

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>SSLEnabled</code></td><td align="left" valign="center">

-    <p>

-      Enable SSL on the socket, default value is false. Set this value to true

-      to enable SSL handshake/encryption/decryption in the APR connector.

-    </p>

-    </td></tr><tr><td align="left" valign="center"><code>SSLProtocol</code></td><td align="left" valign="center">

-    <p>

-      Protocol which may be used for communicating with clients. The default

-      value is <code>all</code>, with other acceptable values being <code>SSLv2</code>,

-      <code>SSLv3</code>, <code>TLSv1</code> and <code>SSLv2+SSLv3</code>.

-      Starting with version 1.1.21 of the Tomcat native

-      library any combination of the three protocols concatenated with a

-      plus sign will be supported. Note that the protocol <code>SSLv2</code>

-      is inherently unsafe.

-    </p>

-    </td></tr><tr><td align="left" valign="center"><code>SSLCipherSuite</code></td><td align="left" valign="center">

-    <p>

-      Ciphers which may be used for communicating with clients. The default is "ALL", with

-      other acceptable values being a list of ciphers, with ":" used as the delimiter

-      (see OpenSSL documentation for the list of ciphers supported).

-    </p>

-    </td></tr><tr><td align="left" valign="center"><strong><code>SSLCertificateFile</code></strong></td><td align="left" valign="center">

-    <p>

-      Name of the file that contains the server certificate. The format is PEM-encoded.

-    </p>

-    </td></tr><tr><td align="left" valign="center"><code>SSLCertificateKeyFile</code></td><td align="left" valign="center">

-    <p>

-      Name of the file that contains the server private key. The format is PEM-encoded.

-      The default value is the value of "SSLCertificateFile" and in this case both certificate

-      and private key have to be in this file (NOT RECOMMENDED).

-    </p>

-    </td></tr><tr><td align="left" valign="center"><code>SSLDisableCompression</code></td><td align="left" valign="center">

-      <p>Disables compression if set to <code>true</code> and OpenSSL supports

-      disabling compression. Default is <code>false</code> which inherits the

-      default compression setting in OpenSSL.</p>

-    </td></tr><tr><td align="left" valign="center"><code>SSLHonorCipherOrder</code></td><td align="left" valign="center">

-      <p>Set to <code>true</code> to enforce the server's cipher order

-      (from the <code>SSLCipherSuite</code> setting) instead of allowing

-      the client to choose the cipher (which is the default).</p>

-    </td></tr><tr><td align="left" valign="center"><code>SSLPassword</code></td><td align="left" valign="center">

-    <p>

-      Pass phrase for the encrypted private key. If "SSLPassword" is not provided, the callback function

-      should prompt for the pass phrase.

-    </p>

-    </td></tr><tr><td align="left" valign="center"><code>SSLVerifyClient</code></td><td align="left" valign="center">

-    <p>

-      Ask client for certificate. The default is "none", meaning the client will not have the opportunity

-      to submit a certificate. Other acceptable values include "optional", "require" and "optionalNoCA".

-    </p>

-    </td></tr><tr><td align="left" valign="center"><code>SSLVerifyDepth</code></td><td align="left" valign="center">

-    <p>

-      Maximum verification depth for client certificates. The default is "10".

-    </p>

-    </td></tr><tr><td align="left" valign="center"><code>SSLCACertificateFile</code></td><td align="left" valign="center">

-    <p>

-      See <a href="http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslcacertificatefile">the mod_ssl documentation</a>.

-    </p>

-    </td></tr><tr><td align="left" valign="center"><code>SSLCACertificatePath</code></td><td align="left" valign="center">

-    <p>

-      See <a href="http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslcacertificatepath">the mod_ssl documentation</a>.

-    </p>

-    </td></tr><tr><td align="left" valign="center"><code>SSLCertificateChainFile</code></td><td align="left" valign="center">

-    <p>

-      See <a href="http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslcertificatechainfile">the mod_ssl documentation</a>.

-    </p>

-    </td></tr><tr><td align="left" valign="center"><code>SSLCARevocationFile</code></td><td align="left" valign="center">

-    <p>

-      See <a href="http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslcarevocationfile">the mod_ssl documentation</a>.

-    </p>

-    </td></tr><tr><td align="left" valign="center"><code>SSLCARevocationPath</code></td><td align="left" valign="center">

-    <p>

-      See <a href="http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslcarevocationpath">the mod_ssl documentation</a>.

-    </p>

-    </td></tr></table>

-    

-    <p>

-    An example SSL Connector declaration can be:

-    <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-    &lt;Connector port="443" maxHttpHeaderSize="8192"

-               maxThreads="150"

-               enableLookups="false" disableUploadTimeout="true"

-               acceptCount="100" scheme="https" secure="true"

-               SSLEnabled="true" 

-               SSLCertificateFile="${catalina.base}/conf/localhost.crt"

-               SSLCertificateKeyFile="${catalina.base}/conf/localhost.key" /&gt;</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-    </p>

-    

-    </blockquote></td></tr></table>

-	

     <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="AJP"><strong>AJP</strong></a></font></td></tr><tr><td><blockquote>

-    

-    <p>

-      When APR is enabled, the AJP connector will use a socket poller for keepalive, increasing 

-      scalability of the server. As AJP is designed around a pool of persistent (or almost

-      persistent) connections, this will reduce significantly the amount of processing threads 

-      needed by Tomcat. Unlike the HTTP connector, the AJP connector cannot use sendfile to optimize

-      static file processing.

-    </p>

 

-    <p>

-      The following attributes are supported in the AJP APR connector in addition to the ones supported

-      in the regular AJP connector:

-    </p>

+      <p>For AJP configuration, see the <a href="config/ajp.html">AJP</a>

+      connector configuration documentation.</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>pollTime</code></td><td align="left" valign="center">

-      <p>Duration of a poll call. Lowering this value will slightly decrease latency of connections 

-      being kept alive in some cases, but will use more CPU as more poll calls are being made. The

-      default value is 2000 (5ms).</p>

-    </td></tr><tr><td align="left" valign="center"><code>pollerSize</code></td><td align="left" valign="center">

-      <p>Amount of sockets that the poller responsible for polling kept alive connections can hold at a

-      given time. Extra connections will be closed right away. The default value is 8192, corresponding to

-      8192 keepalive connections.</p>

-    </td></tr></table>

-    

     </blockquote></td></tr></table>

-	

-  </blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+

+  </blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/apr.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/architecture/index.html b/tomcat-uid/webapps/docs/architecture/index.html
index 56f1d6c..cddc02a 100644
--- a/tomcat-uid/webapps/docs/architecture/index.html
+++ b/tomcat-uid/webapps/docs/architecture/index.html
@@ -1,9 +1,84 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat Architecture (6.0.41) - Table of Contents</title><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Architecture (7.0.77) - Table of Contents</title><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="overview.html">Overview</a></li><li><a href="startup.html">Server Startup</a></li><li><a href="requestProcess.html">Request Process</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat Architecture</h1><h2>Table of Contents</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Preface"><strong>Preface</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Architecture Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="overview.html">Overview</a></li><li><a href="startup.html">Server Startup</a></li><li><a href="requestProcess.html">Request Process</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Table of Contents</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Preface"><strong>Preface</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>This section of the Tomcat documentation attempts to explain

 the architecture and design of the Tomcat server.  It includes significant

@@ -32,6 +107,31 @@
     A detailed description of how Tomcat handles a request.</li>

 </ul>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/architecture/index.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/architecture/overview.html b/tomcat-uid/webapps/docs/architecture/overview.html
index 68e82df..3b68d6c 100644
--- a/tomcat-uid/webapps/docs/architecture/overview.html
+++ b/tomcat-uid/webapps/docs/architecture/overview.html
@@ -1,9 +1,84 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat Architecture (6.0.41) - Architecture Overview</title><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Architecture (7.0.77) - Architecture Overview</title><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="overview.html">Overview</a></li><li><a href="startup.html">Server Startup</a></li><li><a href="requestProcess.html">Request Process</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat Architecture</h1><h2>Architecture Overview</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Overview"><strong>Overview</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Architecture Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="overview.html">Overview</a></li><li><a href="startup.html">Server Startup</a></li><li><a href="requestProcess.html">Request Process</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Architecture Overview</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Overview"><strong>Overview</strong></a></font></td></tr><tr><td><blockquote>

 <p>

 This page provides an overview of the Tomcat server architecture.

 </p>

@@ -13,7 +88,7 @@
 <p>

 In the Tomcat world, a

 <a href="../config/server.html">Server</a> represents the whole container.

-Tomcat provides a default implementation of the 

+Tomcat provides a default implementation of the

 <a href="../api/org/apache/catalina/Server.html">Server interface</a>

 which is rarely customized by users.

 </p>

@@ -52,7 +127,7 @@
 multiple hosts, and the Host element also supports network aliases such as

 yourcompany.com and abc.yourcompany.com.  Users rarely create custom

 <a href="../api/org/apache/catalina/Host.html">Hosts</a>

-because the 

+because the

 <a href="../api/org/apache/catalina/core/StandardHost.html">StandardHost

 implementation</a> provides significant additional functionality.

 </p>

@@ -63,9 +138,9 @@
 A Connector handles communications with the client.  There are multiple

 connectors available with Tomcat. These include the

 <a href="../config/http.html">HTTP connector</a> which is used for

-most HTTP traffic, especially when running Tomcat as a standalone server, 

+most HTTP traffic, especially when running Tomcat as a standalone server,

 and the <a href="../config/ajp.html">AJP connector</a> which implements

-the AJP procotol used when connecting Tomcat to a web server such as

+the AJP protocol used when connecting Tomcat to a web server such as

 Apache HTTPD server. Creating a customized connector is a significant

 effort.

 </p>

@@ -101,6 +176,31 @@
 for us as the product matures and the specification becomes more

 stable.

 </p>

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/architecture/overview.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/architecture/requestProcess.html b/tomcat-uid/webapps/docs/architecture/requestProcess.html
index 6852723..ad0e386 100644
--- a/tomcat-uid/webapps/docs/architecture/requestProcess.html
+++ b/tomcat-uid/webapps/docs/architecture/requestProcess.html
@@ -1,9 +1,84 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat Architecture (6.0.41) - Request Process Flow</title><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Architecture (7.0.77) - Request Process Flow</title><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="overview.html">Overview</a></li><li><a href="startup.html">Server Startup</a></li><li><a href="requestProcess.html">Request Process</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat Architecture</h1><h2>Request Process Flow</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Request Process Flow"><!--()--></a><a name="Request_Process_Flow"><strong>Request Process Flow</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Architecture Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="overview.html">Overview</a></li><li><a href="startup.html">Server Startup</a></li><li><a href="requestProcess.html">Request Process</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Request Process Flow</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Request Process Flow"><!--()--></a><a name="Request_Process_Flow"><strong>Request Process Flow</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>

 This page describes the process used by Tomcat to handle

@@ -18,11 +93,16 @@
 </p>

 </blockquote></td></tr></table>

 

-<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="diagram"><strong>diagram</strong></a></font></td></tr><tr><td><blockquote>

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="diagrams"><strong>diagrams</strong></a></font></td></tr><tr><td><blockquote>

 <p>

 A UML sequence diagram of the request process is available

-<a href="requestProcess/requestProcess.pdf">here.</a>

+<a href="requestProcess/request-process.png">here.</a>

 </p>

+<p>

+A UML sequence diagram of the authentication process is available

+<a href="requestProcess/authentication-process.png">here.</a>

+</p>

+

 </blockquote></td></tr></table>

 

 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments"><strong>comments</strong></a></font></td></tr><tr><td><blockquote>

@@ -35,6 +115,31 @@
 

 </blockquote></td></tr></table>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/architecture/requestProcess.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/architecture/requestProcess/authentication-process.png b/tomcat-uid/webapps/docs/architecture/requestProcess/authentication-process.png
new file mode 100644
index 0000000..e23c333
--- /dev/null
+++ b/tomcat-uid/webapps/docs/architecture/requestProcess/authentication-process.png
Binary files differ
diff --git a/tomcat-uid/webapps/docs/architecture/requestProcess/request-process.png b/tomcat-uid/webapps/docs/architecture/requestProcess/request-process.png
new file mode 100644
index 0000000..33ae3c3
--- /dev/null
+++ b/tomcat-uid/webapps/docs/architecture/requestProcess/request-process.png
Binary files differ
diff --git a/tomcat-uid/webapps/docs/architecture/requestProcess/requestProcess.pdf b/tomcat-uid/webapps/docs/architecture/requestProcess/requestProcess.pdf
deleted file mode 100644
index 6a171de..0000000
--- a/tomcat-uid/webapps/docs/architecture/requestProcess/requestProcess.pdf
+++ /dev/null
Binary files differ
diff --git a/tomcat-uid/webapps/docs/architecture/requestProcess/roseModel.mdl b/tomcat-uid/webapps/docs/architecture/requestProcess/roseModel.mdl
deleted file mode 100644
index 64ef567..0000000
--- a/tomcat-uid/webapps/docs/architecture/requestProcess/roseModel.mdl
+++ /dev/null
@@ -1,12921 +0,0 @@
-

-(object Petal

-    version    	45

-    _written   	"Rose 7.6.0109.2314"

-    charSet    	0)

-

-(object Design "Logical View"

-    is_unit    	TRUE

-    is_loaded  	TRUE

-    quid       	"3DFDF6CE0337"

-    defaults   	(object defaults

-	rightMargin 	0.250000

-	leftMargin 	0.250000

-	topMargin  	0.250000

-	bottomMargin 	0.500000

-	pageOverlap 	0.250000

-	clipIconLabels 	TRUE

-	autoResize 	TRUE

-	snapToGrid 	TRUE

-	gridX      	16

-	gridY      	16

-	defaultFont 	(object Font

-	    size       	10

-	    face       	"Arial"

-	    bold       	FALSE

-	    italics    	FALSE

-	    underline  	FALSE

-	    strike     	FALSE

-	    color      	0

-	    default_color 	TRUE)

-	showMessageNum 	1

-	showClassOfObject 	TRUE

-	notation   	"Unified")

-    root_usecase_package 	(object Class_Category "Use Case View"

-	quid       	"3DFDF6CE0369"

-	exportControl 	"Public"

-	global     	TRUE

-	logical_models 	(list unit_reference_list)

-	logical_presentations 	(list unit_reference_list

-	    (object UseCaseDiagram "Main"

-		quid       	"3DFDF6D201FE"

-		title      	"Main"

-		zoom       	100

-		max_height 	28350

-		max_width  	21600

-		origin_x   	0

-		origin_y   	0

-		items      	(list diagram_item_list))))

-    root_category 	(object Class_Category "Logical View"

-	quid       	"3DFDF6CE0338"

-	exportControl 	"Public"

-	global     	TRUE

-	subsystem  	"Component View"

-	quidu      	"3DFDF6CE036A"

-	logical_models 	(list unit_reference_list

-	    (object Class_Category "org.apache.catalina"

-		quid       	"3E42DE8D0082"

-		visible_categories 	(list visibility_relationship_list

-		    (object Visibility_Relationship

-			quid       	"3E42DEF601EB"

-			supplier   	"Logical View::org.apache.tomcat.util"

-			quidu      	"3E42DEDF01F2")

-		    (object Visibility_Relationship

-			quid       	"3E42DF700060"

-			supplier   	"Logical View::org.apache.coyote"

-			quidu      	"3E42DE9F0132")

-		    (object Visibility_Relationship

-			quid       	"3E43D165039C"

-			supplier   	"Logical View::org.apache.naming"

-			quidu      	"3E43D1580339"))

-		exportControl 	"Public"

-		logical_models 	(list unit_reference_list

-		    (object Class_Category "ant"

-			quid       	"3E42DFBB037F"

-			visible_categories 	(list visibility_relationship_list

-			    (object Visibility_Relationship

-				quid       	"3E43CFF7020F"

-				supplier   	"Logical View::org.apache.catalina::util"

-				quidu      	"3E42E0260184"))

-			exportControl 	"Public"

-			logical_models 	(list unit_reference_list)

-			logical_presentations 	(list unit_reference_list))

-		    (object Class_Category "authenticator"

-			quid       	"3E42DFC702B4"

-			visible_categories 	(list visibility_relationship_list

-			    (object Visibility_Relationship

-				quid       	"3E43D03C0395"

-				supplier   	"Logical View::org.apache.catalina::deploy"

-				quidu      	"3E42DFDC0340")

-			    (object Visibility_Relationship

-				quid       	"3E43D03F01C2"

-				supplier   	"Logical View::org.apache.catalina::util"

-				quidu      	"3E42E0260184")

-			    (object Visibility_Relationship

-				quid       	"3E43D043024A"

-				supplier   	"Logical View::org.apache.catalina::valves"

-				quidu      	"3E42E02D035B"))

-			exportControl 	"Public"

-			logical_models 	(list unit_reference_list)

-			logical_presentations 	(list unit_reference_list))

-		    (object Class_Category "connector"

-			quid       	"3E42DFCF036A"

-			visible_categories 	(list visibility_relationship_list

-			    (object Visibility_Relationship

-				quid       	"3E43D07E017D"

-				supplier   	"Logical View::org.apache.catalina::session"

-				quidu      	"3E42E00C026D"))

-			exportControl 	"Public"

-			logical_models 	(list unit_reference_list)

-			logical_presentations 	(list unit_reference_list))

-		    (object Class_Category "core"

-			quid       	"3E42DFD603BA"

-			visible_categories 	(list visibility_relationship_list

-			    (object Visibility_Relationship

-				quid       	"3E43D19E01A9"

-				supplier   	"Logical View::org.apache.catalina::deploy"

-				quidu      	"3E42DFDC0340")

-			    (object Visibility_Relationship

-				quid       	"3E43D1A10185"

-				supplier   	"Logical View::org.apache.catalina::util"

-				quidu      	"3E42E0260184")

-			    (object Visibility_Relationship

-				quid       	"3E43D1CE007C"

-				supplier   	"Logical View::org.apache.catalina::connector"

-				quidu      	"3E42DFCF036A")

-			    (object Visibility_Relationship

-				quid       	"3E43D1D800D0"

-				supplier   	"Logical View::org.apache.catalina::security"

-				quidu      	"3E42E00100D7")

-			    (object Visibility_Relationship

-				quid       	"3E43D25C031F"

-				supplier   	"Logical View::org.apache.catalina::mbean"

-				quidu      	"3E42DFF10188")

-			    (object Visibility_Relationship

-				quid       	"3E43D260028E"

-				supplier   	"Logical View::org.apache.catalina::startup"

-				quidu      	"3E42E01E00EC")

-			    (object Visibility_Relationship

-				quid       	"3E43D26A015C"

-				supplier   	"Logical View::org.apache.catalina::session"

-				quidu      	"3E42E00C026D")

-			    (object Visibility_Relationship

-				quid       	"3E43D2830271"

-				supplier   	"Logical View::org.apache.catalina::valves"

-				quidu      	"3E42E02D035B")

-			    (object Visibility_Relationship

-				quid       	"3E43D2C80248"

-				supplier   	"Logical View::org.apache.catalina::net"

-				quidu      	"3E42DFF70227")

-			    (object Visibility_Relationship

-				quid       	"3E43D2D6002B"

-				supplier   	"Logical View::org.apache.catalina::loader"

-				quidu      	"3E43D2D002D6")

-			    (object Visibility_Relationship

-				quid       	"3E43D3D300F7"

-				supplier   	"Logical View::org.apache.naming"

-				quidu      	"3E43D1580339"))

-			exportControl 	"Public"

-			logical_models 	(list unit_reference_list)

-			logical_presentations 	(list unit_reference_list))

-		    (object Class_Category "deploy"

-			quid       	"3E42DFDC0340"

-			visible_categories 	(list visibility_relationship_list

-			    (object Visibility_Relationship

-				quid       	"3E43D32001B8"

-				supplier   	"Logical View::org.apache.catalina::util"

-				quidu      	"3E42E0260184"))

-			exportControl 	"Public"

-			logical_models 	(list unit_reference_list)

-			logical_presentations 	(list unit_reference_list))

-		    (object Class_Category "launcher"

-			quid       	"3E42DFE2033F"

-			exportControl 	"Public"

-			logical_models 	(list unit_reference_list)

-			logical_presentations 	(list unit_reference_list))

-		    (object Class_Category "logger"

-			quid       	"3E42DFEC0285"

-			exportControl 	"Public"

-			logical_models 	(list unit_reference_list)

-			logical_presentations 	(list unit_reference_list))

-		    (object Class_Category "mbean"

-			quid       	"3E42DFF10188"

-			visible_categories 	(list visibility_relationship_list

-			    (object Visibility_Relationship

-				quid       	"3E43D49101A5"

-				supplier   	"Logical View::org.apache.catalina::deploy"

-				quidu      	"3E42DFDC0340")

-			    (object Visibility_Relationship

-				quid       	"3E43D4C6027D"

-				supplier   	"Logical View::org.apache.catalina::core"

-				quidu      	"3E42DFD603BA")

-			    (object Visibility_Relationship

-				quid       	"3E43D4FB008F"

-				supplier   	"Logical View::org.apache.catalina::session"

-				quidu      	"3E42E00C026D")

-			    (object Visibility_Relationship

-				quid       	"3E43D50000BE"

-				supplier   	"Logical View::org.apache.catalina::valves"

-				quidu      	"3E42E02D035B")

-			    (object Visibility_Relationship

-				quid       	"3E43D5080278"

-				supplier   	"Logical View::org.apache.catalina::realm"

-				quidu      	"3E42DFFA00AE")

-			    (object Visibility_Relationship

-				quid       	"3E43D55A0258"

-				supplier   	"Logical View::org.apache.catalina::logger"

-				quidu      	"3E42DFEC0285")

-			    (object Visibility_Relationship

-				quid       	"3E43D56000D0"

-				supplier   	"Logical View::org.apache.catalina::authenticator"

-				quidu      	"3E42DFC702B4"))

-			exportControl 	"Public"

-			logical_models 	(list unit_reference_list)

-			logical_presentations 	(list unit_reference_list))

-		    (object Class_Category "net"

-			quid       	"3E42DFF70227"

-			visible_categories 	(list visibility_relationship_list

-			    (object Visibility_Relationship

-				quid       	"3E43D6390371"

-				supplier   	"Logical View::org.apache.catalina::util"

-				quidu      	"3E42E0260184"))

-			exportControl 	"Public"

-			logical_models 	(list unit_reference_list)

-			logical_presentations 	(list unit_reference_list))

-		    (object Class_Category "realm"

-			quid       	"3E42DFFA00AE"

-			visible_categories 	(list visibility_relationship_list

-			    (object Visibility_Relationship

-				quid       	"3E43D69F0133"

-				supplier   	"Logical View::org.apache.catalina::core"

-				quidu      	"3E42DFD603BA")

-			    (object Visibility_Relationship

-				quid       	"3E43D6A10353"

-				supplier   	"Logical View::org.apache.catalina::util"

-				quidu      	"3E42E0260184")

-			    (object Visibility_Relationship

-				quid       	"3E43D70E00E2"

-				supplier   	"Logical View::org.apache.naming"

-				quidu      	"3E43D1580339")

-			    (object Visibility_Relationship

-				quid       	"3E43D72302D7"

-				supplier   	"Logical View::org.apache.catalina::deploy"

-				quidu      	"3E42DFDC0340"))

-			exportControl 	"Public"

-			logical_models 	(list unit_reference_list)

-			logical_presentations 	(list unit_reference_list))

-		    (object Class_Category "security"

-			quid       	"3E42E00100D7"

-			visible_categories 	(list visibility_relationship_list

-			    (object Visibility_Relationship

-				quid       	"3E43D74D007F"

-				supplier   	"Logical View::org.apache.catalina::startup"

-				quidu      	"3E42E01E00EC")

-			    (object Visibility_Relationship

-				quid       	"3E43D76B0371"

-				supplier   	"Logical View::org.apache.catalina::util"

-				quidu      	"3E42E0260184"))

-			exportControl 	"Public"

-			logical_models 	(list unit_reference_list)

-			logical_presentations 	(list unit_reference_list))

-		    (object Class_Category "servlets"

-			quid       	"3E42E00502DB"

-			visible_categories 	(list visibility_relationship_list

-			    (object Visibility_Relationship

-				quid       	"3E43D82702E5"

-				supplier   	"Logical View::org.apache.tomcat.util"

-				quidu      	"3E42DEDF01F2")

-			    (object Visibility_Relationship

-				quid       	"3E43D82A02CC"

-				supplier   	"Logical View::org.apache.catalina::util"

-				quidu      	"3E42E0260184")

-			    (object Visibility_Relationship

-				quid       	"3E43D82D0244"

-				supplier   	"Logical View::org.apache.naming"

-				quidu      	"3E43D1580339"))

-			exportControl 	"Public"

-			logical_models 	(list unit_reference_list)

-			logical_presentations 	(list unit_reference_list))

-		    (object Class_Category "session"

-			quid       	"3E42E00C026D"

-			visible_categories 	(list visibility_relationship_list

-			    (object Visibility_Relationship

-				quid       	"3E43D8770344"

-				supplier   	"Logical View::org.apache.catalina::util"

-				quidu      	"3E42E0260184"))

-			exportControl 	"Public"

-			logical_models 	(list unit_reference_list)

-			logical_presentations 	(list unit_reference_list))

-		    (object Class_Category "ssi"

-			quid       	"3E42E01002C3"

-			visible_categories 	(list visibility_relationship_list

-			    (object Visibility_Relationship

-				quid       	"3E43D8F902B5"

-				supplier   	"Logical View::org.apache.catalina::util"

-				quidu      	"3E42E0260184"))

-			exportControl 	"Public"

-			logical_models 	(list unit_reference_list)

-			logical_presentations 	(list unit_reference_list))

-		    (object Class_Category "startup"

-			quid       	"3E42E01E00EC"

-			visible_categories 	(list visibility_relationship_list

-			    (object Visibility_Relationship

-				quid       	"3E43D9150251"

-				supplier   	"Logical View::org.apache.catalina::logger"

-				quidu      	"3E42DFEC0285")

-			    (object Visibility_Relationship

-				quid       	"3E43D919018F"

-				supplier   	"Logical View::org.apache.catalina::security"

-				quidu      	"3E42E00100D7")

-			    (object Visibility_Relationship

-				quid       	"3E43D946000D"

-				supplier   	"Logical View::org.apache.catalina::core"

-				quidu      	"3E42DFD603BA")

-			    (object Visibility_Relationship

-				quid       	"3E43D95E012A"

-				supplier   	"Logical View::org.apache.catalina::loader"

-				quidu      	"3E43D2D002D6")

-			    (object Visibility_Relationship

-				quid       	"3E43D9960315"

-				supplier   	"Logical View::org.apache.catalina::util"

-				quidu      	"3E42E0260184")

-			    (object Visibility_Relationship

-				quid       	"3E43D99902BF"

-				supplier   	"Logical View::org.apache.catalina::valves"

-				quidu      	"3E42E02D035B")

-			    (object Visibility_Relationship

-				quid       	"3E43D99C0147"

-				supplier   	"Logical View::org.apache.catalina::deploy"

-				quidu      	"3E42DFDC0340")

-			    (object Visibility_Relationship

-				quid       	"3E43D9DA0114"

-				supplier   	"Logical View::org.apache.catalina::net"

-				quidu      	"3E42DFF70227")

-			    (object Visibility_Relationship

-				quid       	"3E43D9F402F2"

-				supplier   	"Logical View::org.apache.catalina::realm"

-				quidu      	"3E42DFFA00AE"))

-			exportControl 	"Public"

-			logical_models 	(list unit_reference_list)

-			logical_presentations 	(list unit_reference_list))

-		    (object Class_Category "user"

-			quid       	"3E42E0220174"

-			visible_categories 	(list visibility_relationship_list

-			    (object Visibility_Relationship

-				quid       	"3E43DB240227"

-				supplier   	"Logical View::org.apache.catalina::util"

-				quidu      	"3E42E0260184")

-			    (object Visibility_Relationship

-				quid       	"3E43DB31009F"

-				supplier   	"Logical View::org.apache.naming"

-				quidu      	"3E43D1580339"))

-			exportControl 	"Public"

-			logical_models 	(list unit_reference_list)

-			logical_presentations 	(list unit_reference_list))

-		    (object Class_Category "util"

-			quid       	"3E42E0260184"

-			visible_categories 	(list visibility_relationship_list

-			    (object Visibility_Relationship

-				quid       	"3E43DB85017C"

-				supplier   	"Logical View::org.apache.catalina::core"

-				quidu      	"3E42DFD603BA")

-			    (object Visibility_Relationship

-				quid       	"3E43DB88016C"

-				supplier   	"Logical View::org.apache.naming"

-				quidu      	"3E43D1580339"))

-			exportControl 	"Public"

-			logical_models 	(list unit_reference_list)

-			logical_presentations 	(list unit_reference_list))

-		    (object Class_Category "valves"

-			quid       	"3E42E02D035B"

-			visible_categories 	(list visibility_relationship_list

-			    (object Visibility_Relationship

-				quid       	"3E43DC2B0257"

-				supplier   	"Logical View::org.apache.catalina::util"

-				quidu      	"3E42E0260184")

-			    (object Visibility_Relationship

-				quid       	"3E43DD3E0271"

-				supplier   	"Logical View::org.apache.catalina::deploy"

-				quidu      	"3E42DFDC0340")

-			    (object Visibility_Relationship

-				quid       	"3E43DD4102CF"

-				supplier   	"Logical View::org.apache.catalina::connector"

-				quidu      	"3E42DFCF036A")

-			    (object Visibility_Relationship

-				quid       	"3E43DDDE00B8"

-				supplier   	"Logical View::org.apache.catalina::core"

-				quidu      	"3E42DFD603BA"))

-			exportControl 	"Public"

-			logical_models 	(list unit_reference_list)

-			logical_presentations 	(list unit_reference_list))

-		    (object Class_Category "loader"

-			quid       	"3E43D2D002D6"

-			visible_categories 	(list visibility_relationship_list

-			    (object Visibility_Relationship

-				quid       	"3E43D3CF00F2"

-				supplier   	"Logical View::org.apache.naming"

-				quidu      	"3E43D1580339"))

-			exportControl 	"Public"

-			logical_models 	(list unit_reference_list)

-			logical_presentations 	(list unit_reference_list)))

-		logical_presentations 	(list unit_reference_list

-		    (object ClassDiagram "Main"

-			quid       	"3E42DFB6010B"

-			title      	"Main"

-			zoom       	100

-			max_height 	28350

-			max_width  	21600

-			origin_x   	0

-			origin_y   	0

-			items      	(list diagram_item_list

-			    (object CategoryView "Logical View::org.apache.catalina::ant" @1

-				location   	(2208, 1504)

-				font       	(object Font

-				    size       	10

-				    face       	"Arial"

-				    bold       	FALSE

-				    italics    	FALSE

-				    underline  	FALSE

-				    strike     	FALSE

-				    color      	0

-				    default_color 	TRUE)

-				label      	(object ItemLabel

-				    Parent_View 	@1

-				    location   	(2064, 1420)

-				    fill_color 	13434879

-				    nlines     	2

-				    max_width  	288

-				    justify    	0

-				    label      	"ant")

-				icon_style 	"Icon"

-				line_color 	3342489

-				fill_color 	13434879

-				quidu      	"3E42DFBB037F"

-				width      	300

-				height     	180)

-			    (object CategoryView "Logical View::org.apache.catalina::authenticator" @2

-				location   	(192, 2000)

-				font       	(object Font

-				    size       	10

-				    face       	"Arial"

-				    bold       	FALSE

-				    italics    	FALSE

-				    underline  	FALSE

-				    strike     	FALSE

-				    color      	0

-				    default_color 	TRUE)

-				label      	(object ItemLabel

-				    Parent_View 	@2

-				    location   	(48, 1916)

-				    fill_color 	13434879

-				    nlines     	2

-				    max_width  	288

-				    justify    	0

-				    label      	"authenticator")

-				icon_style 	"Icon"

-				line_color 	3342489

-				fill_color 	13434879

-				quidu      	"3E42DFC702B4"

-				width      	300

-				height     	180)

-			    (object CategoryView "Logical View::org.apache.catalina::connector" @3

-				location   	(464, 1328)

-				font       	(object Font

-				    size       	10

-				    face       	"Arial"

-				    bold       	FALSE

-				    italics    	FALSE

-				    underline  	FALSE

-				    strike     	FALSE

-				    color      	0

-				    default_color 	TRUE)

-				label      	(object ItemLabel

-				    Parent_View 	@3

-				    location   	(320, 1244)

-				    fill_color 	13434879

-				    nlines     	2

-				    max_width  	288

-				    justify    	0

-				    label      	"connector")

-				icon_style 	"Icon"

-				line_color 	3342489

-				fill_color 	13434879

-				quidu      	"3E42DFCF036A"

-				width      	300

-				height     	180)

-			    (object CategoryView "Logical View::org.apache.catalina::core" @4

-				location   	(2224, 800)

-				font       	(object Font

-				    size       	10

-				    face       	"Arial"

-				    bold       	FALSE

-				    italics    	FALSE

-				    underline  	FALSE

-				    strike     	FALSE

-				    color      	0

-				    default_color 	TRUE)

-				label      	(object ItemLabel

-				    Parent_View 	@4

-				    location   	(2080, 716)

-				    fill_color 	13434879

-				    nlines     	2

-				    max_width  	288

-				    justify    	0

-				    label      	"core")

-				icon_style 	"Icon"

-				line_color 	3342489

-				fill_color 	13434879

-				quidu      	"3E42DFD603BA"

-				width      	300

-				height     	180)

-			    (object CategoryView "Logical View::org.apache.catalina::deploy" @5

-				location   	(240, 160)

-				font       	(object Font

-				    size       	10

-				    face       	"Arial"

-				    bold       	FALSE

-				    italics    	FALSE

-				    underline  	FALSE

-				    strike     	FALSE

-				    color      	0

-				    default_color 	TRUE)

-				label      	(object ItemLabel

-				    Parent_View 	@5

-				    location   	(96, 76)

-				    fill_color 	13434879

-				    nlines     	2

-				    max_width  	288

-				    justify    	0

-				    label      	"deploy")

-				icon_style 	"Icon"

-				line_color 	3342489

-				fill_color 	13434879

-				quidu      	"3E42DFDC0340"

-				width      	300

-				height     	180)

-			    (object CategoryView "Logical View::org.apache.catalina::launcher" @6

-				location   	(1776, 2480)

-				font       	(object Font

-				    size       	10

-				    face       	"Arial"

-				    bold       	FALSE

-				    italics    	FALSE

-				    underline  	FALSE

-				    strike     	FALSE

-				    color      	0

-				    default_color 	TRUE)

-				label      	(object ItemLabel

-				    Parent_View 	@6

-				    location   	(1632, 2396)

-				    fill_color 	13434879

-				    nlines     	2

-				    max_width  	288

-				    justify    	0

-				    label      	"launcher")

-				icon_style 	"Icon"

-				line_color 	3342489

-				fill_color 	13434879

-				quidu      	"3E42DFE2033F"

-				width      	300

-				height     	180)

-			    (object CategoryView "Logical View::org.apache.catalina::logger" @7

-				location   	(752, 128)

-				font       	(object Font

-				    size       	10

-				    face       	"Arial"

-				    bold       	FALSE

-				    italics    	FALSE

-				    underline  	FALSE

-				    strike     	FALSE

-				    color      	0

-				    default_color 	TRUE)

-				label      	(object ItemLabel

-				    Parent_View 	@7

-				    location   	(608, 44)

-				    fill_color 	13434879

-				    nlines     	2

-				    max_width  	288

-				    justify    	0

-				    label      	"logger")

-				icon_style 	"Icon"

-				line_color 	3342489

-				fill_color 	13434879

-				quidu      	"3E42DFEC0285"

-				width      	300

-				height     	180)

-			    (object CategoryView "Logical View::org.apache.catalina::mbean" @8

-				location   	(2208, 1216)

-				font       	(object Font

-				    size       	10

-				    face       	"Arial"

-				    bold       	FALSE

-				    italics    	FALSE

-				    underline  	FALSE

-				    strike     	FALSE

-				    color      	0

-				    default_color 	TRUE)

-				label      	(object ItemLabel

-				    Parent_View 	@8

-				    location   	(2064, 1132)

-				    fill_color 	13434879

-				    nlines     	2

-				    max_width  	288

-				    justify    	0

-				    label      	"mbean")

-				icon_style 	"Icon"

-				line_color 	3342489

-				fill_color 	13434879

-				quidu      	"3E42DFF10188"

-				width      	300

-				height     	180)

-			    (object CategoryView "Logical View::org.apache.catalina::net" @9

-				location   	(1056, 2496)

-				font       	(object Font

-				    size       	10

-				    face       	"Arial"

-				    bold       	FALSE

-				    italics    	FALSE

-				    underline  	FALSE

-				    strike     	FALSE

-				    color      	0

-				    default_color 	TRUE)

-				label      	(object ItemLabel

-				    Parent_View 	@9

-				    location   	(912, 2412)

-				    fill_color 	13434879

-				    nlines     	2

-				    max_width  	288

-				    justify    	0

-				    label      	"net")

-				icon_style 	"Icon"

-				line_color 	3342489

-				fill_color 	13434879

-				quidu      	"3E42DFF70227"

-				width      	300

-				height     	180)

-			    (object CategoryView "Logical View::org.apache.catalina::realm" @10

-				location   	(1248, 112)

-				font       	(object Font

-				    size       	10

-				    face       	"Arial"

-				    bold       	FALSE

-				    italics    	FALSE

-				    underline  	FALSE

-				    strike     	FALSE

-				    color      	0

-				    default_color 	TRUE)

-				label      	(object ItemLabel

-				    Parent_View 	@10

-				    location   	(1104, 28)

-				    fill_color 	13434879

-				    nlines     	2

-				    max_width  	288

-				    justify    	0

-				    label      	"realm")

-				icon_style 	"Icon"

-				line_color 	3342489

-				fill_color 	13434879

-				quidu      	"3E42DFFA00AE"

-				width      	300

-				height     	180)

-			    (object CategoryView "Logical View::org.apache.catalina::security" @11

-				location   	(304, 2496)

-				font       	(object Font

-				    size       	10

-				    face       	"Arial"

-				    bold       	FALSE

-				    italics    	FALSE

-				    underline  	FALSE

-				    strike     	FALSE

-				    color      	0

-				    default_color 	TRUE)

-				label      	(object ItemLabel

-				    Parent_View 	@11

-				    location   	(160, 2412)

-				    fill_color 	13434879

-				    nlines     	2

-				    max_width  	288

-				    justify    	0

-				    label      	"security")

-				icon_style 	"Icon"

-				line_color 	3342489

-				fill_color 	13434879

-				quidu      	"3E42E00100D7"

-				width      	300

-				height     	180)

-			    (object CategoryView "Logical View::org.apache.catalina::servlets" @12

-				location   	(2096, 1888)

-				font       	(object Font

-				    size       	10

-				    face       	"Arial"

-				    bold       	FALSE

-				    italics    	FALSE

-				    underline  	FALSE

-				    strike     	FALSE

-				    color      	0

-				    default_color 	TRUE)

-				label      	(object ItemLabel

-				    Parent_View 	@12

-				    location   	(1952, 1804)

-				    fill_color 	13434879

-				    nlines     	2

-				    max_width  	288

-				    justify    	0

-				    label      	"servlets")

-				icon_style 	"Icon"

-				line_color 	3342489

-				fill_color 	13434879

-				quidu      	"3E42E00502DB"

-				width      	300

-				height     	180)

-			    (object CategoryView "Logical View::org.apache.catalina::session" @13

-				location   	(432, 1696)

-				font       	(object Font

-				    size       	10

-				    face       	"Arial"

-				    bold       	FALSE

-				    italics    	FALSE

-				    underline  	FALSE

-				    strike     	FALSE

-				    color      	0

-				    default_color 	TRUE)

-				label      	(object ItemLabel

-				    Parent_View 	@13

-				    location   	(288, 1612)

-				    fill_color 	13434879

-				    nlines     	2

-				    max_width  	288

-				    justify    	0

-				    label      	"session")

-				icon_style 	"Icon"

-				line_color 	3342489

-				fill_color 	13434879

-				quidu      	"3E42E00C026D"

-				width      	300

-				height     	180)

-			    (object CategoryView "Logical View::org.apache.catalina::ssi" @14

-				location   	(672, 2480)

-				font       	(object Font

-				    size       	10

-				    face       	"Arial"

-				    bold       	FALSE

-				    italics    	FALSE

-				    underline  	FALSE

-				    strike     	FALSE

-				    color      	0

-				    default_color 	TRUE)

-				label      	(object ItemLabel

-				    Parent_View 	@14

-				    location   	(528, 2393)

-				    fill_color 	13434879

-				    nlines     	2

-				    max_width  	288

-				    justify    	0

-				    label      	"ssi")

-				icon_style 	"Icon"

-				line_color 	3342489

-				fill_color 	13434879

-				quidu      	"3E42E01002C3"

-				width      	301

-				height     	187)

-			    (object CategoryView "Logical View::org.apache.catalina::startup" @15

-				location   	(1088, 832)

-				font       	(object Font

-				    size       	10

-				    face       	"Arial"

-				    bold       	FALSE

-				    italics    	FALSE

-				    underline  	FALSE

-				    strike     	FALSE

-				    color      	0

-				    default_color 	TRUE)

-				label      	(object ItemLabel

-				    Parent_View 	@15

-				    location   	(944, 748)

-				    fill_color 	13434879

-				    nlines     	2

-				    max_width  	288

-				    justify    	0

-				    label      	"startup")

-				icon_style 	"Icon"

-				line_color 	3342489

-				fill_color 	13434879

-				quidu      	"3E42E01E00EC"

-				width      	300

-				height     	180)

-			    (object CategoryView "Logical View::org.apache.catalina::user" @16

-				location   	(1424, 2496)

-				font       	(object Font

-				    size       	10

-				    face       	"Arial"

-				    bold       	FALSE

-				    italics    	FALSE

-				    underline  	FALSE

-				    strike     	FALSE

-				    color      	0

-				    default_color 	TRUE)

-				label      	(object ItemLabel

-				    Parent_View 	@16

-				    location   	(1280, 2412)

-				    fill_color 	13434879

-				    nlines     	2

-				    max_width  	288

-				    justify    	0

-				    label      	"user")

-				icon_style 	"Icon"

-				line_color 	3342489

-				fill_color 	13434879

-				quidu      	"3E42E0220174"

-				width      	300

-				height     	180)

-			    (object CategoryView "Logical View::org.apache.catalina::util" @17

-				location   	(1312, 1872)

-				font       	(object Font

-				    size       	10

-				    face       	"Arial"

-				    bold       	FALSE

-				    italics    	FALSE

-				    underline  	FALSE

-				    strike     	FALSE

-				    color      	0

-				    default_color 	TRUE)

-				label      	(object ItemLabel

-				    Parent_View 	@17

-				    location   	(1168, 1788)

-				    fill_color 	13434879

-				    nlines     	2

-				    max_width  	288

-				    justify    	0

-				    label      	"util")

-				icon_style 	"Icon"

-				line_color 	3342489

-				fill_color 	13434879

-				quidu      	"3E42E0260184"

-				width      	300

-				height     	180)

-			    (object CategoryView "Logical View::org.apache.catalina::valves" @18

-				location   	(304, 704)

-				font       	(object Font

-				    size       	10

-				    face       	"Arial"

-				    bold       	FALSE

-				    italics    	FALSE

-				    underline  	FALSE

-				    strike     	FALSE

-				    color      	0

-				    default_color 	TRUE)

-				label      	(object ItemLabel

-				    Parent_View 	@18

-				    location   	(160, 620)

-				    fill_color 	13434879

-				    nlines     	2

-				    max_width  	288

-				    justify    	0

-				    label      	"valves")

-				icon_style 	"Icon"

-				line_color 	3342489

-				fill_color 	13434879

-				quidu      	"3E42E02D035B"

-				width      	300

-				height     	180)

-			    (object ImportView "" @19

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43CFF7020F"

-				client     	@1

-				supplier   	@17

-				line_style 	0)

-			    (object ImportView "" @20

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D07E017D"

-				client     	@3

-				supplier   	@13

-				line_style 	0)

-			    (object CategoryView "Logical View::org.apache.catalina::loader" @21

-				location   	(2240, 416)

-				font       	(object Font

-				    size       	10

-				    face       	"Arial"

-				    bold       	FALSE

-				    italics    	FALSE

-				    underline  	FALSE

-				    strike     	FALSE

-				    color      	0

-				    default_color 	TRUE)

-				label      	(object ItemLabel

-				    Parent_View 	@21

-				    location   	(2096, 332)

-				    fill_color 	13434879

-				    nlines     	2

-				    max_width  	288

-				    justify    	0

-				    label      	"loader")

-				icon_style 	"Icon"

-				line_color 	3342489

-				fill_color 	13434879

-				quidu      	"3E43D2D002D6"

-				width      	300

-				height     	180)

-			    (object ImportView "" @22

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D32001B8"

-				client     	@5

-				supplier   	@17

-				line_style 	0)

-			    (object CategoryView "Logical View::org.apache.naming" @23

-				location   	(1872, 96)

-				font       	(object Font

-				    size       	10

-				    face       	"Arial"

-				    bold       	FALSE

-				    italics    	FALSE

-				    underline  	FALSE

-				    strike     	FALSE

-				    color      	0

-				    default_color 	TRUE)

-				label      	(object ItemLabel

-				    Parent_View 	@23

-				    location   	(1699, 12)

-				    fill_color 	13434879

-				    nlines     	2

-				    max_width  	346

-				    justify    	0

-				    label      	"org.apache.naming")

-				icon_style 	"Icon"

-				line_color 	3342489

-				fill_color 	13434879

-				quidu      	"3E43D1580339"

-				width      	358

-				height     	180)

-			    (object ImportView "" @24

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D3CF00F2"

-				client     	@21

-				supplier   	@23

-				line_style 	0)

-			    (object ImportView "" @25

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D6390371"

-				client     	@9

-				supplier   	@17

-				line_style 	0)

-			    (object ImportView "" @26

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D69F0133"

-				client     	@10

-				supplier   	@4

-				line_style 	0)

-			    (object ImportView "" @27

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D6A10353"

-				client     	@10

-				supplier   	@17

-				line_style 	0)

-			    (object ImportView "" @28

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D70E00E2"

-				client     	@10

-				supplier   	@23

-				line_style 	0)

-			    (object ImportView "" @29

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D72302D7"

-				client     	@10

-				supplier   	@5

-				line_style 	0)

-			    (object ImportView "" @30

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D69F0133"

-				client     	@10

-				supplier   	@4

-				line_style 	0)

-			    (object ImportView "" @31

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D74D007F"

-				client     	@11

-				supplier   	@15

-				line_style 	0)

-			    (object ImportView "" @32

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D76B0371"

-				client     	@11

-				supplier   	@17

-				line_style 	0)

-			    (object CategoryView "Logical View::org.apache.tomcat.util" @33

-				location   	(2096, 2224)

-				font       	(object Font

-				    size       	10

-				    face       	"Arial"

-				    bold       	FALSE

-				    italics    	FALSE

-				    underline  	FALSE

-				    strike     	FALSE

-				    color      	0

-				    default_color 	TRUE)

-				label      	(object ItemLabel

-				    Parent_View 	@33

-				    location   	(1923, 2140)

-				    fill_color 	13434879

-				    nlines     	2

-				    max_width  	346

-				    justify    	0

-				    label      	"org.apache.tomcat.util")

-				icon_style 	"Icon"

-				line_color 	3342489

-				fill_color 	13434879

-				quidu      	"3E42DEDF01F2"

-				width      	358

-				height     	180)

-			    (object ImportView "" @34

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D8770344"

-				client     	@13

-				supplier   	@17

-				line_style 	0)

-			    (object ImportView "" @35

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D8F902B5"

-				client     	@14

-				supplier   	@17

-				line_style 	0)

-			    (object ImportView "" @36

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43DB240227"

-				client     	@16

-				supplier   	@17

-				line_style 	0)

-			    (object ImportView "" @37

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43DB31009F"

-				client     	@16

-				supplier   	@23

-				line_style 	0)

-			    (object ImportView "" @38

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43DB85017C"

-				client     	@17

-				supplier   	@4

-				line_style 	0)

-			    (object ImportView "" @39

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43DB88016C"

-				client     	@17

-				supplier   	@23

-				line_style 	0)

-			    (object ImportView "" @40

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D82702E5"

-				client     	@12

-				supplier   	@33

-				line_style 	0)

-			    (object ImportView "" @41

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D82A02CC"

-				client     	@12

-				supplier   	@17

-				line_style 	0)

-			    (object ImportView "" @42

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D82D0244"

-				client     	@12

-				supplier   	@23

-				vertices   	(list Points

-				    (2060, 1743)

-				    (1746, 447)

-				    (1838, 186))

-				line_style 	0)

-			    (object ImportView "" @43

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D919018F"

-				client     	@15

-				supplier   	@11

-				line_style 	0)

-			    (object ImportView "" @44

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D946000D"

-				client     	@15

-				supplier   	@4

-				line_style 	0)

-			    (object ImportView "" @45

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D95E012A"

-				client     	@15

-				supplier   	@21

-				line_style 	0)

-			    (object ImportView "" @46

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D95E012A"

-				client     	@15

-				supplier   	@21

-				line_style 	0)

-			    (object ImportView "" @47

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D9960315"

-				client     	@15

-				supplier   	@17

-				line_style 	0)

-			    (object ImportView "" @48

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D99902BF"

-				client     	@15

-				supplier   	@18

-				line_style 	0)

-			    (object ImportView "" @49

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D99C0147"

-				client     	@15

-				supplier   	@5

-				line_style 	0)

-			    (object ImportView "" @50

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D946000D"

-				client     	@15

-				supplier   	@4

-				line_style 	0)

-			    (object ImportView "" @51

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D9150251"

-				client     	@15

-				supplier   	@7

-				line_style 	0)

-			    (object ImportView "" @52

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D9DA0114"

-				client     	@15

-				supplier   	@9

-				line_style 	0)

-			    (object ImportView "" @53

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D9F402F2"

-				client     	@15

-				supplier   	@10

-				line_style 	0)

-			    (object ImportView "" @54

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D9960315"

-				client     	@15

-				supplier   	@17

-				line_style 	0)

-			    (object ImportView "" @55

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D946000D"

-				client     	@15

-				supplier   	@4

-				line_style 	0)

-			    (object ImportView "" @56

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D99C0147"

-				client     	@15

-				supplier   	@5

-				line_style 	0)

-			    (object ImportView "" @57

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D49101A5"

-				client     	@8

-				supplier   	@5

-				line_style 	0)

-			    (object ImportView "" @58

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D4C6027D"

-				client     	@8

-				supplier   	@4

-				line_style 	0)

-			    (object ImportView "" @59

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D4FB008F"

-				client     	@8

-				supplier   	@13

-				line_style 	0)

-			    (object ImportView "" @60

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D50000BE"

-				client     	@8

-				supplier   	@18

-				vertices   	(list Points

-				    (2057, 1216)

-				    (1278, 1216)

-				    (454, 783))

-				line_style 	0)

-			    (object ImportView "" @61

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D5080278"

-				client     	@8

-				supplier   	@10

-				line_style 	0)

-			    (object ImportView "" @62

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D55A0258"

-				client     	@8

-				supplier   	@7

-				line_style 	0)

-			    (object ImportView "" @63

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D56000D0"

-				client     	@8

-				supplier   	@2

-				line_style 	0)

-			    (object ImportView "" @64

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D19E01A9"

-				client     	@4

-				supplier   	@5

-				line_style 	0)

-			    (object ImportView "" @65

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D1A10185"

-				client     	@4

-				supplier   	@17

-				line_style 	0)

-			    (object ImportView "" @66

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D1CE007C"

-				client     	@4

-				supplier   	@3

-				line_style 	0)

-			    (object ImportView "" @67

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D1D800D0"

-				client     	@4

-				supplier   	@11

-				vertices   	(list Points

-				    (2081, 890)

-				    (959, 1616)

-				    (409, 2351))

-				line_style 	0)

-			    (object ImportView "" @68

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D25C031F"

-				client     	@4

-				supplier   	@8

-				line_style 	0)

-			    (object ImportView "" @69

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D260028E"

-				client     	@4

-				supplier   	@15

-				line_style 	0)

-			    (object ImportView "" @70

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D26A015C"

-				client     	@4

-				supplier   	@13

-				line_style 	0)

-			    (object ImportView "" @71

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D2830271"

-				client     	@4

-				supplier   	@18

-				line_style 	0)

-			    (object ImportView "" @72

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D2C80248"

-				client     	@4

-				supplier   	@9

-				line_style 	0)

-			    (object ImportView "" @73

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D2D6002B"

-				client     	@4

-				supplier   	@21

-				line_style 	0)

-			    (object ImportView "" @74

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D3D300F7"

-				client     	@4

-				supplier   	@23

-				line_style 	0)

-			    (object ImportView "" @75

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D03C0395"

-				client     	@2

-				supplier   	@5

-				vertices   	(list Points

-				    (171, 1855)

-				    (16, 766)

-				    (205, 250))

-				line_style 	0)

-			    (object ImportView "" @76

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D03F01C2"

-				client     	@2

-				supplier   	@17

-				line_style 	0)

-			    (object ImportView "" @77

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43D043024A"

-				client     	@2

-				supplier   	@18

-				line_style 	0)

-			    (object ImportView "" @78

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43DC2B0257"

-				client     	@18

-				supplier   	@17

-				line_style 	0)

-			    (object ImportView "" @79

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43DD3E0271"

-				client     	@18

-				supplier   	@5

-				line_style 	0)

-			    (object ImportView "" @80

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43DD4102CF"

-				client     	@18

-				supplier   	@3

-				line_style 	0)

-			    (object ImportView "" @81

-				stereotype 	TRUE

-				line_color 	3342489

-				quidu      	"3E43DDDE00B8"

-				client     	@18

-				supplier   	@4

-				vertices   	(list Points

-				    (454, 654)

-				    (1293, 381)

-				    (2073, 731))

-				line_style 	0)))))

-	    (object Class_Category "org.apache.coyote"

-		quid       	"3E42DE9F0132"

-		visible_categories 	(list visibility_relationship_list

-		    (object Visibility_Relationship

-			quid       	"3E42DEFC00B3"

-			supplier   	"Logical View::org.apache.tomcat.util"

-			quidu      	"3E42DEDF01F2"))

-		exportControl 	"Public"

-		logical_models 	(list unit_reference_list)

-		logical_presentations 	(list unit_reference_list))

-	    (object Class_Category "org.apache.tomcat.util"

-		quid       	"3E42DEDF01F2"

-		exportControl 	"Public"

-		logical_models 	(list unit_reference_list)

-		logical_presentations 	(list unit_reference_list))

-	    (object Class_Category "org.apache.jasper"

-		quid       	"3E42DEFF0270"

-		exportControl 	"Public"

-		logical_models 	(list unit_reference_list)

-		logical_presentations 	(list unit_reference_list))

-	    (object Class_Category "org.apache.naming"

-		quid       	"3E43D1580339"

-		exportControl 	"Public"

-		logical_models 	(list unit_reference_list)

-		logical_presentations 	(list unit_reference_list))

-	    (object Mechanism @82

-		logical_models 	(list unit_reference_list

-		    (object Object "Bootstrap"

-			quid       	"3DFDF8FD0345"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFDF9210008"

-				supplier   	"Bootstrap"

-				quidu      	"3DFDF8FD0345"

-				messages   	(list Messages

-				    (object Message "initClassLoaders()"

-					quid       	"3DFDF9210009"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"1"

-					ordinal    	0

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFDF91A010C"

-				supplier   	"Catalina"

-				quidu      	"3DFDF90A0330"

-				messages   	(list Messages

-				    (object Message "newInstance()"

-					quid       	"3DFDF91A010D"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"2"

-					ordinal    	1

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "setParentClassLoader()"

-					quid       	"3DFDF97900C2"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3"

-					ordinal    	2

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "load()"

-					quid       	"3DFDFA3402F2"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"4"

-					ordinal    	3

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "Digester"

-			quid       	"3DFDFAF201A1"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFDFB8400A6"

-				supplier   	"ServerLifecycleListener"

-				quidu      	"3DFDFB4B0217"

-				messages   	(list Messages

-				    (object Message "newInstance()"

-					quid       	"3DFDFB8400A7"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"9.1"

-					ordinal    	9

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFDFB920147"

-				supplier   	"GlobalResourcesLifecycleListener"

-				quidu      	"3DFDFB7A02AB"

-				messages   	(list Messages

-				    (object Message "newInstance()"

-					quid       	"3DFDFB920148"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"9.2"

-					ordinal    	10

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "ServerLifecycleListener"

-			quid       	"3DFDFB4B0217"

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "GlobalResourcesLifecycleListener"

-			quid       	"3DFDFB7A02AB"

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "SecurityConfig"

-			quid       	"3DFDFBD802BA"

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "Catalina"

-			quid       	"3DFDF90A0330"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFDFA8001D9"

-				supplier   	"Catalina"

-				quidu      	"3DFDF90A0330"

-				messages   	(list Messages

-				    (object Message "initDirs()"

-					quid       	"3DFDFA8001DA"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"5"

-					ordinal    	4

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "initNaming()"

-					quid       	"3DFDFA8B0347"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"6"

-					ordinal    	5

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "initialize()"

-					quid       	"3DFDFAAD01AC"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"7"

-					ordinal    	6

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFDFAF800C3"

-				supplier   	"Digester"

-				quidu      	"3DFDFAF201A1"

-				messages   	(list Messages

-				    (object Message "createDigester()"

-					quid       	"3DFDFAF800C4"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"8"

-					ordinal    	7

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "parse()"

-					quid       	"3DFDFB0100B2"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"9"

-					ordinal    	8

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFDFBEA00C1"

-				supplier   	"SecurityConfig"

-				quidu      	"3DFDFBD802BA"

-				messages   	(list Messages

-				    (object Message "newInstance()"

-					quid       	"3DFDFBEA00C2"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"10"

-					ordinal    	11

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "setPackageDefinition()"

-					quid       	"3DFDFBF401F2"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"11"

-					ordinal    	12

-					Operation  	"setPackageDefinition"

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "setPackageAccess()"

-					quid       	"3DFDFC1203C2"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"12"

-					ordinal    	13

-					Operation  	"setPackageAccess"

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)))

-	    (object Mechanism @83

-		logical_models 	(list unit_reference_list

-		    (object Object "Catalina"

-			quid       	"3DFDFC8F015F"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFDFD1F0075"

-				supplier   	"StandardServer"

-				quidu      	"3DFDFCCB006B"

-				messages   	(list Messages

-				    (object Message "initialize()"

-					quid       	"3DFDFD1F0076"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"1"

-					ordinal    	0

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "StandardServer"

-			quid       	"3DFDFCCB006B"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFDFD3D01C3"

-				supplier   	"StandardService"

-				quidu      	"3DFDFD370020"

-				messages   	(list Messages

-				    (object Message "initialize()"

-					quid       	"3DFDFD3D01C4"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"2"

-					ordinal    	1

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "StandardService"

-			quid       	"3DFDFD370020"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFDFE990304"

-				supplier   	"CoyoteConnector"

-				quidu      	"3DFDFE810313"

-				messages   	(list Messages

-				    (object Message "initialize()"

-					quid       	"3DFDFE990305"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"2.1"

-					ordinal    	2

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "CoyoteConnector"

-			quid       	"3DFDFE810313"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE013D0216"

-				supplier   	"CoyoteAdapter"

-				quidu      	"3DFDFFA00226"

-				messages   	(list Messages

-				    (object Message "new()"

-					quid       	"3DFE013D0217"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"2.1.1"

-					ordinal    	3

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFE0183032F"

-				supplier   	"Http11Protocol"

-				quidu      	"3DFE016601A6"

-				messages   	(list Messages

-				    (object Message "new()"

-					quid       	"3DFE01830330"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"2.1.2"

-					ordinal    	4

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "init()"

-					quid       	"3DFE0188032C"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"2.1.3"

-					ordinal    	5

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFE01BC038B"

-				supplier   	"JkCoyoteAdapter"

-				quidu      	"3DFE01AD01A8"

-				messages   	(list Messages

-				    (object Message "new()"

-					quid       	"3DFE01BC038C"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"2.1.4"

-					ordinal    	6

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "init()"

-					quid       	"3DFE01C30164"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"2.1.5"

-					ordinal    	7

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "CoyoteAdapter"

-			quid       	"3DFDFFA00226"

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "Http11Protocol"

-			quid       	"3DFE016601A6"

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "JkCoyoteAdapter"

-			quid       	"3DFE01AD01A8"

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)))

-	    (object Mechanism @84

-		logical_models 	(list unit_reference_list

-		    (object Object "Bootstrap"

-			quid       	"3DFE027700F5"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE02830373"

-				supplier   	"Catalina"

-				quidu      	"3DFE027D0067"

-				messages   	(list Messages

-				    (object Message "start()"

-					quid       	"3DFE02830374"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"1"

-					ordinal    	0

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "Catalina"

-			quid       	"3DFE027D0067"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE02BA0187"

-				supplier   	"StandardServer"

-				quidu      	"3DFE02B30015"

-				messages   	(list Messages

-				    (object Message "start()"

-					quid       	"3DFE02BA0188"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"1.1"

-					ordinal    	1

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "StandardServer"

-			quid       	"3DFE02B30015"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE02D3006B"

-				supplier   	"StandardServer"

-				quidu      	"3DFE02B30015"

-				messages   	(list Messages

-				    (object Message "fireLifecycleEvent(BEFORE_START_EVENT)"

-					quid       	"3DFE02D3006C"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"1.1.1"

-					ordinal    	2

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "fireLifecycleEvent(START_EVENT)"

-					quid       	"3DFE02DF02DF"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"1.1.2"

-					ordinal    	3

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFE030C02B2"

-				supplier   	"StandardService"

-				quidu      	"3DFE030400E3"

-				messages   	(list Messages

-				    (object Message "start()"

-					quid       	"3DFE030C02B3"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"1.1.3"

-					ordinal    	4

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "StandardService"

-			quid       	"3DFE030400E3"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE031D0021"

-				supplier   	"StandardService"

-				quidu      	"3DFE030400E3"

-				messages   	(list Messages

-				    (object Message "fireLifecycleEvent(BEFORE_START_EVENT)"

-					quid       	"3DFE031D0022"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"1.1.3.1"

-					ordinal    	5

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "fireLifecycleEvent(START_EVENT)"

-					quid       	"3DFE0330019B"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"1.1.3.2"

-					ordinal    	6

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFE03700189"

-				supplier   	"StandardEngine"

-				quidu      	"3DFE034700C2"

-				messages   	(list Messages

-				    (object Message "start()"

-					quid       	"3DFE0370018A"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"1.1.3.3"

-					ordinal    	7

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "StandardEngine"

-			quid       	"3DFE034700C2"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE03750050"

-				supplier   	"StandardEngine"

-				quidu      	"3DFE034700C2"

-				messages   	(list Messages

-				    (object Message "fireLifecycleEvent(BEFORE_START_EVENT)"

-					quid       	"3DFE03750051"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"2"

-					ordinal    	8

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "addDefaultMapper()"

-					quid       	"3DFE0389001C"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3"

-					ordinal    	9

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "logger.start()"

-					quid       	"3DFE03980281"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"4"

-					ordinal    	10

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "realm.start()"

-					quid       	"3DFE03A80107"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"5"

-					ordinal    	11

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "findMappers()"

-					quid       	"3DFE03BD000D"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"6"

-					ordinal    	12

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "findChildren()"

-					quid       	"3DFE03E000A4"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"7"

-					ordinal    	13

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFE03FB0279"

-				supplier   	"StandardHost"

-				quidu      	"3DFE03F2035D"

-				messages   	(list Messages

-				    (object Message "start()"

-					quid       	"3DFE03FB027A"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"8"

-					ordinal    	14

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "StandardHost"

-			quid       	"3DFE03F2035D"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE043B02AD"

-				supplier   	"StandardHost"

-				quidu      	"3DFE03F2035D"

-				messages   	(list Messages

-				    (object Message "fireLifecycleEvent(BEFORE_START_EVENT)"

-					quid       	"3DFE043B02AE"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"8.1"

-					ordinal    	15

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "addDefaultMapper()"

-					quid       	"3DFE045C021F"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"8.2"

-					ordinal    	16

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "logger.start()"

-					quid       	"3DFE049B000C"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"8.3"

-					ordinal    	17

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "findMapper()"

-					quid       	"3DFE04A303BB"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"8.4"

-					ordinal    	18

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "findChildren()"

-					quid       	"3DFE04A90342"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"8.5"

-					ordinal    	19

-					Operation  	"findChildren"

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFE048E00B8"

-				supplier   	"StandardPipeline"

-				quidu      	"3DFE047D006D"

-				messages   	(list Messages

-				    (object Message "start()"

-					quid       	"3DFE048E00B9"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"8.6"

-					ordinal    	20

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "StandardPipeline"

-			quid       	"3DFE047D006D"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE05780137"

-				supplier   	"StandardPipeline"

-				quidu      	"3DFE047D006D"

-				messages   	(list Messages

-				    (object Message "fireLifecycleEvent(BEFORE_START_EVENT)"

-					quid       	"3DFE05780138"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"8.6.1"

-					ordinal    	21

-					Operation  	"fireLifecycleEvent(AFTER_START_EVENT)"

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "fireLifecycleEvent(START_EVENT)"

-					quid       	"3DFE05A80398"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"8.6.2"

-					ordinal    	22

-					Operation  	"fireLifecycleEvent(BEFORE_START_EVENT)"

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "fireLifecycleEvent(AFTER_EVENT)"

-					quid       	"3DFE05BA0196"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"8.6.3"

-					ordinal    	23

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)))

-	    (object Mechanism @85

-		logical_models 	(list unit_reference_list

-		    (object Object "StandardHost"

-			quid       	"3DFE0538017B"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE066C0340"

-				supplier   	"StandardHost"

-				quidu      	"3DFE0538017B"

-				messages   	(list Messages

-				    (object Message "fireLifecycleEvent(START_EVENT)"

-					quid       	"3DFE066C0341"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"1"

-					ordinal    	0

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFE06D20293"

-				supplier   	"HostConfig"

-				quidu      	"3DFE06A60131"

-				messages   	(list Messages

-				    (object Message "interested[i].lifecycleEvent()"

-					quid       	"3DFE06D20294"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"2"

-					ordinal    	1

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "install()"

-					quid       	"3DFE078B03BB"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"ToClientFromSupplier"

-					sequence   	"2.6"

-					ordinal    	7

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "install()"

-					quid       	"3DFE132D0309"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"ToClientFromSupplier"

-					sequence   	"5"

-					ordinal    	13

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFE07B100BD"

-				supplier   	"StandardHostDeployer"

-				quidu      	"3DFE079A0055"

-				messages   	(list Messages

-				    (object Message "install()"

-					quid       	"3DFE07B100BE"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3"

-					ordinal    	8

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "install() // same as above"

-					quid       	"3DFE133A036C"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"6"

-					ordinal    	17

-					Operation  	"install()"

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "HostConfig"

-			quid       	"3DFE06A60131"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE06E9028C"

-				supplier   	"HostConfig"

-				quidu      	"3DFE06A60131"

-				messages   	(list Messages

-				    (object Message "setDeployXML()"

-					quid       	"3DFE06E9028D"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"2.1"

-					ordinal    	2

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "setLiveDeploy()"

-					quid       	"3DFE06F300FF"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"2.2"

-					ordinal    	3

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "setUnpacksWar()"

-					quid       	"3DFE06FB00D9"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"2.3"

-					ordinal    	4

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "setXMLValidation()"

-					quid       	"3DFE070C0015"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"2.4"

-					ordinal    	5

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "deployDescriptors()"

-					quid       	"3DFE073B0031"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"2.5"

-					ordinal    	6

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "deployApps()"

-					quid       	"3DFE131F0327"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"4"

-					ordinal    	12

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "StandardHostDeployer"

-			quid       	"3DFE079A0055"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE07D200EC"

-				supplier   	"Digester"

-				quidu      	"3DFE07C9034C"

-				messages   	(list Messages

-				    (object Message "create()"

-					quid       	"3DFE07D200ED"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3.1"

-					ordinal    	9

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "parse()"

-					quid       	"3DFE07D603D7"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3.6"

-					ordinal    	16

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "add(ContextRuleSet)"

-					quid       	"3DFE08FA003D"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3.3"

-					ordinal    	11

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFE087D01E2"

-				supplier   	"StandardHostDeployer"

-				quidu      	"3DFE079A0055")

-			    (object Link

-				quid       	"3DFE08DA029A"

-				supplier   	"ContextRuleSet"

-				quidu      	"3DFE0834016F"

-				messages   	(list Messages

-				    (object Message "new()"

-					quid       	"3DFE08DA029B"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3.2"

-					ordinal    	10

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "add(NamingRuleSet())"

-					quid       	"3DFE0907015F"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3.5"

-					ordinal    	15

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFE08E00090"

-				supplier   	"NamingRuleSet"

-				quidu      	"3DFE08D00173"

-				messages   	(list Messages

-				    (object Message "new()"

-					quid       	"3DFE08E00091"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3.4"

-					ordinal    	14

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "Digester"

-			quid       	"3DFE07C9034C"

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "ContextRuleSet"

-			quid       	"3DFE0834016F"

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "NamingRuleSet"

-			quid       	"3DFE08D00173"

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)))

-	    (object Mechanism @86

-		logical_models 	(list unit_reference_list

-		    (object Object "Digester"

-			quid       	"3DFE095A0371"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE0E7801DA"

-				supplier   	"Digester"

-				quidu      	"3DFE095A0371"

-				messages   	(list Messages

-				    (object Message "parse"

-					quid       	"3DFE0E7801DB"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"1"

-					ordinal    	0

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "startElement()"

-					quid       	"3DFE0F2F03D2"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"2"

-					ordinal    	1

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFE0F400213"

-				supplier   	"Rule"

-				quidu      	"3DFE0E7400D0"

-				messages   	(list Messages

-				    (object Message "begin()"

-					quid       	"3DFE0F400214"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3"

-					ordinal    	2

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "Rule"

-			quid       	"3DFE0E7400D0"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE0FD30265"

-				supplier   	"StandardContext"

-				quidu      	"3DFE0FC502A1"

-				messages   	(list Messages

-				    (object Message "newInstance()"

-					quid       	"3DFE0FD30266"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3.1"

-					ordinal    	3

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFE102002E8"

-				supplier   	"SetPropertiesRule"

-				quidu      	"3DFE100303A4"

-				messages   	(list Messages

-				    (object Message "begin()"

-					quid       	"3DFE102002E9"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3.2"

-					ordinal    	6

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFE127F0024"

-				supplier   	"Rule"

-				quidu      	"3DFE0E7400D0")

-			    (object Link

-				quid       	"3DFE128501C7"

-				supplier   	"SetNextRule"

-				quidu      	"3DFE12690267"

-				messages   	(list Messages

-				    (object Message "end()"

-					quid       	"3DFE128501C8"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3.3"

-					ordinal    	8

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "StandardContext"

-			quid       	"3DFE0FC502A1"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE114A0192"

-				supplier   	"StandardPipeline"

-				quidu      	"3DFE112F003F"

-				messages   	(list Messages

-				    (object Message "setBasic(StandardContextValve)"

-					quid       	"3DFE114A0193"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3.1.2"

-					ordinal    	5

-					Operation  	"setBasic"

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFE115E001E"

-				supplier   	"StandardContextValve"

-				quidu      	"3DFE110D0375"

-				messages   	(list Messages

-				    (object Message "new()"

-					quid       	"3DFE115E001F"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3.1.1"

-					ordinal    	4

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "SetPropertiesRule"

-			quid       	"3DFE100303A4"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE11D50390"

-				supplier   	"StandardContext"

-				quidu      	"3DFE0FC502A1"

-				messages   	(list Messages

-				    (object Message "//Using BeanUtil, set the object properties (from ex: admin.xml)"

-					quid       	"3DFE11D50391"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3.2.1"

-					ordinal    	7

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "StandardContextValve"

-			quid       	"3DFE110D0375"

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "StandardPipeline"

-			quid       	"3DFE112F003F"

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "SetNextRule"

-			quid       	"3DFE12690267"

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)))

-	    (object Mechanism @87

-		logical_models 	(list unit_reference_list

-		    (object Object "StandardContext"

-			quid       	"3DFE196D00D9"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE200603BD"

-				supplier   	"WebappLoader"

-				quidu      	"3DFE1FFA0347"

-				messages   	(list Messages

-				    (object Message "new"

-					quid       	"3DFE200603BE"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3.1.1.1"

-					ordinal    	5

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFE200C0299"

-				supplier   	"StandardContext"

-				quidu      	"3DFE196D00D9"

-				messages   	(list Messages

-				    (object Message "setLoader"

-					quid       	"3DFE200C029A"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3.1.1.2"

-					ordinal    	6

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "setManager"

-					quid       	"3DFE2032001C"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3.1.1.4"

-					ordinal    	8

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "fireLifecycleEvent(START_EVENT)"

-					quid       	"3DFE205B01A2"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3.1.1.5"

-					ordinal    	9

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFE202C024F"

-				supplier   	"StandardManager"

-				quidu      	"3DFE201F0105"

-				messages   	(list Messages

-				    (object Message "new"

-					quid       	"3DFE202C0250"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3.1.1.3"

-					ordinal    	7

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "start()"

-					quid       	"3DFE20B600E5"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3.1.1.7"

-					ordinal    	12

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFE20960002"

-				supplier   	"ContextConfig"

-				quidu      	"3DFE2087028C"

-				messages   	(list Messages

-				    (object Message " // Notify interested LifecycleListeners"

-					quid       	"3DFE20960003"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3.1.1.6"

-					ordinal    	10

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "StandardHostDeployer"

-			quid       	"3DFE1D8A02DC"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE1FAF0014"

-				supplier   	"StandardHost"

-				quidu      	"3DFE1DF20141"

-				messages   	(list Messages

-				    (object Message "addChild"

-					quid       	"3DFE1FB60277"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3.1"

-					ordinal    	3

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "StandardHost"

-			quid       	"3DFE1DF20141"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE1FC40227"

-				supplier   	"StandardContext"

-				quidu      	"3DFE196D00D9"

-				messages   	(list Messages

-				    (object Message "start()"

-					quid       	"3DFE1FC40228"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3.1.1"

-					ordinal    	4

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "WebappLoader"

-			quid       	"3DFE1FFA0347"

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "StandardManager"

-			quid       	"3DFE201F0105"

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "ContextConfig"

-			quid       	"3DFE2087028C"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE20CF018B"

-				supplier   	"ContextConfig"

-				quidu      	"3DFE2087028C"

-				messages   	(list Messages

-				    (object Message "start()"

-					quid       	"3DFE20CF018C"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3.1.1.6.1"

-					ordinal    	11

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "defaultConfig()"

-					quid       	"3DFE20E303E2"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3.1.1.6.2"

-					ordinal    	13

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "applicationConfig()"

-					quid       	"3DFE211D01A1"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3.1.1.6.3"

-					ordinal    	14

-					Operation  	"applicationConfig"

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFE21B60287"

-				supplier   	"Digester"

-				quidu      	"3DFE13960364"

-				messages   	(list Messages

-				    (object Message "create()"

-					quid       	"3DFE21B60288"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3.1.1.6.3.1"

-					ordinal    	15

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "createWarpper() // Invoked by a WebWrapperRule (not Directly by the Digester)"

-					quid       	"3DFE228B03BA"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"ToClientFromSupplier"

-					sequence   	"3.1.1.6.3.1.2"

-					ordinal    	17

-					Operation  	"createWarpper() // Invoked by a Rule (not Directly by the Digester)"

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFE22560061"

-				supplier   	"StandardWrapper"

-				quidu      	"3DFE220C0122"

-				messages   	(list Messages

-				    (object Message "new"

-					quid       	"3DFE229A0004"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3.1.1.6.3.1.2.1"

-					ordinal    	18

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "addInstanceListener()"

-					quid       	"3DFE22A700C1"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3.1.1.6.3.2"

-					ordinal    	19

-					Operation  	"addInstanceListener"

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "addLifecycleListener()"

-					quid       	"3DFE22C701CC"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3.1.1.6.3.3"

-					ordinal    	20

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "addContainerListener()"

-					quid       	"3DFE22E80364"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3.1.1.6.3.4"

-					ordinal    	21

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	TRUE

-			multi      	FALSE)

-		    (object Object "Digester"

-			quid       	"3DFE13960364"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE19AE0064"

-				supplier   	"Digester"

-				quidu      	"3DFE13960364"

-				messages   	(list Messages

-				    (object Message "parse"

-					quid       	"3DFE19AE0065"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"1"

-					ordinal    	0

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "startElement()"

-					quid       	"3DFE19B102E9"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"2"

-					ordinal    	1

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "// Process web.xml * tld.xml"

-					quid       	"3DFE21BE021B"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3.1.1.6.3.1.1"

-					ordinal    	16

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFE1DFB0021"

-				supplier   	"StandardHostDeployer"

-				quidu      	"3DFE1D8A02DC"

-				messages   	(list Messages

-				    (object Message "addChild"

-					quid       	"3DFE1DFB0022"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3"

-					ordinal    	2

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFE22190225"

-				supplier   	"StandardWrapper"

-				quidu      	"3DFE220C0122"))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "StandardWrapper"

-			quid       	"3DFE220C0122"

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)))

-	    (object Mechanism @88

-		logical_models 	(list unit_reference_list

-		    (object Object "ThreadPool"

-			quid       	"3DFE402B02C5"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE40E701AD"

-				supplier   	"TcpWorkerThread"

-				quidu      	"3DFE403200F8"

-				messages   	(list Messages

-				    (object Message "runIt()"

-					quid       	"3DFE40E701AE"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"1"

-					ordinal    	0

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "TcpWorkerThread"

-			quid       	"3DFE403200F8"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE40FC010D"

-				supplier   	"Http11Protocol"

-				quidu      	"3DFE40750177"

-				messages   	(list Messages

-				    (object Message "processConnection"

-					quid       	"3DFE40FC010E"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"1.1"

-					ordinal    	1

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "Http11Protocol"

-			quid       	"3DFE40750177"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE4111029E"

-				supplier   	"Http11Protocol"

-				quidu      	"3DFE40750177"

-				messages   	(list Messages

-				    (object Message "process()"

-					quid       	"3DFE4111029F"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"1.1.1"

-					ordinal    	2

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "parseHeaders()"

-					quid       	"3DFE415C0151"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"2"

-					ordinal    	3

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "prepareRequest()"

-					quid       	"3DFE41A60161"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3"

-					ordinal    	4

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFE41D60106"

-				supplier   	"CoyoteAdapter"

-				quidu      	"3DFE410600DF"

-				messages   	(list Messages

-				    (object Message "service()"

-					quid       	"3DFE41D60107"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"4"

-					ordinal    	5

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "CoyoteAdapter"

-			quid       	"3DFE410600DF"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE422C01F0"

-				supplier   	"CoyoteAdapter"

-				quidu      	"3DFE410600DF"

-				messages   	(list Messages

-				    (object Message "postParseRequest()"

-					quid       	"3DFE422C01F1"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"5"

-					ordinal    	6

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFE42800237"

-				supplier   	"StandardEngine"

-				quidu      	"3DFE424B0349"

-				messages   	(list Messages

-				    (object Message "invoke()"

-					quid       	"3DFE42800238"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"6"

-					ordinal    	7

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "StandardEngine"

-			quid       	"3DFE424B0349"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE429A002C"

-				supplier   	"StandardPipeline"

-				quidu      	"3DFE42900045"

-				messages   	(list Messages

-				    (object Message "invoke()"

-					quid       	"3DFE429A002D"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"6.1"

-					ordinal    	8

-					Operation  	"invoke"

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "StandardPipeline"

-			quid       	"3DFE42900045"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE42CE022F"

-				supplier   	"StandardValveContext"

-				quidu      	"3DFE42C002B1"

-				messages   	(list Messages

-				    (object Message "invoke()"

-					quid       	"3DFE42CE0230"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"6.1.1"

-					ordinal    	9

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "StandardValveContext"

-			quid       	"3DFE42C002B1"

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)))

-	    (object Mechanism @89

-		logical_models 	(list unit_reference_list

-		    (object Object "StandardContextValve"

-			quid       	"3DFE4307001E"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE434C019A"

-				supplier   	"StandardEngineValve"

-				quidu      	"3DFE432801F3"

-				messages   	(list Messages

-				    (object Message "invoke()"

-					quid       	"3DFE434C019B"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"1"

-					ordinal    	0

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFE43C203A3"

-				supplier   	"ErrorReportValve"

-				quidu      	"3DFE438C028D"

-				messages   	(list Messages

-				    (object Message "invoke()"

-					quid       	"3DFE43C203A4"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3"

-					ordinal    	4

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "invokeNext()"

-					quid       	"3DFE46330293"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"ToClientFromSupplier"

-					sequence   	"3.2"

-					ordinal    	6

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFE46E70025"

-				supplier   	"ErrorDispatcherValve"

-				quidu      	"3DFE451F01EC"

-				messages   	(list Messages

-				    (object Message "invoke()"

-					quid       	"3DFE46E70026"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"4"

-					ordinal    	7

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "invokeNext"

-					quid       	"3DFE475D03A0"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"ToClientFromSupplier"

-					sequence   	"4.1"

-					ordinal    	8

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFE476503C9"

-				supplier   	"StandardHostValve"

-				quidu      	"3DFE47310130"

-				messages   	(list Messages

-				    (object Message "invoke()"

-					quid       	"3DFE476503CA"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"5"

-					ordinal    	9

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "StandardEngineValve"

-			quid       	"3DFE432801F3"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE436C009C"

-				supplier   	"StandardHost"

-				quidu      	"3DFE436503BD"

-				messages   	(list Messages

-				    (object Message "map()"

-					quid       	"3DFE436C009D"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"1.1"

-					ordinal    	1

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "invoke()"

-					quid       	"3DFE43830063"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"1.2"

-					ordinal    	2

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFE437F0143"

-				supplier   	"StandardEngineValve"

-				quidu      	"3DFE432801F3"))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "StandardHost"

-			quid       	"3DFE436503BD"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE43B903BE"

-				supplier   	"StandardContextValve"

-				quidu      	"3DFE4307001E"

-				messages   	(list Messages

-				    (object Message "invoke()"

-					quid       	"3DFE43B903BF"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"2"

-					ordinal    	3

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "ErrorReportValve"

-			quid       	"3DFE438C028D"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE442501B0"

-				supplier   	"ErrorReportValve"

-				quidu      	"3DFE438C028D"

-				messages   	(list Messages

-				    (object Message "report()"

-					quid       	"3DFE442501B1"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"3.1"

-					ordinal    	5

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFE452A00F7"

-				supplier   	"ErrorDispatcherValve"

-				quidu      	"3DFE451F01EC"))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "ErrorDispatcherValve"

-			quid       	"3DFE451F01EC"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE47500148"

-				supplier   	"StandardHostValve"

-				quidu      	"3DFE47310130")

-			    (object Link

-				quid       	"3DFE47580335"

-				supplier   	"ErrorDispatcherValve"

-				quidu      	"3DFE451F01EC"))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "StandardHostValve"

-			quid       	"3DFE47310130"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE47CD0166"

-				supplier   	"StandardHostValve"

-				quidu      	"3DFE47310130"

-				messages   	(list Messages

-				    (object Message "map() //Context"

-					quid       	"3DFE47CD0167"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"5.1"

-					ordinal    	10

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFE47D500B3"

-				supplier   	"StandardContext"

-				quidu      	"3DFE47C100F1"

-				messages   	(list Messages

-				    (object Message "invoke()"

-					quid       	"3DFE47D500B4"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"5.2"

-					ordinal    	11

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "StandardContext"

-			quid       	"3DFE47C100F1"

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)))

-	    (object Mechanism @90

-		logical_models 	(list unit_reference_list

-		    (object Object "StandardContext"

-			quid       	"3DFE48B001D1"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE48BE0267"

-				supplier   	"StandardPipeline"

-				quidu      	"3DFE48B80088"

-				messages   	(list Messages

-				    (object Message "invoke()"

-					quid       	"3DFE48BE0268"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"1"

-					ordinal    	0

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "StandardPipeline"

-			quid       	"3DFE48B80088"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE48EA0039"

-				supplier   	"StandardValveContext"

-				quidu      	"3DFE48D000DC"

-				messages   	(list Messages

-				    (object Message "invoke()"

-					quid       	"3DFE48EA003A"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"1.1"

-					ordinal    	1

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "invoke()"

-					quid       	"3DFE4976015D"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"1.2"

-					ordinal    	6

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "StandardValveContext"

-			quid       	"3DFE48D000DC"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE491102D5"

-				supplier   	"StandardContextValve"

-				quidu      	"3DFE490303A7"

-				messages   	(list Messages

-				    (object Message "invoke()"

-					quid       	"3DFE491102D6"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"1.1.1"

-					ordinal    	2

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFE4993023B"

-				supplier   	"StandardWrapperValve"

-				quidu      	"3DFE49890056"

-				messages   	(list Messages

-				    (object Message "invoke()"

-					quid       	"3DFE4993023C"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"1.2.1"

-					ordinal    	7

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "StandardContextValve"

-			quid       	"3DFE490303A7"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE492F033C"

-				supplier   	"StandardContextValve"

-				quidu      	"3DFE490303A7"

-				messages   	(list Messages

-				    (object Message "map //return Wrapper"

-					quid       	"3DFE492F033D"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"1.1.1.1"

-					ordinal    	3

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFE494A0150"

-				supplier   	"StandardWrapper"

-				quidu      	"3DFE49370351"

-				messages   	(list Messages

-				    (object Message "invoke()"

-					quid       	"3DFE494A0151"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"1.1.1.2"

-					ordinal    	4

-					Operation  	"invoke"

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "StandardWrapper"

-			quid       	"3DFE49370351"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE495F0287"

-				supplier   	"StandardPipeline"

-				quidu      	"3DFE48B80088"

-				messages   	(list Messages

-				    (object Message "invoke()"

-					quid       	"3DFE495F0288"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"1.1.1.2.1"

-					ordinal    	5

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "StandardWrapperValve"

-			quid       	"3DFE49890056"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE49DB018A"

-				supplier   	"StandardWrapperValve"

-				quidu      	"3DFE49890056")

-			    (object Link

-				quid       	"3DFE49EC004E"

-				supplier   	"StandardWrapper"

-				quidu      	"3DFE49370351"

-				messages   	(list Messages

-				    (object Message "allocate()"

-					quid       	"3DFE49EC004F"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"1.2.1.1"

-					ordinal    	8

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "return servlet"

-					quid       	"3DFE4A200067"

-					frequency  	"Aperiodic"

-					synchronization 	"Return"

-					dir        	"ToClientFromSupplier"

-					sequence   	"1.2.1.1.1"

-					ordinal    	9

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFE4A29027D"

-				supplier   	"ApplicationFilterChain"

-				quidu      	"3DFE4A1500B2"

-				messages   	(list Messages

-				    (object Message "createFilterChain()"

-					quid       	"3DFE4A29027E"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"1.2.1.1.1.1"

-					ordinal    	10

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "doFilter()"

-					quid       	"3DFE4A490283"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"1.2.1.2"

-					ordinal    	11

-					Operation  	"doFilter"

-					quidu      	"000000000000"

-					creation   	FALSE)

-				    (object Message "return"

-					quid       	"3DFE4CB4025B"

-					frequency  	"Aperiodic"

-					synchronization 	"Return"

-					dir        	"ToClientFromSupplier"

-					sequence   	"1.2.1.2.3"

-					ordinal    	14

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "ApplicationFilterChain"

-			quid       	"3DFE4A1500B2"

-			collaborators 	(list link_list

-			    (object Link

-				quid       	"3DFE4C2701C2"

-				supplier   	"ApplicationFilterChain"

-				quidu      	"3DFE4A1500B2"

-				messages   	(list Messages

-				    (object Message "internalDoFilter()"

-					quid       	"3DFE4C2701C3"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"1.2.1.2.1"

-					ordinal    	12

-					quidu      	"000000000000"

-					creation   	FALSE)))

-			    (object Link

-				quid       	"3DFE4CA502BE"

-				supplier   	"$UNNAMED$0"

-				quidu      	"3DFE4BAE0056"

-				messages   	(list Messages

-				    (object Message "service()"

-					quid       	"3DFE4CA502BF"

-					frequency  	"Aperiodic"

-					synchronization 	"Simple"

-					dir        	"FromClientToSupplier"

-					sequence   	"1.2.1.2.2"

-					ordinal    	13

-					quidu      	"000000000000"

-					creation   	FALSE))))

-			persistence 	"Transient"

-			creationObj 	FALSE

-			multi      	FALSE)

-		    (object Object "$UNNAMED$0"

-			quid       	"3DFE4BAE0056"

-			stereotype 	"Servlet"

-			persistence 	"Transient"

-			creationObj 	TRUE

-			multi      	FALSE))))

-	logical_presentations 	(list unit_reference_list

-	    (object ClassDiagram "Main"

-		quid       	"3DFDF6D2021B"

-		title      	"Main"

-		zoom       	100

-		max_height 	28350

-		max_width  	21600

-		origin_x   	0

-		origin_y   	0

-		items      	(list diagram_item_list))

-	    (object ClassDiagram "high level packaging"

-		quid       	"3E42DE75004B"

-		title      	"high level packaging"

-		zoom       	100

-		max_height 	28350

-		max_width  	21600

-		origin_x   	0

-		origin_y   	0

-		items      	(list diagram_item_list

-		    (object CategoryView "Logical View::org.apache.catalina" @91

-			location   	(1024, 752)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@91

-			    location   	(780, 668)

-			    fill_color 	13434879

-			    nlines     	2

-			    max_width  	488

-			    justify    	0

-			    label      	"org.apache.catalina")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3E42DE8D0082"

-			width      	500

-			height     	181)

-		    (object CategoryView "Logical View::org.apache.coyote" @92

-			location   	(512, 1184)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@92

-			    location   	(237, 1090)

-			    fill_color 	13434879

-			    nlines     	2

-			    max_width  	550

-			    justify    	0

-			    label      	"org.apache.coyote")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3E42DE9F0132"

-			width      	563

-			height     	200)

-		    (object CategoryView "Logical View::org.apache.tomcat.util" @93

-			location   	(1920, 1104)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@93

-			    location   	(1670, 1020)

-			    fill_color 	13434879

-			    nlines     	2

-			    max_width  	500

-			    justify    	0

-			    label      	"org.apache.tomcat.util")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3E42DEDF01F2"

-			width      	512

-			height     	181)

-		    (object ImportView "" @94

-			stereotype 	TRUE

-			line_color 	3342489

-			quidu      	"3E42DEF601EB"

-			client     	@91

-			supplier   	@93

-			line_style 	0)

-		    (object ImportView "" @95

-			stereotype 	TRUE

-			line_color 	3342489

-			quidu      	"3E42DEFC00B3"

-			client     	@92

-			supplier   	@93

-			line_style 	0)

-		    (object CategoryView "Logical View::org.apache.jasper" @96

-			location   	(1728, 624)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@96

-			    location   	(1437, 540)

-			    fill_color 	13434879

-			    nlines     	2

-			    max_width  	582

-			    justify    	0

-			    label      	"org.apache.jasper")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3E42DEFF0270"

-			width      	594

-			height     	181)

-		    (object ImportView "" @97

-			stereotype 	TRUE

-			line_color 	3342489

-			quidu      	"3E42DF700060"

-			client     	@91

-			supplier   	@92

-			line_style 	0)

-		    (object NoteView @98

-			location   	(1200, 208)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@98

-			    location   	(847, 143)

-			    fill_color 	13434879

-			    nlines     	2

-			    max_width  	671

-			    label      	"High Level package dependencies")

-			line_color 	3342489

-			fill_color 	13434879

-			width      	731

-			height     	143)

-		    (object CategoryView "Logical View::org.apache.naming" @99

-			location   	(352, 304)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@99

-			    location   	(83, 220)

-			    fill_color 	13434879

-			    nlines     	2

-			    max_width  	538

-			    justify    	0

-			    label      	"org.apache.naming")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3E43D1580339"

-			width      	550

-			height     	181)

-		    (object ImportView "" @100

-			stereotype 	TRUE

-			line_color 	3342489

-			quidu      	"3E43D165039C"

-			client     	@91

-			supplier   	@99

-			line_style 	0)))

-	    (object InteractionDiagram "1. catalina_load"

-		mechanism_ref 	@82

-		quid       	"3DFDF8EE0267"

-		title      	"1. catalina_load"

-		zoom       	100

-		max_height 	28350

-		max_width  	21600

-		origin_x   	0

-		origin_y   	519

-		items      	(list diagram_item_list

-		    (object InterObjView "Bootstrap" @101

-			location   	(224, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@101

-			    location   	(224, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"Bootstrap")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFDF8FD0345"

-			width      	300

-			height     	1972

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @102

-			    location   	(224, 368)

-			    line_color 	3342489

-			    InterObjView 	@101

-			    height     	1738

-			    y_coord    	1678

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @103

-			    location   	(224, 368)

-			    line_color 	3342489

-			    InterObjView 	@101

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE))

-		    (object InterObjView "Digester" @104

-			location   	(896, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@104

-			    location   	(896, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"Digester")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFDFAF201A1"

-			width      	300

-			height     	1972

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @105

-			    location   	(896, 1232)

-			    line_color 	3342489

-			    InterObjView 	@104

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @106

-			    location   	(896, 1312)

-			    line_color 	3342489

-			    InterObjView 	@104

-			    height     	264

-			    y_coord    	204

-			    Nested     	FALSE))

-		    (object InterObjView "ServerLifecycleListener" @107

-			location   	(1232, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@107

-			    location   	(1232, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"ServerLifecycleListener")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFDFB4B0217"

-			width      	300

-			height     	1972

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @108

-			    location   	(1232, 1328)

-			    line_color 	3342489

-			    InterObjView 	@107

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE))

-		    (object InterObjView "GlobalResourcesLifecycleListener" @109

-			location   	(1568, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@109

-			    location   	(1568, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	322

-			    justify    	0

-			    label      	"GlobalResourcesLifecycleListener")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFDFB7A02AB"

-			width      	340

-			height     	1972

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @110

-			    location   	(1568, 1456)

-			    line_color 	3342489

-			    InterObjView 	@109

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE))

-		    (object InterObjView "SecurityConfig" @111

-			location   	(1920, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@111

-			    location   	(1920, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"SecurityConfig")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFDFBD802BA"

-			width      	300

-			height     	1972

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @112

-			    location   	(1920, 1600)

-			    line_color 	3342489

-			    InterObjView 	@111

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @113

-			    location   	(1920, 1680)

-			    line_color 	3342489

-			    InterObjView 	@111

-			    height     	146

-			    y_coord    	86

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @114

-			    location   	(1920, 1760)

-			    line_color 	3342489

-			    InterObjView 	@111

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE))

-		    (object SelfMessView "" @115

-			location   	(16, 368)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @116

-			    Parent_View 	@115

-			    location   	(315, 324)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFDF9210009"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	340

-			    justify    	0

-			    label      	"initClassLoaders()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@101

-			supplier   	@101

-			Focus_Src  	@102

-			Focus_Entry 	@103

-			origin     	(240, 368)

-			terminus   	(390, 368)

-			ordinal    	0)

-		    (object NoteView @117

-			location   	(1152, 1072)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@117

-			    location   	(1014, 1012)

-			    fill_color 	13434879

-			    nlines     	2

-			    max_width  	240

-			    label      	"parse server.xml")

-			line_color 	3342489

-			fill_color 	13434879

-			width      	300

-			height     	132)

-		    (object NoteView @118

-			location   	(1376, 80)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@118

-			    location   	(1238, 20)

-			    fill_color 	13434879

-			    nlines     	2

-			    max_width  	240

-			    label      	"MBeans")

-			line_color 	3342489

-			fill_color 	13434879

-			width      	300

-			height     	132)

-		    (object AttachView "" @119

-			stereotype 	TRUE

-			line_color 	3342489

-			client     	@118

-			supplier   	@107

-			line_style 	0)

-		    (object AttachView "" @120

-			stereotype 	TRUE

-			line_color 	3342489

-			client     	@109

-			supplier   	@118

-			line_style 	0)

-		    (object NoteView @121

-			location   	(2160, 2176)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@121

-			    location   	(1947, 2113)

-			    fill_color 	13434879

-			    nlines     	2

-			    max_width  	390

-			    label      	"#1Catalina.load()")

-			line_color 	3342489

-			fill_color 	13434879

-			width      	450

-			height     	138)

-		    (object InterObjView "Catalina" @122

-			location   	(560, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@122

-			    location   	(560, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"Catalina")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFDF90A0330"

-			width      	300

-			height     	1972

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @123

-			    location   	(560, 464)

-			    line_color 	3342489

-			    InterObjView 	@122

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @124

-			    location   	(560, 608)

-			    line_color 	3342489

-			    InterObjView 	@122

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @125

-			    location   	(560, 720)

-			    line_color 	3342489

-			    InterObjView 	@122

-			    height     	1326

-			    y_coord    	1266

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @126

-			    location   	(560, 896)

-			    line_color 	3342489

-			    InterObjView 	@122

-			    height     	194

-			    y_coord    	134

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @127

-			    location   	(560, 896)

-			    InterObjView 	@122

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @128

-			    location   	(560, 1024)

-			    line_color 	3342489

-			    InterObjView 	@122

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @129

-			    location   	(560, 1024)

-			    InterObjView 	@122

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @130

-			    location   	(560, 1152)

-			    line_color 	3342489

-			    InterObjView 	@122

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @131

-			    location   	(560, 1152)

-			    InterObjView 	@122

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE))

-		    (object SelfMessView "" @132

-			location   	(16, 896)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @133

-			    Parent_View 	@132

-			    location   	(651, 852)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFDFA8001DA"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	160

-			    justify    	0

-			    label      	"initDirs()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@122

-			supplier   	@122

-			Focus_Src  	@127

-			Focus_Entry 	@126

-			origin     	(576, 896)

-			terminus   	(726, 896)

-			ordinal    	4)

-		    (object SelfMessView "" @134

-			location   	(16, 1024)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @135

-			    Parent_View 	@134

-			    location   	(701, 981)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFDFA8B0347"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	228

-			    justify    	0

-			    label      	"initNaming()"

-			    pctDist    	0.840000

-			    height     	44

-			    orientation 	0)

-			line_color 	3342489

-			client     	@122

-			supplier   	@122

-			Focus_Src  	@129

-			Focus_Entry 	@128

-			origin     	(576, 1024)

-			terminus   	(726, 1024)

-			ordinal    	5)

-		    (object SelfMessView "" @136

-			location   	(16, 1152)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @137

-			    Parent_View 	@136

-			    location   	(686, 1109)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFDFAAD01AC"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	180

-			    justify    	0

-			    label      	"initialize()"

-			    pctDist    	0.733333

-			    height     	44

-			    orientation 	0)

-			line_color 	3342489

-			client     	@122

-			supplier   	@122

-			Focus_Src  	@131

-			Focus_Entry 	@130

-			origin     	(576, 1152)

-			terminus   	(726, 1152)

-			ordinal    	6)

-		    (object InterMessView "" @138

-			location   	(16, 464)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @139

-			    Parent_View 	@138

-			    location   	(389, 437)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFDF91A010D"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	265

-			    justify    	0

-			    label      	"newInstance()"

-			    pctDist    	0.495082

-			    height     	28

-			    orientation 	0)

-			line_color 	3342489

-			client     	@101

-			supplier   	@122

-			Focus_Src  	@102

-			Focus_Entry 	@123

-			origin     	(239, 464)

-			terminus   	(544, 464)

-			ordinal    	1)

-		    (object InterMessView "" @140

-			location   	(16, 608)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @141

-			    Parent_View 	@140

-			    location   	(456, 565)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFDF97900C2"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	445

-			    justify    	0

-			    label      	"setParentClassLoader()"

-			    pctDist    	0.711475

-			    height     	44

-			    orientation 	0)

-			line_color 	3342489

-			client     	@101

-			supplier   	@122

-			Focus_Src  	@102

-			Focus_Entry 	@124

-			origin     	(239, 608)

-			terminus   	(544, 608)

-			ordinal    	2)

-		    (object InterMessView "" @142

-			location   	(16, 720)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @143

-			    Parent_View 	@142

-			    location   	(391, 676)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFDFA3402F2"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	108

-			    justify    	0

-			    label      	"load()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@101

-			supplier   	@122

-			Focus_Src  	@102

-			Focus_Entry 	@125

-			origin     	(239, 720)

-			terminus   	(544, 720)

-			ordinal    	3)

-		    (object InterMessView "" @144

-			location   	(16, 1232)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @145

-			    Parent_View 	@144

-			    location   	(727, 1188)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFDFAF800C4"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	302

-			    justify    	0

-			    label      	"createDigester()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@122

-			supplier   	@104

-			Focus_Src  	@125

-			Focus_Entry 	@105

-			origin     	(575, 1232)

-			terminus   	(880, 1232)

-			ordinal    	7)

-		    (object InterMessView "" @146

-			location   	(16, 1312)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @147

-			    Parent_View 	@146

-			    location   	(727, 1268)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFDFB0100B2"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	136

-			    justify    	0

-			    label      	"parse()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@122

-			supplier   	@104

-			Focus_Src  	@125

-			Focus_Entry 	@106

-			origin     	(575, 1312)

-			terminus   	(880, 1312)

-			ordinal    	8)

-		    (object AttachView "" @148

-			stereotype 	TRUE

-			line_color 	3342489

-			client     	@147

-			supplier   	@117

-			line_style 	0)

-		    (object InterMessView "" @149

-			location   	(16, 1328)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @150

-			    Parent_View 	@149

-			    location   	(1063, 1284)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFDFB8400A7"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	265

-			    justify    	0

-			    label      	"newInstance()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@104

-			supplier   	@107

-			Focus_Src  	@106

-			Focus_Entry 	@108

-			origin     	(911, 1328)

-			terminus   	(1216, 1328)

-			ordinal    	9)

-		    (object InterMessView "" @151

-			location   	(16, 1456)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @152

-			    Parent_View 	@151

-			    location   	(1231, 1412)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFDFB920148"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	265

-			    justify    	0

-			    label      	"newInstance()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@104

-			supplier   	@109

-			Focus_Src  	@106

-			Focus_Entry 	@110

-			origin     	(911, 1456)

-			terminus   	(1552, 1456)

-			ordinal    	10)

-		    (object InterMessView "" @153

-			location   	(16, 1600)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @154

-			    Parent_View 	@153

-			    location   	(1239, 1556)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFDFBEA00C2"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	265

-			    justify    	0

-			    label      	"newInstance()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@122

-			supplier   	@111

-			Focus_Src  	@125

-			Focus_Entry 	@112

-			origin     	(575, 1600)

-			terminus   	(1904, 1600)

-			ordinal    	11)

-		    (object InterMessView "" @155

-			location   	(16, 1680)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @156

-			    Parent_View 	@155

-			    location   	(1239, 1636)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFDFBF401F2"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	425

-			    justify    	0

-			    label      	"setPackageDefinition()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@122

-			supplier   	@111

-			Focus_Src  	@125

-			Focus_Entry 	@113

-			origin     	(575, 1680)

-			terminus   	(1904, 1680)

-			ordinal    	12)

-		    (object InterMessView "" @157

-			location   	(16, 1760)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @158

-			    Parent_View 	@157

-			    location   	(1239, 1716)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFDFC1203C2"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	386

-			    justify    	0

-			    label      	"setPackageAccess()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@122

-			supplier   	@111

-			Focus_Src  	@125

-			Focus_Entry 	@114

-			origin     	(575, 1760)

-			terminus   	(1904, 1760)

-			ordinal    	13)))

-	    (object InteractionDiagram "2. catalina_initliaze"

-		mechanism_ref 	@83

-		quid       	"3DFDFC44002A"

-		title      	"2. catalina_initliaze"

-		zoom       	100

-		max_height 	28350

-		max_width  	21600

-		origin_x   	0

-		origin_y   	87

-		items      	(list diagram_item_list

-		    (object InterObjView "Catalina" @159

-			location   	(176, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@159

-			    location   	(176, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"Catalina")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFDFC8F015F"

-			width      	300

-			height     	1180

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @160

-			    location   	(176, 400)

-			    line_color 	3342489

-			    InterObjView 	@159

-			    height     	914

-			    y_coord    	854

-			    Nested     	FALSE))

-		    (object InterObjView "StandardServer" @161

-			location   	(496, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@161

-			    location   	(496, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"StandardServer")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFDFCCB006B"

-			width      	300

-			height     	1180

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @162

-			    location   	(496, 400)

-			    line_color 	3342489

-			    InterObjView 	@161

-			    height     	854

-			    y_coord    	794

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @163

-			    location   	(496, 480)

-			    line_color 	3342489

-			    InterObjView 	@161

-			    height     	768

-			    y_coord    	708

-			    Nested     	TRUE))

-		    (object InterObjView "StandardService" @164

-			location   	(832, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@164

-			    location   	(832, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"StandardService")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFDFD370020"

-			width      	300

-			height     	1180

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @165

-			    location   	(832, 480)

-			    line_color 	3342489

-			    InterObjView 	@164

-			    height     	708

-			    y_coord    	648

-			    Nested     	FALSE))

-		    (object InterObjView "CoyoteConnector" @166

-			location   	(1168, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@166

-			    location   	(1168, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"CoyoteConnector")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFDFE810313"

-			width      	300

-			height     	1180

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @167

-			    location   	(1168, 528)

-			    line_color 	3342489

-			    InterObjView 	@166

-			    height     	600

-			    y_coord    	540

-			    Nested     	FALSE))

-		    (object InterObjView "CoyoteAdapter" @168

-			location   	(1504, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@168

-			    location   	(1504, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"CoyoteAdapter")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFDFFA00226"

-			width      	300

-			height     	1180

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @169

-			    location   	(1504, 576)

-			    line_color 	3342489

-			    InterObjView 	@168

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE))

-		    (object InterObjView "Http11Protocol" @170

-			location   	(1808, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@170

-			    location   	(1808, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"Http11Protocol")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE016601A6"

-			width      	300

-			height     	1180

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @171

-			    location   	(1808, 704)

-			    line_color 	3342489

-			    InterObjView 	@170

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @172

-			    location   	(1808, 832)

-			    line_color 	3342489

-			    InterObjView 	@170

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE))

-		    (object InterObjView "JkCoyoteAdapter" @173

-			location   	(2144, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@173

-			    location   	(2144, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"JkCoyoteAdapter")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE01AD01A8"

-			width      	300

-			height     	1180

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @174

-			    location   	(2144, 928)

-			    line_color 	3342489

-			    InterObjView 	@173

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @175

-			    location   	(2144, 1008)

-			    line_color 	3342489

-			    InterObjView 	@173

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE))

-		    (object InterMessView "" @176

-			location   	(16, 400)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @177

-			    Parent_View 	@176

-			    location   	(335, 356)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFDFD1F0076"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	180

-			    justify    	0

-			    label      	"initialize()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@159

-			supplier   	@161

-			Focus_Src  	@160

-			Focus_Entry 	@162

-			origin     	(191, 400)

-			terminus   	(480, 400)

-			ordinal    	0)

-		    (object InterMessView "" @178

-			location   	(16, 480)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @179

-			    Parent_View 	@178

-			    location   	(663, 436)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFDFD3D01C4"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	180

-			    justify    	0

-			    label      	"initialize()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@161

-			supplier   	@164

-			Focus_Src  	@163

-			Focus_Entry 	@165

-			origin     	(511, 480)

-			terminus   	(816, 480)

-			ordinal    	1)

-		    (object InterMessView "" @180

-			location   	(16, 528)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @181

-			    Parent_View 	@180

-			    location   	(999, 484)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFDFE990305"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	180

-			    justify    	0

-			    label      	"initialize()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@164

-			supplier   	@166

-			Focus_Src  	@165

-			Focus_Entry 	@167

-			origin     	(847, 528)

-			terminus   	(1152, 528)

-			ordinal    	2)

-		    (object InterMessView "" @182

-			location   	(16, 576)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @183

-			    Parent_View 	@182

-			    location   	(1335, 532)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE013D0217"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	106

-			    justify    	0

-			    label      	"new()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@166

-			supplier   	@168

-			Focus_Src  	@167

-			Focus_Entry 	@169

-			origin     	(1183, 576)

-			terminus   	(1488, 576)

-			ordinal    	3)

-		    (object InterMessView "" @184

-			location   	(1504, 704)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @185

-			    Parent_View 	@184

-			    location   	(1487, 660)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE01830330"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	106

-			    justify    	0

-			    label      	"new()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@166

-			supplier   	@170

-			Focus_Src  	@167

-			Focus_Entry 	@171

-			origin     	(1183, 704)

-			terminus   	(1792, 704)

-			ordinal    	4)

-		    (object InterMessView "" @186

-			location   	(1504, 832)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @187

-			    Parent_View 	@186

-			    location   	(1487, 788)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE0188032C"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	80

-			    justify    	0

-			    label      	"init()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@166

-			supplier   	@170

-			Focus_Src  	@167

-			Focus_Entry 	@172

-			origin     	(1183, 832)

-			terminus   	(1792, 832)

-			ordinal    	5)

-		    (object InterMessView "" @188

-			location   	(16, 928)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @189

-			    Parent_View 	@188

-			    location   	(1655, 884)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE01BC038C"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	106

-			    justify    	0

-			    label      	"new()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@166

-			supplier   	@173

-			Focus_Src  	@167

-			Focus_Entry 	@174

-			origin     	(1183, 928)

-			terminus   	(2128, 928)

-			ordinal    	6)

-		    (object InterMessView "" @190

-			location   	(16, 1008)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @191

-			    Parent_View 	@190

-			    location   	(1655, 964)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE01C30164"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	80

-			    justify    	0

-			    label      	"init()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@166

-			supplier   	@173

-			Focus_Src  	@167

-			Focus_Entry 	@175

-			origin     	(1183, 1008)

-			terminus   	(2128, 1008)

-			ordinal    	7)

-		    (object NoteView @192

-			location   	(2144, 2016)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@192

-			    location   	(1947, 1957)

-			    fill_color 	13434879

-			    nlines     	2

-			    max_width  	359

-			    label      	"#2 Catalina.initialize()")

-			line_color 	3342489

-			fill_color 	13434879

-			width      	419

-			height     	131)))

-	    (object InteractionDiagram "3. catalina_start"

-		mechanism_ref 	@84

-		quid       	"3DFE026D02D1"

-		title      	"3. catalina_start"

-		zoom       	100

-		max_height 	28350

-		max_width  	21600

-		origin_x   	0

-		origin_y   	2481

-		items      	(list diagram_item_list

-		    (object InterObjView "Bootstrap" @193

-			location   	(192, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@193

-			    location   	(192, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"Bootstrap")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE027700F5"

-			width      	300

-			height     	2912

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @194

-			    location   	(192, 384)

-			    line_color 	3342489

-			    InterObjView 	@193

-			    height     	2662

-			    y_coord    	2602

-			    Nested     	FALSE))

-		    (object InterObjView "Catalina" @195

-			location   	(480, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@195

-			    location   	(480, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"Catalina")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE027D0067"

-			width      	300

-			height     	2912

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @196

-			    location   	(480, 384)

-			    line_color 	3342489

-			    InterObjView 	@195

-			    height     	2602

-			    y_coord    	2542

-			    Nested     	FALSE))

-		    (object InterObjView "StandardServer" @197

-			location   	(784, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@197

-			    location   	(784, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"StandardServer")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE02B30015"

-			width      	300

-			height     	2912

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @198

-			    location   	(784, 416)

-			    line_color 	3342489

-			    InterObjView 	@197

-			    height     	2510

-			    y_coord    	2450

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @199

-			    location   	(784, 480)

-			    line_color 	3342489

-			    InterObjView 	@197

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @200

-			    location   	(784, 592)

-			    line_color 	3342489

-			    InterObjView 	@197

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE))

-		    (object InterObjView "StandardService" @201

-			location   	(1088, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@201

-			    location   	(1088, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"StandardService")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE030400E3"

-			width      	300

-			height     	2912

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @202

-			    location   	(1088, 704)

-			    line_color 	3342489

-			    InterObjView 	@201

-			    height     	2162

-			    y_coord    	2102

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @203

-			    location   	(1088, 752)

-			    line_color 	3342489

-			    InterObjView 	@201

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @204

-			    location   	(1088, 864)

-			    line_color 	3342489

-			    InterObjView 	@201

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE))

-		    (object InterObjView "StandardEngine" @205

-			location   	(1424, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@205

-			    location   	(1424, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	332

-			    justify    	0

-			    label      	"StandardEngine")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE034700C2"

-			width      	350

-			height     	2912

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @206

-			    location   	(1424, 976)

-			    line_color 	3342489

-			    InterObjView 	@205

-			    height     	1830

-			    y_coord    	1770

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @207

-			    location   	(1424, 1056)

-			    line_color 	3342489

-			    InterObjView 	@205

-			    height     	1744

-			    y_coord    	1684

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @208

-			    location   	(1424, 1056)

-			    line_color 	3342489

-			    InterObjView 	@205

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @209

-			    location   	(1424, 1168)

-			    line_color 	3342489

-			    InterObjView 	@205

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @210

-			    location   	(1424, 1296)

-			    line_color 	3342489

-			    InterObjView 	@205

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @211

-			    location   	(1424, 1408)

-			    line_color 	3342489

-			    InterObjView 	@205

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @212

-			    location   	(1424, 1536)

-			    line_color 	3342489

-			    InterObjView 	@205

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @213

-			    location   	(1424, 1648)

-			    line_color 	3342489

-			    InterObjView 	@205

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE))

-		    (object InterObjView "StandardHost" @214

-			location   	(1760, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@214

-			    location   	(1760, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"StandardHost")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE03F2035D"

-			width      	300

-			height     	2912

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @215

-			    location   	(1760, 1760)

-			    line_color 	3342489

-			    InterObjView 	@214

-			    height     	980

-			    y_coord    	920

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @216

-			    location   	(1760, 1808)

-			    line_color 	3342489

-			    InterObjView 	@214

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @217

-			    location   	(1760, 1920)

-			    line_color 	3342489

-			    InterObjView 	@214

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @218

-			    location   	(1760, 2032)

-			    line_color 	3342489

-			    InterObjView 	@214

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @219

-			    location   	(1760, 2144)

-			    line_color 	3342489

-			    InterObjView 	@214

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @220

-			    location   	(1760, 2256)

-			    line_color 	3342489

-			    InterObjView 	@214

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE))

-		    (object InterObjView "StandardPipeline" @221

-			location   	(2080, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@221

-			    location   	(2080, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	326

-			    justify    	0

-			    label      	"StandardPipeline")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE047D006D"

-			width      	344

-			height     	2912

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @222

-			    location   	(2080, 2368)

-			    line_color 	3342489

-			    InterObjView 	@221

-			    height     	312

-			    y_coord    	252

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @223

-			    location   	(2080, 2416)

-			    line_color 	3342489

-			    InterObjView 	@221

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @224

-			    location   	(2080, 2480)

-			    line_color 	3342489

-			    InterObjView 	@221

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @225

-			    location   	(2080, 2560)

-			    line_color 	3342489

-			    InterObjView 	@221

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE))

-		    (object InterMessView "" @226

-			location   	(16, 384)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @227

-			    Parent_View 	@226

-			    location   	(335, 340)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE02830374"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	110

-			    justify    	0

-			    label      	"start()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@193

-			supplier   	@195

-			Focus_Src  	@194

-			Focus_Entry 	@196

-			origin     	(207, 384)

-			terminus   	(464, 384)

-			ordinal    	0)

-		    (object InterMessView "" @228

-			location   	(16, 416)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @229

-			    Parent_View 	@228

-			    location   	(631, 372)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE02BA0188"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	110

-			    justify    	0

-			    label      	"start()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@195

-			supplier   	@197

-			Focus_Src  	@196

-			Focus_Entry 	@198

-			origin     	(495, 416)

-			terminus   	(768, 416)

-			ordinal    	1)

-		    (object SelfMessView "" @230

-			location   	(16, 480)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @231

-			    Parent_View 	@230

-			    location   	(1244, 437)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE02D3006C"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	854

-			    justify    	0

-			    label      	"fireLifecycleEvent(BEFORE_START_EVENT)"

-			    pctDist    	2.960000

-			    height     	44

-			    orientation 	0)

-			line_color 	3342489

-			client     	@197

-			supplier   	@197

-			Focus_Src  	@198

-			Focus_Entry 	@199

-			origin     	(800, 480)

-			terminus   	(950, 480)

-			ordinal    	2)

-		    (object SelfMessView "" @232

-			location   	(16, 592)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @233

-			    Parent_View 	@232

-			    location   	(1146, 549)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE02DF02DF"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	658

-			    justify    	0

-			    label      	"fireLifecycleEvent(START_EVENT)"

-			    pctDist    	2.313333

-			    height     	44

-			    orientation 	0)

-			line_color 	3342489

-			client     	@197

-			supplier   	@197

-			Focus_Src  	@198

-			Focus_Entry 	@200

-			origin     	(800, 592)

-			terminus   	(950, 592)

-			ordinal    	3)

-		    (object InterMessView "" @234

-			location   	(16, 704)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @235

-			    Parent_View 	@234

-			    location   	(935, 660)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE030C02B3"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	110

-			    justify    	0

-			    label      	"start()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@197

-			supplier   	@201

-			Focus_Src  	@198

-			Focus_Entry 	@202

-			origin     	(799, 704)

-			terminus   	(1072, 704)

-			ordinal    	4)

-		    (object SelfMessView "" @236

-			location   	(16, 752)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @237

-			    Parent_View 	@236

-			    location   	(1531, 708)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE031D0022"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	854

-			    justify    	0

-			    label      	"fireLifecycleEvent(BEFORE_START_EVENT)"

-			    pctDist    	2.853333

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@201

-			supplier   	@201

-			Focus_Src  	@202

-			Focus_Entry 	@203

-			origin     	(1104, 752)

-			terminus   	(1254, 752)

-			ordinal    	5)

-		    (object SelfMessView "" @238

-			location   	(16, 864)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @239

-			    Parent_View 	@238

-			    location   	(1449, 821)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE0330019B"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	658

-			    justify    	0

-			    label      	"fireLifecycleEvent(START_EVENT)"

-			    pctDist    	2.306667

-			    height     	44

-			    orientation 	0)

-			line_color 	3342489

-			client     	@201

-			supplier   	@201

-			Focus_Src  	@202

-			Focus_Entry 	@204

-			origin     	(1104, 864)

-			terminus   	(1254, 864)

-			ordinal    	6)

-		    (object InterMessView "" @240

-			location   	(16, 976)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @241

-			    Parent_View 	@240

-			    location   	(1255, 932)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE0370018A"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	110

-			    justify    	0

-			    label      	"start()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@201

-			supplier   	@205

-			Focus_Src  	@202

-			Focus_Entry 	@206

-			origin     	(1103, 976)

-			terminus   	(1408, 976)

-			ordinal    	7)

-		    (object SelfMessView "" @242

-			location   	(16, 1056)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @243

-			    Parent_View 	@242

-			    location   	(1865, 1014)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE03750051"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	854

-			    justify    	0

-			    label      	"fireLifecycleEvent(BEFORE_START_EVENT)"

-			    pctDist    	2.840000

-			    height     	43

-			    orientation 	0)

-			line_color 	3342489

-			client     	@205

-			supplier   	@205

-			Focus_Src  	@207

-			Focus_Entry 	@208

-			origin     	(1440, 1056)

-			terminus   	(1590, 1056)

-			ordinal    	8)

-		    (object SelfMessView "" @244

-			location   	(16, 1168)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @245

-			    Parent_View 	@244

-			    location   	(1639, 1141)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE0389001C"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	373

-			    justify    	0

-			    label      	"addDefaultMapper()"

-			    pctDist    	1.326667

-			    height     	28

-			    orientation 	0)

-			line_color 	3342489

-			client     	@205

-			supplier   	@205

-			Focus_Src  	@207

-			Focus_Entry 	@209

-			origin     	(1440, 1168)

-			terminus   	(1590, 1168)

-			ordinal    	9)

-		    (object SelfMessView "" @246

-			location   	(16, 1296)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @247

-			    Parent_View 	@246

-			    location   	(1592, 1268)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE03980281"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	238

-			    justify    	0

-			    label      	"logger.start()"

-			    pctDist    	1.020000

-			    height     	29

-			    orientation 	0)

-			line_color 	3342489

-			client     	@205

-			supplier   	@205

-			Focus_Src  	@207

-			Focus_Entry 	@210

-			origin     	(1440, 1296)

-			terminus   	(1590, 1296)

-			ordinal    	10)

-		    (object SelfMessView "" @248

-			location   	(16, 1408)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @249

-			    Parent_View 	@248

-			    location   	(1593, 1380)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE03A80107"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	226

-			    justify    	0

-			    label      	"realm.start()"

-			    pctDist    	1.026667

-			    height     	29

-			    orientation 	0)

-			line_color 	3342489

-			client     	@205

-			supplier   	@205

-			Focus_Src  	@207

-			Focus_Entry 	@211

-			origin     	(1440, 1408)

-			terminus   	(1590, 1408)

-			ordinal    	11)

-		    (object SelfMessView "" @250

-			location   	(16, 1536)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @251

-			    Parent_View 	@250

-			    location   	(1608, 1508)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE03BD000D"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	259

-			    justify    	0

-			    label      	"findMappers()"

-			    pctDist    	1.120000

-			    height     	29

-			    orientation 	0)

-			line_color 	3342489

-			client     	@205

-			supplier   	@205

-			Focus_Src  	@207

-			Focus_Entry 	@212

-			origin     	(1440, 1536)

-			terminus   	(1590, 1536)

-			ordinal    	12)

-		    (object SelfMessView "" @252

-			location   	(16, 1648)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @253

-			    Parent_View 	@252

-			    location   	(1515, 1604)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE03E000A4"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	251

-			    justify    	0

-			    label      	"findChildren()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@205

-			supplier   	@205

-			Focus_Src  	@207

-			Focus_Entry 	@213

-			origin     	(1440, 1648)

-			terminus   	(1590, 1648)

-			ordinal    	13)

-		    (object InterMessView "" @254

-			location   	(1664, 1760)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @255

-			    Parent_View 	@254

-			    location   	(1591, 1716)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE03FB027A"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	110

-			    justify    	0

-			    label      	"start()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@205

-			supplier   	@214

-			Focus_Src  	@207

-			Focus_Entry 	@215

-			origin     	(1439, 1760)

-			terminus   	(1744, 1760)

-			ordinal    	14)

-		    (object SelfMessView "" @256

-			location   	(16, 1808)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @257

-			    Parent_View 	@256

-			    location   	(1606, 1784)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE043B02AE"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	854

-			    justify    	0

-			    label      	"fireLifecycleEvent(BEFORE_START_EVENT)"

-			    pctDist    	-1.133333

-			    height     	24

-			    orientation 	0)

-			line_color 	3342489

-			client     	@214

-			supplier   	@214

-			Focus_Src  	@215

-			Focus_Entry 	@216

-			origin     	(1776, 1808)

-			terminus   	(1926, 1808)

-			ordinal    	15)

-		    (object SelfMessView "" @258

-			location   	(16, 1920)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @259

-			    Parent_View 	@258

-			    location   	(1963, 1877)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE045C021F"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	373

-			    justify    	0

-			    label      	"addDefaultMapper()"

-			    pctDist    	1.253333

-			    height     	44

-			    orientation 	0)

-			line_color 	3342489

-			client     	@214

-			supplier   	@214

-			Focus_Src  	@215

-			Focus_Entry 	@217

-			origin     	(1776, 1920)

-			terminus   	(1926, 1920)

-			ordinal    	16)

-		    (object InterMessView "" @260

-			location   	(2000, 2368)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @261

-			    Parent_View 	@260

-			    location   	(1919, 2324)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE048E00B9"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	110

-			    justify    	0

-			    label      	"start()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@214

-			supplier   	@221

-			Focus_Src  	@215

-			Focus_Entry 	@222

-			origin     	(1775, 2368)

-			terminus   	(2064, 2368)

-			ordinal    	20)

-		    (object SelfMessView "" @262

-			location   	(16, 2032)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @263

-			    Parent_View 	@262

-			    location   	(1916, 2004)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE049B000C"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	238

-			    justify    	0

-			    label      	"logger.start()"

-			    pctDist    	0.933333

-			    height     	29

-			    orientation 	0)

-			line_color 	3342489

-			client     	@214

-			supplier   	@214

-			Focus_Src  	@215

-			Focus_Entry 	@218

-			origin     	(1776, 2032)

-			terminus   	(1926, 2032)

-			ordinal    	17)

-		    (object SelfMessView "" @264

-			location   	(16, 2144)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @265

-			    Parent_View 	@264

-			    location   	(1916, 2117)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE04A303BB"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	238

-			    justify    	0

-			    label      	"findMapper()"

-			    pctDist    	0.933333

-			    height     	28

-			    orientation 	0)

-			line_color 	3342489

-			client     	@214

-			supplier   	@214

-			Focus_Src  	@215

-			Focus_Entry 	@219

-			origin     	(1776, 2144)

-			terminus   	(1926, 2144)

-			ordinal    	18)

-		    (object SelfMessView "" @266

-			location   	(16, 2256)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @267

-			    Parent_View 	@266

-			    location   	(1916, 2228)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE04A90342"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	251

-			    justify    	0

-			    label      	"findChildren()"

-			    pctDist    	0.933333

-			    height     	29

-			    orientation 	0)

-			line_color 	3342489

-			client     	@214

-			supplier   	@214

-			Focus_Src  	@215

-			Focus_Entry 	@220

-			origin     	(1776, 2256)

-			terminus   	(1926, 2256)

-			ordinal    	19)

-		    (object NoteView @268

-			location   	(2128, 1488)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@268

-			    location   	(1915, 1422)

-			    fill_color 	13434879

-			    nlines     	2

-			    max_width  	390

-			    label      	"#1 Catalina.start()")

-			line_color 	3342489

-			fill_color 	13434879

-			width      	450

-			height     	144)

-		    (object SelfMessView "" @269

-			location   	(16, 2416)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @270

-			    Parent_View 	@269

-			    location   	(1644, 2498)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE05780138"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	854

-			    justify    	0

-			    label      	"fireLifecycleEvent(BEFORE_START_EVENT)"

-			    pctDist    	-3.020000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@221

-			supplier   	@221

-			Focus_Src  	@222

-			Focus_Entry 	@223

-			origin     	(2096, 2416)

-			terminus   	(2246, 2416)

-			ordinal    	21)

-		    (object SelfMessView "" @271

-			location   	(16, 2480)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @272

-			    Parent_View 	@271

-			    location   	(1705, 2582)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE05A80398"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	658

-			    justify    	0

-			    label      	"fireLifecycleEvent(START_EVENT)"

-			    pctDist    	-2.613333

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@221

-			supplier   	@221

-			Focus_Src  	@222

-			Focus_Entry 	@224

-			origin     	(2096, 2480)

-			terminus   	(2246, 2480)

-			ordinal    	22)

-		    (object SelfMessView "" @273

-			location   	(16, 2560)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @274

-			    Parent_View 	@273

-			    location   	(1737, 2423)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE05BA0196"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	658

-			    justify    	0

-			    label      	"fireLifecycleEvent(AFTER_EVENT)"

-			    pctDist    	-2.393333

-			    height     	138

-			    orientation 	0)

-			line_color 	3342489

-			client     	@221

-			supplier   	@221

-			Focus_Src  	@222

-			Focus_Entry 	@225

-			origin     	(2096, 2560)

-			terminus   	(2246, 2560)

-			ordinal    	23)

-		    (object NoteView @275

-			location   	(960, 1680)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@275

-			    location   	(635, 1571)

-			    fill_color 	13434879

-			    nlines     	4

-			    max_width  	615

-			    label      	"All StandardX will fire these events.")

-			line_color 	3342489

-			fill_color 	13434879

-			width      	675

-			height     	231)

-		    (object AttachView "" @276

-			stereotype 	TRUE

-			line_color 	3342489

-			client     	@275

-			supplier   	@272

-			line_style 	0)

-		    (object AttachView "" @277

-			stereotype 	TRUE

-			line_color 	3342489

-			client     	@275

-			supplier   	@270

-			line_style 	0)

-		    (object AttachView "" @278

-			stereotype 	TRUE

-			line_color 	3342489

-			client     	@275

-			supplier   	@274

-			line_style 	0)))

-	    (object InteractionDiagram "4. catalina_start_2"

-		mechanism_ref 	@85

-		quid       	"3DFE050900BF"

-		title      	"4. catalina_start_2"

-		zoom       	100

-		max_height 	28350

-		max_width  	21600

-		origin_x   	0

-		origin_y   	1087

-		items      	(list diagram_item_list

-		    (object InterObjView "StandardHost" @279

-			location   	(208, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@279

-			    location   	(208, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"StandardHost")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE0538017B"

-			width      	300

-			height     	2114

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @280

-			    location   	(208, 384)

-			    line_color 	3342489

-			    InterObjView 	@279

-			    height     	1864

-			    y_coord    	1804

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @281

-			    location   	(208, 384)

-			    line_color 	3342489

-			    InterObjView 	@279

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @282

-			    location   	(208, 1088)

-			    line_color 	3342489

-			    InterObjView 	@279

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @283

-			    location   	(208, 1616)

-			    line_color 	3342489

-			    InterObjView 	@279

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE))

-		    (object InterObjView "HostConfig" @284

-			location   	(544, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@284

-			    location   	(544, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"HostConfig")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE06A60131"

-			width      	300

-			height     	2114

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @285

-			    location   	(544, 512)

-			    line_color 	3342489

-			    InterObjView 	@284

-			    height     	696

-			    y_coord    	636

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @286

-			    location   	(544, 576)

-			    line_color 	3342489

-			    InterObjView 	@284

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @287

-			    location   	(544, 688)

-			    line_color 	3342489

-			    InterObjView 	@284

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @288

-			    location   	(544, 784)

-			    line_color 	3342489

-			    InterObjView 	@284

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @289

-			    location   	(544, 896)

-			    line_color 	3342489

-			    InterObjView 	@284

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @290

-			    location   	(544, 1008)

-			    line_color 	3342489

-			    InterObjView 	@284

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @291

-			    location   	(544, 1536)

-			    line_color 	3342489

-			    InterObjView 	@284

-			    height     	200

-			    y_coord    	140

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @292

-			    location   	(544, 1536)

-			    line_color 	3342489

-			    InterObjView 	@284

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE))

-		    (object InterObjView "StandardHostDeployer" @293

-			location   	(944, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@293

-			    location   	(944, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	426

-			    justify    	0

-			    label      	"StandardHostDeployer")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE079A0055"

-			width      	444

-			height     	2114

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @294

-			    location   	(944, 1280)

-			    line_color 	3342489

-			    InterObjView 	@293

-			    height     	824

-			    y_coord    	764

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @295

-			    location   	(944, 2128)

-			    line_color 	3342489

-			    InterObjView 	@293

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE))

-		    (object InterObjView "Digester" @296

-			location   	(1328, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@296

-			    location   	(1328, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"Digester")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE07C9034C"

-			width      	300

-			height     	2114

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @297

-			    location   	(1328, 1280)

-			    line_color 	3342489

-			    InterObjView 	@296

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @298

-			    location   	(1328, 1488)

-			    line_color 	3342489

-			    InterObjView 	@296

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @299

-			    location   	(1328, 1984)

-			    line_color 	3342489

-			    InterObjView 	@296

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE))

-		    (object InterObjView "ContextRuleSet" @300

-			location   	(1648, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@300

-			    location   	(1648, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"ContextRuleSet")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE0834016F"

-			width      	300

-			height     	2114

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @301

-			    location   	(1648, 1408)

-			    line_color 	3342489

-			    InterObjView 	@300

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @302

-			    location   	(1648, 1888)

-			    line_color 	3342489

-			    InterObjView 	@300

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE))

-		    (object InterObjView "NamingRuleSet" @303

-			location   	(1968, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@303

-			    location   	(1968, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"NamingRuleSet")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE08D00173"

-			width      	300

-			height     	2114

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @304

-			    location   	(1968, 1792)

-			    line_color 	3342489

-			    InterObjView 	@303

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE))

-		    (object SelfMessView "" @305

-			location   	(0, 384)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @306

-			    Parent_View 	@305

-			    location   	(555, 342)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE066C0341"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	651

-			    justify    	0

-			    label      	"fireLifecycleEvent(START_EVENT)"

-			    pctDist    	2.206667

-			    height     	43

-			    orientation 	0)

-			line_color 	3342489

-			client     	@279

-			supplier   	@279

-			Focus_Src  	@280

-			Focus_Entry 	@281

-			origin     	(224, 384)

-			terminus   	(374, 384)

-			ordinal    	0)

-		    (object InterMessView "" @307

-			location   	(384, 512)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @308

-			    Parent_View 	@307

-			    location   	(486, 468)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE06D20294"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	507

-			    justify    	0

-			    label      	"interested[i].lifecycleEvent()"

-			    pctDist    	0.865574

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@279

-			supplier   	@284

-			Focus_Src  	@280

-			Focus_Entry 	@285

-			origin     	(223, 512)

-			terminus   	(528, 512)

-			ordinal    	1)

-		    (object SelfMessView "" @309

-			location   	(16, 576)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @310

-			    Parent_View 	@309

-			    location   	(713, 537)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE06E9028D"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	297

-			    justify    	0

-			    label      	"setDeployXML()"

-			    pctDist    	1.026667

-			    height     	40

-			    orientation 	0)

-			line_color 	3342489

-			client     	@284

-			supplier   	@284

-			Focus_Src  	@285

-			Focus_Entry 	@286

-			origin     	(560, 576)

-			terminus   	(710, 576)

-			ordinal    	2)

-		    (object SelfMessView "" @311

-			location   	(16, 688)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @312

-			    Parent_View 	@311

-			    location   	(714, 645)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE06F300FF"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	288

-			    justify    	0

-			    label      	"setLiveDeploy()"

-			    pctDist    	1.033333

-			    height     	44

-			    orientation 	0)

-			line_color 	3342489

-			client     	@284

-			supplier   	@284

-			Focus_Src  	@285

-			Focus_Entry 	@287

-			origin     	(560, 688)

-			terminus   	(710, 688)

-			ordinal    	3)

-		    (object SelfMessView "" @313

-			location   	(16, 784)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @314

-			    Parent_View 	@313

-			    location   	(732, 756)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE06FB00D9"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	326

-			    justify    	0

-			    label      	"setUnpacksWar()"

-			    pctDist    	1.153333

-			    height     	29

-			    orientation 	0)

-			line_color 	3342489

-			client     	@284

-			supplier   	@284

-			Focus_Src  	@285

-			Focus_Entry 	@288

-			origin     	(560, 784)

-			terminus   	(710, 784)

-			ordinal    	4)

-		    (object SelfMessView "" @315

-			location   	(16, 896)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @316

-			    Parent_View 	@315

-			    location   	(747, 868)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE070C0015"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	350

-			    justify    	0

-			    label      	"setXMLValidation()"

-			    pctDist    	1.246667

-			    height     	29

-			    orientation 	0)

-			line_color 	3342489

-			client     	@284

-			supplier   	@284

-			Focus_Src  	@285

-			Focus_Entry 	@289

-			origin     	(560, 896)

-			terminus   	(710, 896)

-			ordinal    	5)

-		    (object SelfMessView "" @317

-			location   	(16, 1008)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @318

-			    Parent_View 	@317

-			    location   	(762, 980)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE073B0031"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	359

-			    justify    	0

-			    label      	"deployDescriptors()"

-			    pctDist    	1.346667

-			    height     	29

-			    orientation 	0)

-			line_color 	3342489

-			client     	@284

-			supplier   	@284

-			Focus_Src  	@285

-			Focus_Entry 	@290

-			origin     	(560, 1008)

-			terminus   	(710, 1008)

-			ordinal    	6)

-		    (object InterMessView "" @319

-			location   	(16, 1088)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @320

-			    Parent_View 	@319

-			    location   	(376, 1044)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE078B03BB"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	136

-			    justify    	0

-			    label      	"install()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	1)

-			line_color 	3342489

-			client     	@284

-			supplier   	@279

-			Focus_Src  	@285

-			Focus_Entry 	@282

-			origin     	(528, 1088)

-			terminus   	(224, 1088)

-			ordinal    	7)

-		    (object InterMessView "" @321

-			location   	(576, 1280)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @322

-			    Parent_View 	@321

-			    location   	(575, 1236)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE07B100BE"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	136

-			    justify    	0

-			    label      	"install()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@279

-			supplier   	@293

-			Focus_Src  	@280

-			Focus_Entry 	@294

-			origin     	(223, 1280)

-			terminus   	(928, 1280)

-			ordinal    	8)

-		    (object InterMessView "" @323

-			location   	(1152, 1280)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @324

-			    Parent_View 	@323

-			    location   	(1135, 1236)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE07D200ED"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	144

-			    justify    	0

-			    label      	"create()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@293

-			supplier   	@296

-			Focus_Src  	@294

-			Focus_Entry 	@297

-			origin     	(959, 1280)

-			terminus   	(1312, 1280)

-			ordinal    	9)

-		    (object InterMessView "" @325

-			location   	(1136, 1984)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @326

-			    Parent_View 	@325

-			    location   	(1135, 1940)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE07D603D7"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	136

-			    justify    	0

-			    label      	"parse()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@293

-			supplier   	@296

-			Focus_Src  	@294

-			Focus_Entry 	@299

-			origin     	(959, 1984)

-			terminus   	(1312, 1984)

-			ordinal    	16)

-		    (object InterMessView "" @327

-			location   	(1296, 1408)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @328

-			    Parent_View 	@327

-			    location   	(1295, 1364)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE08DA029B"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	106

-			    justify    	0

-			    label      	"new()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@293

-			supplier   	@300

-			Focus_Src  	@294

-			Focus_Entry 	@301

-			origin     	(959, 1408)

-			terminus   	(1632, 1408)

-			ordinal    	10)

-		    (object InterMessView "" @329

-			location   	(1456, 1792)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @330

-			    Parent_View 	@329

-			    location   	(1455, 1748)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE08E00091"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	106

-			    justify    	0

-			    label      	"new()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@293

-			supplier   	@303

-			Focus_Src  	@294

-			Focus_Entry 	@304

-			origin     	(959, 1792)

-			terminus   	(1952, 1792)

-			ordinal    	14)

-		    (object InterMessView "" @331

-			location   	(16, 1488)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @332

-			    Parent_View 	@331

-			    location   	(1182, 1445)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE08FA003D"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	387

-			    justify    	0

-			    label      	"add(ContextRuleSet)"

-			    pctDist    	0.631728

-			    height     	44

-			    orientation 	0)

-			line_color 	3342489

-			client     	@293

-			supplier   	@296

-			Focus_Src  	@294

-			Focus_Entry 	@298

-			origin     	(959, 1488)

-			terminus   	(1312, 1488)

-			ordinal    	11)

-		    (object InterMessView "" @333

-			location   	(1296, 1888)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @334

-			    Parent_View 	@333

-			    location   	(1295, 1844)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE0907015F"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	416

-			    justify    	0

-			    label      	"add(NamingRuleSet())"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@293

-			supplier   	@300

-			Focus_Src  	@294

-			Focus_Entry 	@302

-			origin     	(959, 1888)

-			terminus   	(1632, 1888)

-			ordinal    	15)

-		    (object NoteView @335

-			location   	(2096, 2384)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@335

-			    location   	(1893, 2315)

-			    fill_color 	13434879

-			    nlines     	2

-			    max_width  	371

-			    label      	"#2 Catalina.start()")

-			line_color 	3342489

-			fill_color 	13434879

-			width      	431

-			height     	150)

-		    (object SelfMessView "" @336

-			location   	(16, 1536)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @337

-			    Parent_View 	@336

-			    location   	(697, 1493)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE131F0327"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	244

-			    justify    	0

-			    label      	"deployApps()"

-			    pctDist    	0.913333

-			    height     	43

-			    orientation 	0)

-			line_color 	3342489

-			client     	@284

-			supplier   	@284

-			Focus_Src  	@291

-			Focus_Entry 	@292

-			origin     	(560, 1536)

-			terminus   	(710, 1536)

-			ordinal    	12)

-		    (object InterMessView "" @338

-			location   	(16, 1616)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @339

-			    Parent_View 	@338

-			    location   	(376, 1572)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE132D0309"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	136

-			    justify    	0

-			    label      	"install()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	1)

-			line_color 	3342489

-			client     	@284

-			supplier   	@279

-			Focus_Src  	@291

-			Focus_Entry 	@283

-			origin     	(528, 1616)

-			terminus   	(224, 1616)

-			ordinal    	13)

-		    (object InterMessView "" @340

-			location   	(576, 2128)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @341

-			    Parent_View 	@340

-			    location   	(575, 2084)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE133A036C"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	463

-			    justify    	0

-			    label      	"install() // same as above"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@279

-			supplier   	@293

-			Focus_Src  	@280

-			Focus_Entry 	@295

-			origin     	(223, 2128)

-			terminus   	(928, 2128)

-			ordinal    	17)))

-	    (object InteractionDiagram "5. catalina_start_3"

-		mechanism_ref 	@86

-		quid       	"3DFE094A0346"

-		title      	"5. catalina_start_3"

-		zoom       	100

-		max_height 	28350

-		max_width  	21600

-		origin_x   	0

-		origin_y   	0

-		items      	(list diagram_item_list

-		    (object InterObjView "Digester" @342

-			location   	(176, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@342

-			    location   	(176, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"Digester")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE095A0371"

-			width      	300

-			height     	1214

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @343

-			    location   	(176, 352)

-			    line_color 	3342489

-			    InterObjView 	@342

-			    height     	996

-			    y_coord    	936

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @344

-			    location   	(176, 352)

-			    line_color 	3342489

-			    InterObjView 	@342

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @345

-			    location   	(176, 448)

-			    line_color 	3342489

-			    InterObjView 	@342

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE))

-		    (object InterObjView "Rule" @346

-			location   	(480, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@346

-			    location   	(480, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"Rule")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE0E7400D0"

-			width      	300

-			height     	1214

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @347

-			    location   	(480, 560)

-			    line_color 	3342489

-			    InterObjView 	@346

-			    height     	728

-			    y_coord    	668

-			    Nested     	FALSE))

-		    (object InterObjView "StandardContext" @348

-			location   	(816, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@348

-			    location   	(816, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	332

-			    justify    	0

-			    label      	"StandardContext")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE0FC502A1"

-			width      	350

-			height     	1214

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @349

-			    location   	(816, 592)

-			    line_color 	3342489

-			    InterObjView 	@348

-			    height     	264

-			    y_coord    	204

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @350

-			    location   	(816, 1008)

-			    line_color 	3342489

-			    InterObjView 	@348

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE))

-		    (object InterObjView "StandardPipeline" @351

-			location   	(1184, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@351

-			    location   	(1184, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	363

-			    justify    	0

-			    label      	"StandardPipeline")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE112F003F"

-			width      	381

-			height     	1214

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @352

-			    location   	(1184, 736)

-			    line_color 	3342489

-			    InterObjView 	@351

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE))

-		    (object InterObjView "StandardContextValve" @353

-			location   	(1552, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@353

-			    location   	(1552, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	300

-			    justify    	0

-			    label      	"StandardContextValve")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE110D0375"

-			width      	318

-			height     	1214

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @354

-			    location   	(1552, 624)

-			    line_color 	3342489

-			    InterObjView 	@353

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE))

-		    (object InterObjView "SetPropertiesRule" @355

-			location   	(1920, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@355

-			    location   	(1920, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	363

-			    justify    	0

-			    label      	"SetPropertiesRule")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE100303A4"

-			width      	381

-			height     	1214

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @356

-			    location   	(1920, 928)

-			    line_color 	3342489

-			    InterObjView 	@355

-			    height     	200

-			    y_coord    	140

-			    Nested     	FALSE))

-		    (object InterObjView "SetNextRule" @357

-			location   	(2272, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@357

-			    location   	(2272, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"SetNextRule")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE12690267"

-			width      	300

-			height     	1214

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @358

-			    location   	(2272, 1168)

-			    line_color 	3342489

-			    InterObjView 	@357

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE))

-		    (object SelfMessView "" @359

-			location   	(0, 352)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @360

-			    Parent_View 	@359

-			    location   	(267, 308)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE0E7801DB"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	108

-			    justify    	0

-			    label      	"parse"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@342

-			supplier   	@342

-			Focus_Src  	@343

-			Focus_Entry 	@344

-			origin     	(192, 352)

-			terminus   	(342, 352)

-			ordinal    	0)

-		    (object SelfMessView "" @361

-			location   	(16, 448)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @362

-			    Parent_View 	@361

-			    location   	(345, 420)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE0F2F03D2"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	267

-			    justify    	0

-			    label      	"startElement()"

-			    pctDist    	1.020000

-			    height     	28

-			    orientation 	0)

-			line_color 	3342489

-			client     	@342

-			supplier   	@342

-			Focus_Src  	@343

-			Focus_Entry 	@345

-			origin     	(192, 448)

-			terminus   	(342, 448)

-			ordinal    	1)

-		    (object InterMessView "" @363

-			location   	(336, 560)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @364

-			    Parent_View 	@363

-			    location   	(327, 516)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE0F400214"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	132

-			    justify    	0

-			    label      	"begin()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@342

-			supplier   	@346

-			Focus_Src  	@343

-			Focus_Entry 	@347

-			origin     	(191, 560)

-			terminus   	(464, 560)

-			ordinal    	2)

-		    (object InterMessView "" @365

-			location   	(16, 592)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @366

-			    Parent_View 	@365

-			    location   	(647, 548)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE0FD30266"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	265

-			    justify    	0

-			    label      	"newInstance()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@346

-			supplier   	@348

-			Focus_Src  	@347

-			Focus_Entry 	@349

-			origin     	(495, 592)

-			terminus   	(800, 592)

-			ordinal    	3)

-		    (object InterMessView "" @367

-			location   	(864, 928)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @368

-			    Parent_View 	@367

-			    location   	(1199, 884)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE102002E9"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	132

-			    justify    	0

-			    label      	"begin()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@346

-			supplier   	@355

-			Focus_Src  	@347

-			Focus_Entry 	@356

-			origin     	(495, 928)

-			terminus   	(1904, 928)

-			ordinal    	6)

-		    (object InterMessView "" @369

-			location   	(1008, 736)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @370

-			    Parent_View 	@369

-			    location   	(1139, 693)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE114A0193"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	610

-			    justify    	0

-			    label      	"setBasic(StandardContextValve)"

-			    pctDist    	0.915014

-			    height     	44

-			    orientation 	0)

-			line_color 	3342489

-			client     	@348

-			supplier   	@351

-			Focus_Src  	@349

-			Focus_Entry 	@352

-			origin     	(831, 736)

-			terminus   	(1168, 736)

-			ordinal    	5)

-		    (object InterMessView "" @371

-			location   	(16, 624)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @372

-			    Parent_View 	@371

-			    location   	(1183, 580)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE115E001F"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	106

-			    justify    	0

-			    label      	"new()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@348

-			supplier   	@353

-			Focus_Src  	@349

-			Focus_Entry 	@354

-			origin     	(831, 624)

-			terminus   	(1536, 624)

-			ordinal    	4)

-		    (object InterMessView "" @373

-			location   	(1440, 1008)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @374

-			    Parent_View 	@373

-			    location   	(1368, 964)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE11D50391"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	1190

-			    justify    	0

-			    label      	"//Using BeanUtil, set the object properties (from ex: admin.xml)"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	1)

-			line_color 	3342489

-			client     	@355

-			supplier   	@348

-			Focus_Src  	@356

-			Focus_Entry 	@350

-			origin     	(1904, 1008)

-			terminus   	(832, 1008)

-			ordinal    	7)

-		    (object InterMessView "" @375

-			location   	(1392, 1168)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @376

-			    Parent_View 	@375

-			    location   	(1375, 1124)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE128501C8"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	99

-			    justify    	0

-			    label      	"end()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@346

-			supplier   	@357

-			Focus_Src  	@347

-			Focus_Entry 	@358

-			origin     	(495, 1168)

-			terminus   	(2256, 1168)

-			ordinal    	8)

-		    (object NoteView @377

-			location   	(1216, 80)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@377

-			    location   	(900, 15)

-			    fill_color 	13434879

-			    nlines     	2

-			    max_width  	596

-			    label      	"HostConfig.deployDescriptor()")

-			line_color 	3342489

-			fill_color 	13434879

-			width      	656

-			height     	143)

-		    (object NoteView @378

-			location   	(2128, 1888)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@378

-			    location   	(1947, 1822)

-			    fill_color 	13434879

-			    nlines     	2

-			    max_width  	327

-			    label      	"#3 Catalina.start()")

-			line_color 	3342489

-			fill_color 	13434879

-			width      	387

-			height     	144)))

-	    (object InteractionDiagram "6. catalina_start_4"

-		mechanism_ref 	@87

-		quid       	"3DFE13890008"

-		title      	"6. catalina_start_4"

-		zoom       	100

-		max_height 	28350

-		max_width  	21600

-		origin_x   	0

-		origin_y   	1818

-		items      	(list diagram_item_list

-		    (object InterObjView "Digester" @379

-			location   	(176, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@379

-			    location   	(176, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"Digester")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE13960364"

-			width      	300

-			height     	2446

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @380

-			    location   	(176, 336)

-			    line_color 	3342489

-			    InterObjView 	@379

-			    height     	1228

-			    y_coord    	1168

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @381

-			    location   	(176, 336)

-			    line_color 	3342489

-			    InterObjView 	@379

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @382

-			    location   	(176, 480)

-			    line_color 	3342489

-			    InterObjView 	@379

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @383

-			    location   	(176, 1616)

-			    line_color 	3342489

-			    InterObjView 	@379

-			    height     	580

-			    y_coord    	520

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @384

-			    location   	(176, 1728)

-			    line_color 	3342489

-			    InterObjView 	@379

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE))

-		    (object InterObjView "StandardHostDeployer" @385

-			location   	(480, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@385

-			    location   	(480, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	301

-			    justify    	0

-			    label      	"StandardHostDeployer")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE1D8A02DC"

-			width      	319

-			height     	2446

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @386

-			    location   	(480, 576)

-			    line_color 	3342489

-			    InterObjView 	@385

-			    height     	928

-			    y_coord    	868

-			    Nested     	FALSE))

-		    (object InterObjView "StandardHost" @387

-			location   	(800, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@387

-			    location   	(800, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"StandardHost")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE1DF20141"

-			width      	300

-			height     	2446

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @388

-			    location   	(800, 592)

-			    line_color 	3342489

-			    InterObjView 	@387

-			    height     	852

-			    y_coord    	792

-			    Nested     	FALSE))

-		    (object InterObjView "StandardContext" @389

-			location   	(1120, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@389

-			    location   	(1120, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	295

-			    justify    	0

-			    label      	"StandardContext")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE196D00D9"

-			width      	313

-			height     	2446

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @390

-			    location   	(1120, 624)

-			    line_color 	3342489

-			    InterObjView 	@389

-			    height     	760

-			    y_coord    	700

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @391

-			    location   	(1120, 800)

-			    line_color 	3342489

-			    InterObjView 	@389

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @392

-			    location   	(1120, 976)

-			    line_color 	3342489

-			    InterObjView 	@389

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @393

-			    location   	(1120, 1072)

-			    line_color 	3342489

-			    InterObjView 	@389

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE))

-		    (object InterObjView "WebappLoader" @394

-			location   	(1440, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@394

-			    location   	(1440, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	295

-			    justify    	0

-			    label      	"WebappLoader")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE1FFA0347"

-			width      	313

-			height     	2446

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @395

-			    location   	(1440, 640)

-			    line_color 	3342489

-			    InterObjView 	@394

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE))

-		    (object InterObjView "StandardManager" @396

-			location   	(1760, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@396

-			    location   	(1760, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	301

-			    justify    	0

-			    label      	"StandardManager")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE201F0105"

-			width      	319

-			height     	2446

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @397

-			    location   	(1760, 832)

-			    line_color 	3342489

-			    InterObjView 	@396

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @398

-			    location   	(1760, 1264)

-			    line_color 	3342489

-			    InterObjView 	@396

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE))

-		    (object InterObjView "ContextConfig" @399

-			location   	(1952, 352)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@399

-			    location   	(1952, 352)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"ContextConfig")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE2087028C"

-			width      	300

-			height     	2318

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @400

-			    location   	(1952, 412)

-			    InterObjView 	@399

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @401

-			    location   	(1952, 1136)

-			    line_color 	3342489

-			    InterObjView 	@399

-			    height     	1444

-			    y_coord    	1384

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @402

-			    location   	(1952, 1264)

-			    line_color 	3342489

-			    InterObjView 	@399

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @403

-			    location   	(1952, 1456)

-			    line_color 	3342489

-			    InterObjView 	@399

-			    height     	1070

-			    y_coord    	1010

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @404

-			    location   	(1952, 1568)

-			    line_color 	3342489

-			    InterObjView 	@399

-			    height     	952

-			    y_coord    	892

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @405

-			    location   	(1952, 1984)

-			    line_color 	3342489

-			    InterObjView 	@399

-			    height     	152

-			    y_coord    	92

-			    Nested     	TRUE))

-		    (object SelfMessView "" @406

-			location   	(16, 336)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @407

-			    Parent_View 	@406

-			    location   	(267, 292)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE19AE0065"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	108

-			    justify    	0

-			    label      	"parse"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@379

-			supplier   	@379

-			Focus_Src  	@380

-			Focus_Entry 	@381

-			origin     	(192, 336)

-			terminus   	(342, 336)

-			ordinal    	0)

-		    (object SelfMessView "" @408

-			location   	(16, 480)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @409

-			    Parent_View 	@408

-			    location   	(328, 437)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE19B102E9"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	267

-			    justify    	0

-			    label      	"startElement()"

-			    pctDist    	0.906667

-			    height     	44

-			    orientation 	0)

-			line_color 	3342489

-			client     	@379

-			supplier   	@379

-			Focus_Src  	@380

-			Focus_Entry 	@382

-			origin     	(192, 480)

-			terminus   	(342, 480)

-			ordinal    	1)

-		    (object InterMessView "" @410

-			location   	(16, 576)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @411

-			    Parent_View 	@410

-			    location   	(327, 552)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE1DFB0022"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	165

-			    justify    	0

-			    label      	"addChild"

-			    pctDist    	0.498645

-			    height     	25

-			    orientation 	0)

-			line_color 	3342489

-			client     	@379

-			supplier   	@385

-			Focus_Src  	@380

-			Focus_Entry 	@386

-			origin     	(191, 576)

-			terminus   	(464, 576)

-			ordinal    	2)

-		    (object InterMessView "" @412

-			location   	(16, 592)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @413

-			    Parent_View 	@412

-			    location   	(639, 548)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE1FB60277"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	165

-			    justify    	0

-			    label      	"addChild"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@385

-			supplier   	@387

-			Focus_Src  	@386

-			Focus_Entry 	@388

-			origin     	(495, 592)

-			terminus   	(784, 592)

-			ordinal    	3)

-		    (object InterMessView "" @414

-			location   	(16, 624)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @415

-			    Parent_View 	@414

-			    location   	(959, 580)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE1FC40228"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	110

-			    justify    	0

-			    label      	"start()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@387

-			supplier   	@389

-			Focus_Src  	@388

-			Focus_Entry 	@390

-			origin     	(815, 624)

-			terminus   	(1104, 624)

-			ordinal    	4)

-		    (object InterMessView "" @416

-			location   	(16, 640)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @417

-			    Parent_View 	@416

-			    location   	(1279, 596)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE200603BE"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	82

-			    justify    	0

-			    label      	"new"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@389

-			supplier   	@394

-			Focus_Src  	@390

-			Focus_Entry 	@395

-			origin     	(1135, 640)

-			terminus   	(1424, 640)

-			ordinal    	5)

-		    (object SelfMessView "" @418

-			location   	(16, 800)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @419

-			    Parent_View 	@418

-			    location   	(1224, 756)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE200C029A"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	186

-			    justify    	0

-			    label      	"setLoader"

-			    pctDist    	0.593333

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@389

-			supplier   	@389

-			Focus_Src  	@390

-			Focus_Entry 	@391

-			origin     	(1136, 800)

-			terminus   	(1286, 800)

-			ordinal    	6)

-		    (object InterMessView "" @420

-			location   	(16, 832)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @421

-			    Parent_View 	@420

-			    location   	(1439, 788)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE202C0250"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	82

-			    justify    	0

-			    label      	"new"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@389

-			supplier   	@396

-			Focus_Src  	@390

-			Focus_Entry 	@397

-			origin     	(1135, 832)

-			terminus   	(1744, 832)

-			ordinal    	7)

-		    (object SelfMessView "" @422

-			location   	(16, 976)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @423

-			    Parent_View 	@422

-			    location   	(1260, 933)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE2032001C"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	221

-			    justify    	0

-			    label      	"setManager"

-			    pctDist    	0.833333

-			    height     	44

-			    orientation 	0)

-			line_color 	3342489

-			client     	@389

-			supplier   	@389

-			Focus_Src  	@390

-			Focus_Entry 	@392

-			origin     	(1136, 976)

-			terminus   	(1286, 976)

-			ordinal    	8)

-		    (object SelfMessView "" @424

-			location   	(16, 1072)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @425

-			    Parent_View 	@424

-			    location   	(1481, 1043)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE205B01A2"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	658

-			    justify    	0

-			    label      	"fireLifecycleEvent(START_EVENT)"

-			    pctDist    	2.306667

-			    height     	30

-			    orientation 	0)

-			line_color 	3342489

-			client     	@389

-			supplier   	@389

-			Focus_Src  	@390

-			Focus_Entry 	@393

-			origin     	(1136, 1072)

-			terminus   	(1286, 1072)

-			ordinal    	9)

-		    (object InterMessView "" @426

-			location   	(16, 1136)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @427

-			    Parent_View 	@426

-			    location   	(1535, 1092)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE20960003"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	745

-			    justify    	0

-			    label      	" // Notify interested LifecycleListeners"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@389

-			supplier   	@399

-			Focus_Src  	@390

-			Focus_Entry 	@401

-			origin     	(1135, 1136)

-			terminus   	(1936, 1136)

-			ordinal    	10)

-		    (object SelfMessView "" @428

-			location   	(16, 1264)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @429

-			    Parent_View 	@428

-			    location   	(2043, 1220)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE20CF018C"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	110

-			    justify    	0

-			    label      	"start()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@399

-			supplier   	@399

-			Focus_Src  	@401

-			Focus_Entry 	@402

-			origin     	(1968, 1264)

-			terminus   	(2118, 1264)

-			ordinal    	11)

-		    (object SelfMessView "" @430

-			location   	(16, 1456)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @431

-			    Parent_View 	@430

-			    location   	(2027, 1413)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE20E303E2"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	275

-			    justify    	0

-			    label      	"defaultConfig()"

-			    pctDist    	0.393333

-			    height     	44

-			    orientation 	0)

-			line_color 	3342489

-			client     	@399

-			supplier   	@399

-			Focus_Src  	@401

-			Focus_Entry 	@403

-			origin     	(1968, 1456)

-			terminus   	(2118, 1456)

-			ordinal    	13)

-		    (object SelfMessView "" @432

-			location   	(16, 1568)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @433

-			    Parent_View 	@432

-			    location   	(2043, 1524)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE211D01A1"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	349

-			    justify    	0

-			    label      	"applicationConfig()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@399

-			supplier   	@399

-			Focus_Src  	@401

-			Focus_Entry 	@404

-			origin     	(1968, 1568)

-			terminus   	(2118, 1568)

-			ordinal    	14)

-		    (object InterMessView "" @434

-			location   	(1664, 1264)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @435

-			    Parent_View 	@434

-			    location   	(1439, 1220)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE20B600E5"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	110

-			    justify    	0

-			    label      	"start()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@389

-			supplier   	@396

-			Focus_Src  	@390

-			Focus_Entry 	@398

-			origin     	(1135, 1264)

-			terminus   	(1744, 1264)

-			ordinal    	12)

-		    (object InterMessView "" @436

-			location   	(16, 1616)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @437

-			    Parent_View 	@436

-			    location   	(1064, 1572)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE21B60288"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	145

-			    justify    	0

-			    label      	"create()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	1)

-			line_color 	3342489

-			client     	@399

-			supplier   	@379

-			Focus_Src  	@404

-			Focus_Entry 	@383

-			origin     	(1936, 1616)

-			terminus   	(192, 1616)

-			ordinal    	15)

-		    (object SelfMessView "" @438

-			location   	(16, 1728)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @439

-			    Parent_View 	@438

-			    location   	(457, 1701)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE21BE021B"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	530

-			    justify    	0

-			    label      	"// Process web.xml * tld.xml"

-			    pctDist    	1.773333

-			    height     	28

-			    orientation 	0)

-			line_color 	3342489

-			client     	@379

-			supplier   	@379

-			Focus_Src  	@383

-			Focus_Entry 	@384

-			origin     	(192, 1728)

-			terminus   	(342, 1728)

-			ordinal    	16)

-		    (object InterObjView "StandardWrapper" @440

-			location   	(2208, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@440

-			    location   	(2208, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"StandardWrapper")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE220C0122"

-			width      	300

-			height     	2446

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @441

-			    location   	(2208, 2016)

-			    line_color 	3342489

-			    InterObjView 	@440

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @442

-			    location   	(2208, 2176)

-			    line_color 	3342489

-			    InterObjView 	@440

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @443

-			    location   	(2208, 2288)

-			    line_color 	3342489

-			    InterObjView 	@440

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @444

-			    location   	(2208, 2400)

-			    line_color 	3342489

-			    InterObjView 	@440

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE))

-		    (object InterMessView "" @445

-			location   	(16, 1984)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @446

-			    Parent_View 	@445

-			    location   	(1063, 1940)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE228B03BA"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	1478

-			    justify    	0

-			    label      	"createWarpper() // Invoked by a WebWrapperRule (not Directly by the Digester)"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@379

-			supplier   	@399

-			Focus_Src  	@383

-			Focus_Entry 	@405

-			origin     	(191, 1984)

-			terminus   	(1936, 1984)

-			ordinal    	17)

-		    (object InterMessView "" @447

-			location   	(16, 2016)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @448

-			    Parent_View 	@447

-			    location   	(2079, 1972)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE229A0004"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	82

-			    justify    	0

-			    label      	"new"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@399

-			supplier   	@440

-			Focus_Src  	@405

-			Focus_Entry 	@441

-			origin     	(1967, 2016)

-			terminus   	(2192, 2016)

-			ordinal    	18)

-		    (object InterMessView "" @449

-			location   	(16, 2176)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @450

-			    Parent_View 	@449

-			    location   	(2116, 2134)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE22A700C1"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	405

-			    justify    	0

-			    label      	"addInstanceListener()"

-			    pctDist    	0.662295

-			    height     	43

-			    orientation 	0)

-			line_color 	3342489

-			client     	@399

-			supplier   	@440

-			Focus_Src  	@404

-			Focus_Entry 	@442

-			origin     	(1967, 2176)

-			terminus   	(2192, 2176)

-			ordinal    	19)

-		    (object InterMessView "" @451

-			location   	(2496, 2288)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @452

-			    Parent_View 	@451

-			    location   	(2116, 2245)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE22C701CC"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	410

-			    justify    	0

-			    label      	"addLifecycleListener()"

-			    pctDist    	0.662295

-			    height     	44

-			    orientation 	0)

-			line_color 	3342489

-			client     	@399

-			supplier   	@440

-			Focus_Src  	@404

-			Focus_Entry 	@443

-			origin     	(1967, 2288)

-			terminus   	(2192, 2288)

-			ordinal    	20)

-		    (object InterMessView "" @453

-			location   	(16, 2400)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @454

-			    Parent_View 	@453

-			    location   	(2124, 2357)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE22E80364"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	428

-			    justify    	0

-			    label      	"addContainerListener()"

-			    pctDist    	0.701639

-			    height     	44

-			    orientation 	0)

-			line_color 	3342489

-			client     	@399

-			supplier   	@440

-			Focus_Src  	@404

-			Focus_Entry 	@444

-			origin     	(1967, 2400)

-			terminus   	(2192, 2400)

-			ordinal    	21)

-		    (object NoteView @455

-			location   	(1216, 80)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@455

-			    location   	(825, 14)

-			    fill_color 	13434879

-			    nlines     	2

-			    max_width  	746

-			    label      	"Deploy App.")

-			line_color 	3342489

-			fill_color 	13434879

-			width      	806

-			height     	144)

-		    (object NoteView @456

-			location   	(2144, 2704)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@456

-			    location   	(1953, 2641)

-			    fill_color 	13434879

-			    nlines     	2

-			    max_width  	347

-			    label      	"#4 Catalina.start()")

-			line_color 	3342489

-			fill_color 	13434879

-			width      	407

-			height     	138)))

-	    (object InteractionDiagram "1. catalina_request"

-		mechanism_ref 	@88

-		quid       	"3DFE3B5001C3"

-		title      	"1. catalina_request"

-		zoom       	100

-		max_height 	28350

-		max_width  	21600

-		origin_x   	0

-		origin_y   	0

-		items      	(list diagram_item_list

-		    (object InterObjView "ThreadPool" @457

-			location   	(176, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@457

-			    location   	(176, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"ThreadPool")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE402B02C5"

-			width      	300

-			height     	1276

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @458

-			    location   	(176, 384)

-			    line_color 	3342489

-			    InterObjView 	@457

-			    height     	304

-			    y_coord    	244

-			    Nested     	FALSE))

-		    (object InterObjView "TcpWorkerThread" @459

-			location   	(512, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@459

-			    location   	(512, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	332

-			    justify    	0

-			    label      	"TcpWorkerThread")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE403200F8"

-			width      	350

-			height     	1276

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @460

-			    location   	(512, 384)

-			    line_color 	3342489

-			    InterObjView 	@459

-			    height     	244

-			    y_coord    	184

-			    Nested     	FALSE))

-		    (object InterObjView "Http11Protocol" @461

-			location   	(848, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@461

-			    location   	(848, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"Http11Protocol")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE40750177"

-			width      	300

-			height     	1276

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @462

-			    location   	(848, 400)

-			    line_color 	3342489

-			    InterObjView 	@461

-			    height     	168

-			    y_coord    	108

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @463

-			    location   	(848, 448)

-			    line_color 	3342489

-			    InterObjView 	@461

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @464

-			    location   	(848, 592)

-			    line_color 	3342489

-			    InterObjView 	@461

-			    height     	120

-			    y_coord    	60

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @465

-			    location   	(848, 592)

-			    line_color 	3342489

-			    InterObjView 	@461

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @466

-			    location   	(848, 736)

-			    line_color 	3342489

-			    InterObjView 	@461

-			    height     	674

-			    y_coord    	614

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @467

-			    location   	(848, 736)

-			    line_color 	3342489

-			    InterObjView 	@461

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE))

-		    (object InterObjView "CoyoteAdapter" @468

-			location   	(1168, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@468

-			    location   	(1168, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"CoyoteAdapter")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE410600DF"

-			width      	300

-			height     	1276

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @469

-			    location   	(1168, 848)

-			    line_color 	3342489

-			    InterObjView 	@468

-			    height     	502

-			    y_coord    	442

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @470

-			    location   	(1168, 944)

-			    line_color 	3342489

-			    InterObjView 	@468

-			    height     	352

-			    y_coord    	292

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @471

-			    location   	(1168, 944)

-			    line_color 	3342489

-			    InterObjView 	@468

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE))

-		    (object InterObjView "StandardEngine" @472

-			location   	(1520, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@472

-			    location   	(1520, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	363

-			    justify    	0

-			    label      	"StandardEngine")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE424B0349"

-			width      	381

-			height     	1276

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @473

-			    location   	(1520, 1008)

-			    line_color 	3342489

-			    InterObjView 	@472

-			    height     	228

-			    y_coord    	168

-			    Nested     	FALSE))

-		    (object InterObjView "StandardPipeline" @474

-			location   	(1872, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@474

-			    location   	(1872, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"StandardPipeline")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE42900045"

-			width      	300

-			height     	1276

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @475

-			    location   	(1872, 1040)

-			    line_color 	3342489

-			    InterObjView 	@474

-			    height     	136

-			    y_coord    	76

-			    Nested     	FALSE))

-		    (object InterObjView "StandardValveContext" @476

-			location   	(2192, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@476

-			    location   	(2192, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"StandardValveContext")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE42C002B1"

-			width      	300

-			height     	1276

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @477

-			    location   	(2192, 1056)

-			    line_color 	3342489

-			    InterObjView 	@476

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE))

-		    (object InterMessView "" @478

-			location   	(16, 384)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @479

-			    Parent_View 	@478

-			    location   	(343, 340)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE40E701AE"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	112

-			    justify    	0

-			    label      	"runIt()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@457

-			supplier   	@459

-			Focus_Src  	@458

-			Focus_Entry 	@460

-			origin     	(191, 384)

-			terminus   	(496, 384)

-			ordinal    	0)

-		    (object InterMessView "" @480

-			location   	(16, 400)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @481

-			    Parent_View 	@480

-			    location   	(679, 356)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE40FC010E"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	359

-			    justify    	0

-			    label      	"processConnection"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@459

-			supplier   	@461

-			Focus_Src  	@460

-			Focus_Entry 	@462

-			origin     	(527, 400)

-			terminus   	(832, 400)

-			ordinal    	1)

-		    (object SelfMessView "" @482

-			location   	(16, 448)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @483

-			    Parent_View 	@482

-			    location   	(969, 405)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE4111029F"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	175

-			    justify    	0

-			    label      	"process()"

-			    pctDist    	0.706667

-			    height     	44

-			    orientation 	0)

-			line_color 	3342489

-			client     	@461

-			supplier   	@461

-			Focus_Src  	@462

-			Focus_Entry 	@463

-			origin     	(864, 448)

-			terminus   	(1014, 448)

-			ordinal    	2)

-		    (object SelfMessView "" @484

-			location   	(16, 592)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @485

-			    Parent_View 	@484

-			    location   	(1048, 549)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE415C0151"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	291

-			    justify    	0

-			    label      	"parseHeaders()"

-			    pctDist    	1.226667

-			    height     	44

-			    orientation 	0)

-			line_color 	3342489

-			client     	@461

-			supplier   	@461

-			Focus_Src  	@464

-			Focus_Entry 	@465

-			origin     	(864, 592)

-			terminus   	(1014, 592)

-			ordinal    	3)

-		    (object SelfMessView "" @486

-			location   	(16, 736)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @487

-			    Parent_View 	@486

-			    location   	(1052, 692)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE41A60161"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	328

-			    justify    	0

-			    label      	"prepareRequest()"

-			    pctDist    	1.253333

-			    height     	44

-			    orientation 	0)

-			line_color 	3342489

-			client     	@461

-			supplier   	@461

-			Focus_Src  	@466

-			Focus_Entry 	@467

-			origin     	(864, 736)

-			terminus   	(1014, 736)

-			ordinal    	4)

-		    (object InterMessView "" @488

-			location   	(992, 848)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @489

-			    Parent_View 	@488

-			    location   	(1007, 804)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE41D60107"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	162

-			    justify    	0

-			    label      	"service()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@461

-			supplier   	@468

-			Focus_Src  	@466

-			Focus_Entry 	@469

-			origin     	(863, 848)

-			terminus   	(1152, 848)

-			ordinal    	5)

-		    (object SelfMessView "" @490

-			location   	(16, 944)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @491

-			    Parent_View 	@490

-			    location   	(1372, 916)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE422C01F1"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	373

-			    justify    	0

-			    label      	"postParseRequest()"

-			    pctDist    	1.253333

-			    height     	28

-			    orientation 	0)

-			line_color 	3342489

-			client     	@468

-			supplier   	@468

-			Focus_Src  	@470

-			Focus_Entry 	@471

-			origin     	(1184, 944)

-			terminus   	(1334, 944)

-			ordinal    	6)

-		    (object InterMessView "" @492

-			location   	(1344, 1008)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @493

-			    Parent_View 	@492

-			    location   	(1343, 964)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE42800238"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	149

-			    justify    	0

-			    label      	"invoke()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@468

-			supplier   	@472

-			Focus_Src  	@470

-			Focus_Entry 	@473

-			origin     	(1183, 1008)

-			terminus   	(1504, 1008)

-			ordinal    	7)

-		    (object InterMessView "" @494

-			location   	(16, 1040)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @495

-			    Parent_View 	@494

-			    location   	(1695, 996)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE429A002D"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	149

-			    justify    	0

-			    label      	"invoke()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@472

-			supplier   	@474

-			Focus_Src  	@473

-			Focus_Entry 	@475

-			origin     	(1535, 1040)

-			terminus   	(1856, 1040)

-			ordinal    	8)

-		    (object InterMessView "" @496

-			location   	(16, 1056)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @497

-			    Parent_View 	@496

-			    location   	(2031, 1012)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE42CE0230"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	149

-			    justify    	0

-			    label      	"invoke()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@474

-			supplier   	@476

-			Focus_Src  	@475

-			Focus_Entry 	@477

-			origin     	(1887, 1056)

-			terminus   	(2176, 1056)

-			ordinal    	9)

-		    (object NoteView @498

-			location   	(2000, 2016)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@498

-			    location   	(1862, 1956)

-			    fill_color 	13434879

-			    nlines     	2

-			    max_width  	240

-			    label      	"See next diagram")

-			line_color 	3342489

-			fill_color 	13434879

-			width      	300

-			height     	132)

-		    (object AttachView "" @499

-			stereotype 	TRUE

-			line_color 	3342489

-			client     	@498

-			supplier   	@476

-			line_style 	0)))

-	    (object InteractionDiagram "2. catalina_request_2"

-		mechanism_ref 	@89

-		quid       	"3DFE42F7024C"

-		title      	"2. catalina_request_2"

-		zoom       	100

-		max_height 	28350

-		max_width  	21600

-		origin_x   	0

-		origin_y   	0

-		items      	(list diagram_item_list

-		    (object InterObjView "StandardContextValve" @500

-			location   	(224, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@500

-			    location   	(224, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	401

-			    justify    	0

-			    label      	"StandardContextValve")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE4307001E"

-			width      	419

-			height     	1678

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @501

-			    location   	(224, 384)

-			    line_color 	3342489

-			    InterObjView 	@500

-			    height     	386

-			    y_coord    	326

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @502

-			    location   	(224, 704)

-			    line_color 	3342489

-			    InterObjView 	@500

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @503

-			    location   	(224, 896)

-			    line_color 	3342489

-			    InterObjView 	@500

-			    height     	916

-			    y_coord    	856

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @504

-			    location   	(224, 1024)

-			    line_color 	3342489

-			    InterObjView 	@500

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @505

-			    location   	(224, 1280)

-			    line_color 	3342489

-			    InterObjView 	@500

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE))

-		    (object InterObjView "StandardEngineValve" @506

-			location   	(592, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@506

-			    location   	(592, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"StandardEngineValve")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE432801F3"

-			width      	300

-			height     	1678

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @507

-			    location   	(592, 384)

-			    line_color 	3342489

-			    InterObjView 	@506

-			    height     	264

-			    y_coord    	204

-			    Nested     	FALSE))

-		    (object InterObjView "StandardHost" @508

-			location   	(912, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@508

-			    location   	(912, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"StandardHost")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE436503BD"

-			width      	300

-			height     	1678

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @509

-			    location   	(912, 416)

-			    line_color 	3342489

-			    InterObjView 	@508

-			    height     	431

-			    y_coord    	371

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @510

-			    location   	(912, 528)

-			    line_color 	3342489

-			    InterObjView 	@508

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @511

-			    location   	(912, 704)

-			    line_color 	3342489

-			    InterObjView 	@508

-			    height     	120

-			    y_coord    	60

-			    Nested     	TRUE))

-		    (object InterObjView "ErrorReportValve" @512

-			location   	(1264, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@512

-			    location   	(1264, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	294

-			    justify    	0

-			    label      	"ErrorReportValve")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE438C028D"

-			width      	312

-			height     	1678

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @513

-			    location   	(1264, 896)

-			    line_color 	3342489

-			    InterObjView 	@512

-			    height     	248

-			    y_coord    	188

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @514

-			    location   	(1264, 944)

-			    line_color 	3342489

-			    InterObjView 	@512

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE))

-		    (object InterObjView "ErrorDispatcherValve" @515

-			location   	(1584, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@515

-			    location   	(1584, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	295

-			    justify    	0

-			    label      	"ErrorDispatcherValve")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE451F01EC"

-			width      	313

-			height     	1678

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @516

-			    location   	(1584, 1168)

-			    line_color 	3342489

-			    InterObjView 	@515

-			    height     	232

-			    y_coord    	172

-			    Nested     	FALSE))

-		    (object InterObjView "StandardHostValve" @517

-			location   	(1904, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@517

-			    location   	(1904, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	295

-			    justify    	0

-			    label      	"StandardHostValve")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE47310130"

-			width      	313

-			height     	1678

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @518

-			    location   	(1904, 1472)

-			    line_color 	3342489

-			    InterObjView 	@517

-			    height     	280

-			    y_coord    	220

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @519

-			    location   	(1904, 1536)

-			    line_color 	3342489

-			    InterObjView 	@517

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE))

-		    (object InterObjView "StandardContext" @520

-			location   	(2224, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@520

-			    location   	(2224, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"StandardContext")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE47C100F1"

-			width      	300

-			height     	1678

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @521

-			    location   	(2224, 1632)

-			    line_color 	3342489

-			    InterObjView 	@520

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE))

-		    (object InterMessView "" @522

-			location   	(16, 384)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @523

-			    Parent_View 	@522

-			    location   	(407, 340)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE434C019B"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	146

-			    justify    	0

-			    label      	"invoke()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@500

-			supplier   	@506

-			Focus_Src  	@501

-			Focus_Entry 	@507

-			origin     	(239, 384)

-			terminus   	(576, 384)

-			ordinal    	0)

-		    (object InterMessView "" @524

-			location   	(16, 416)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @525

-			    Parent_View 	@524

-			    location   	(751, 372)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE436C009D"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	107

-			    justify    	0

-			    label      	"map()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@506

-			supplier   	@508

-			Focus_Src  	@507

-			Focus_Entry 	@509

-			origin     	(607, 416)

-			terminus   	(896, 416)

-			ordinal    	1)

-		    (object InterMessView "" @526

-			location   	(800, 528)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @527

-			    Parent_View 	@526

-			    location   	(751, 484)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE43830063"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	146

-			    justify    	0

-			    label      	"invoke()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@506

-			supplier   	@508

-			Focus_Src  	@507

-			Focus_Entry 	@510

-			origin     	(607, 528)

-			terminus   	(896, 528)

-			ordinal    	2)

-		    (object InterMessView "" @528

-			location   	(608, 704)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @529

-			    Parent_View 	@528

-			    location   	(568, 660)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE43B903BF"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	146

-			    justify    	0

-			    label      	"invoke()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	1)

-			line_color 	3342489

-			client     	@508

-			supplier   	@500

-			Focus_Src  	@511

-			Focus_Entry 	@502

-			origin     	(896, 704)

-			terminus   	(240, 704)

-			ordinal    	3)

-		    (object InterMessView "" @530

-			location   	(752, 896)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @531

-			    Parent_View 	@530

-			    location   	(743, 852)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE43C203A4"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	146

-			    justify    	0

-			    label      	"invoke()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@500

-			supplier   	@512

-			Focus_Src  	@503

-			Focus_Entry 	@513

-			origin     	(239, 896)

-			terminus   	(1248, 896)

-			ordinal    	4)

-		    (object SelfMessView "" @532

-			location   	(16, 944)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @533

-			    Parent_View 	@532

-			    location   	(1355, 900)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE442501B1"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	135

-			    justify    	0

-			    label      	"report()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@512

-			supplier   	@512

-			Focus_Src  	@513

-			Focus_Entry 	@514

-			origin     	(1280, 944)

-			terminus   	(1430, 944)

-			ordinal    	5)

-		    (object InterMessView "" @534

-			location   	(16, 1024)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @535

-			    Parent_View 	@534

-			    location   	(744, 980)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE46330293"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	230

-			    justify    	0

-			    label      	"invokeNext()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	1)

-			line_color 	3342489

-			client     	@512

-			supplier   	@500

-			Focus_Src  	@513

-			Focus_Entry 	@504

-			origin     	(1248, 1024)

-			terminus   	(240, 1024)

-			ordinal    	6)

-		    (object InterMessView "" @536

-			location   	(944, 1168)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @537

-			    Parent_View 	@536

-			    location   	(903, 1124)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE46E70026"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	146

-			    justify    	0

-			    label      	"invoke()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@500

-			supplier   	@515

-			Focus_Src  	@503

-			Focus_Entry 	@516

-			origin     	(239, 1168)

-			terminus   	(1568, 1168)

-			ordinal    	7)

-		    (object InterMessView "" @538

-			location   	(16, 1280)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @539

-			    Parent_View 	@538

-			    location   	(904, 1236)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE475D03A0"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	206

-			    justify    	0

-			    label      	"invokeNext"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	1)

-			line_color 	3342489

-			client     	@515

-			supplier   	@500

-			Focus_Src  	@516

-			Focus_Entry 	@505

-			origin     	(1568, 1280)

-			terminus   	(240, 1280)

-			ordinal    	8)

-		    (object InterMessView "" @540

-			location   	(1184, 1472)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @541

-			    Parent_View 	@540

-			    location   	(1063, 1428)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE476503CA"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	146

-			    justify    	0

-			    label      	"invoke()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@500

-			supplier   	@517

-			Focus_Src  	@503

-			Focus_Entry 	@518

-			origin     	(239, 1472)

-			terminus   	(1888, 1472)

-			ordinal    	9)

-		    (object SelfMessView "" @542

-			location   	(16, 1536)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @543

-			    Parent_View 	@542

-			    location   	(1995, 1492)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE47CD0167"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	295

-			    justify    	0

-			    label      	"map() //Context"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@517

-			supplier   	@517

-			Focus_Src  	@518

-			Focus_Entry 	@519

-			origin     	(1920, 1536)

-			terminus   	(2070, 1536)

-			ordinal    	10)

-		    (object InterMessView "" @544

-			location   	(16, 1632)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @545

-			    Parent_View 	@544

-			    location   	(2063, 1588)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE47D500B4"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	146

-			    justify    	0

-			    label      	"invoke()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@517

-			supplier   	@520

-			Focus_Src  	@518

-			Focus_Entry 	@521

-			origin     	(1919, 1632)

-			terminus   	(2208, 1632)

-			ordinal    	11)))

-	    (object InteractionDiagram "3. catalina_request_3"

-		mechanism_ref 	@90

-		quid       	"3DFE48A202AD"

-		title      	"3. catalina_request_3"

-		zoom       	100

-		max_height 	28350

-		max_width  	21600

-		origin_x   	612

-		origin_y   	938

-		items      	(list diagram_item_list

-		    (object InterObjView "StandardContext" @546

-			location   	(160, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@546

-			    location   	(160, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"StandardContext")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE48B001D1"

-			width      	300

-			height     	2226

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @547

-			    location   	(160, 400)

-			    line_color 	3342489

-			    InterObjView 	@546

-			    height     	1960

-			    y_coord    	1900

-			    Nested     	FALSE))

-		    (object InterObjView "StandardPipeline" @548

-			location   	(480, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@548

-			    location   	(480, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"StandardPipeline")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE48B80088"

-			width      	300

-			height     	2226

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @549

-			    location   	(480, 400)

-			    line_color 	3342489

-			    InterObjView 	@548

-			    height     	1900

-			    y_coord    	1840

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @550

-			    location   	(480, 1088)

-			    line_color 	3342489

-			    InterObjView 	@548

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE))

-		    (object InterObjView "StandardValveContext" @551

-			location   	(800, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@551

-			    location   	(800, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"StandardValveContext")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE48D000DC"

-			width      	300

-			height     	2226

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @552

-			    location   	(800, 736)

-			    line_color 	3342489

-			    InterObjView 	@551

-			    height     	1510

-			    y_coord    	1450

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @553

-			    location   	(800, 1168)

-			    line_color 	3342489

-			    InterObjView 	@551

-			    height     	1072

-			    y_coord    	1012

-			    Nested     	TRUE))

-		    (object InterObjView "StandardContextValve" @554

-			location   	(1104, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@554

-			    location   	(1104, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"StandardContextValve")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE490303A7"

-			width      	300

-			height     	2226

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @555

-			    location   	(1104, 800)

-			    line_color 	3342489

-			    InterObjView 	@554

-			    height     	468

-			    y_coord    	408

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @556

-			    location   	(1104, 848)

-			    line_color 	3342489

-			    InterObjView 	@554

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE))

-		    (object InterObjView "StandardWrapper" @557

-			location   	(1424, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@557

-			    location   	(1424, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	288

-			    justify    	0

-			    label      	"StandardWrapper")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE49370351"

-			width      	306

-			height     	2226

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @558

-			    location   	(1424, 944)

-			    line_color 	3342489

-			    InterObjView 	@557

-			    height     	264

-			    y_coord    	204

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @559

-			    location   	(1424, 1520)

-			    line_color 	3342489

-			    InterObjView 	@557

-			    height     	340

-			    y_coord    	280

-			    Nested     	FALSE))

-		    (object InterObjView "StandardWrapperValve" @560

-			location   	(1744, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@560

-			    location   	(1744, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"StandardWrapperValve")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE49890056"

-			width      	300

-			height     	2226

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @561

-			    location   	(1744, 1440)

-			    line_color 	3342489

-			    InterObjView 	@560

-			    height     	740

-			    y_coord    	680

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @562

-			    location   	(1744, 1616)

-			    line_color 	3342489

-			    InterObjView 	@560

-			    height     	184

-			    y_coord    	124

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @563

-			    location   	(1744, 2000)

-			    line_color 	3342489

-			    InterObjView 	@560

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE))

-		    (object InterObjView "ApplicationFilterChain" @564

-			location   	(2064, 224)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@564

-			    location   	(2064, 224)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"ApplicationFilterChain")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE4A1500B2"

-			width      	300

-			height     	2226

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @565

-			    location   	(2064, 1680)

-			    line_color 	3342489

-			    InterObjView 	@564

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @566

-			    location   	(2064, 1808)

-			    line_color 	3342489

-			    InterObjView 	@564

-			    height     	312

-			    y_coord    	252

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @567

-			    location   	(2064, 1872)

-			    line_color 	3342489

-			    InterObjView 	@564

-			    height     	60

-			    y_coord    	0

-			    Nested     	TRUE))

-		    (object InterMessView "" @568

-			location   	(336, 400)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @569

-			    Parent_View 	@568

-			    location   	(319, 356)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE48BE0268"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	147

-			    justify    	0

-			    label      	"invoke()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@546

-			supplier   	@548

-			Focus_Src  	@547

-			Focus_Entry 	@549

-			origin     	(175, 400)

-			terminus   	(464, 400)

-			ordinal    	0)

-		    (object InterMessView "" @570

-			location   	(16, 736)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @571

-			    Parent_View 	@570

-			    location   	(639, 692)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE48EA003A"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	147

-			    justify    	0

-			    label      	"invoke()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@548

-			supplier   	@551

-			Focus_Src  	@549

-			Focus_Entry 	@552

-			origin     	(495, 736)

-			terminus   	(784, 736)

-			ordinal    	1)

-		    (object InterMessView "" @572

-			location   	(16, 800)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @573

-			    Parent_View 	@572

-			    location   	(951, 756)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE491102D6"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	147

-			    justify    	0

-			    label      	"invoke()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@551

-			supplier   	@554

-			Focus_Src  	@552

-			Focus_Entry 	@555

-			origin     	(815, 800)

-			terminus   	(1088, 800)

-			ordinal    	2)

-		    (object SelfMessView "" @574

-			location   	(16, 848)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @575

-			    Parent_View 	@574

-			    location   	(1322, 821)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE492F033D"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	437

-			    justify    	0

-			    label      	"map //return Wrapper"

-			    pctDist    	1.346667

-			    height     	28

-			    orientation 	0)

-			line_color 	3342489

-			client     	@554

-			supplier   	@554

-			Focus_Src  	@555

-			Focus_Entry 	@556

-			origin     	(1120, 848)

-			terminus   	(1270, 848)

-			ordinal    	3)

-		    (object InterMessView "" @576

-			location   	(1264, 944)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @577

-			    Parent_View 	@576

-			    location   	(1262, 901)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE494A0151"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	147

-			    justify    	0

-			    label      	"invoke()"

-			    pctDist    	0.498270

-			    height     	44

-			    orientation 	0)

-			line_color 	3342489

-			client     	@554

-			supplier   	@557

-			Focus_Src  	@555

-			Focus_Entry 	@558

-			origin     	(1119, 944)

-			terminus   	(1408, 944)

-			ordinal    	4)

-		    (object InterMessView "" @578

-			location   	(960, 1088)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @579

-			    Parent_View 	@578

-			    location   	(952, 1044)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE495F0288"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	147

-			    justify    	0

-			    label      	"invoke()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	1)

-			line_color 	3342489

-			client     	@557

-			supplier   	@548

-			Focus_Src  	@558

-			Focus_Entry 	@550

-			origin     	(1408, 1088)

-			terminus   	(496, 1088)

-			ordinal    	5)

-		    (object InterMessView "" @580

-			location   	(16, 1168)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @581

-			    Parent_View 	@580

-			    location   	(639, 1124)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE4976015D"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	147

-			    justify    	0

-			    label      	"invoke()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@548

-			supplier   	@551

-			Focus_Src  	@549

-			Focus_Entry 	@553

-			origin     	(495, 1168)

-			terminus   	(784, 1168)

-			ordinal    	6)

-		    (object InterMessView "" @582

-			location   	(1296, 1440)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @583

-			    Parent_View 	@582

-			    location   	(1271, 1396)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE4993023C"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	147

-			    justify    	0

-			    label      	"invoke()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@551

-			supplier   	@560

-			Focus_Src  	@553

-			Focus_Entry 	@561

-			origin     	(815, 1440)

-			terminus   	(1728, 1440)

-			ordinal    	7)

-		    (object InterMessView "" @584

-			location   	(1616, 1520)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @585

-			    Parent_View 	@584

-			    location   	(1584, 1476)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE49EC004F"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	175

-			    justify    	0

-			    label      	"allocate()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	1)

-			line_color 	3342489

-			client     	@560

-			supplier   	@557

-			Focus_Src  	@561

-			Focus_Entry 	@559

-			origin     	(1728, 1520)

-			terminus   	(1440, 1520)

-			ordinal    	8)

-		    (object InterMessView "" @586

-			location   	(1616, 1616)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @587

-			    Parent_View 	@586

-			    location   	(1583, 1572)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE4A200067"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	242

-			    justify    	0

-			    label      	"return servlet"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@557

-			supplier   	@560

-			Focus_Src  	@559

-			Focus_Entry 	@562

-			origin     	(1439, 1616)

-			terminus   	(1728, 1616)

-			ordinal    	9)

-		    (object InterMessView "" @588

-			location   	(1936, 1680)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @589

-			    Parent_View 	@588

-			    location   	(1937, 1636)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE4A29027E"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	343

-			    justify    	0

-			    label      	"createFilterChain()"

-			    pctDist    	0.619377

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@560

-			supplier   	@564

-			Focus_Src  	@562

-			Focus_Entry 	@565

-			origin     	(1759, 1680)

-			terminus   	(2048, 1680)

-			ordinal    	10)

-		    (object InterMessView "" @590

-			location   	(16, 1808)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @591

-			    Parent_View 	@590

-			    location   	(1902, 1764)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE4A490283"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	170

-			    justify    	0

-			    label      	"doFilter()"

-			    pctDist    	0.498270

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@560

-			supplier   	@564

-			Focus_Src  	@561

-			Focus_Entry 	@566

-			origin     	(1759, 1808)

-			terminus   	(2048, 1808)

-			ordinal    	11)

-		    (object InterObjView "$UNNAMED$0" @592

-			location   	(2240, 368)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	TRUE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object ItemLabel

-			    Parent_View 	@592

-			    location   	(2240, 368)

-			    fill_color 	13434879

-			    anchor_loc 	1

-			    nlines     	2

-			    max_width  	282

-			    justify    	0

-			    label      	"")

-			stereotype 	(object ItemLabel

-			    Parent_View 	@592

-			    location   	(2240, 368)

-			    fill_color 	13434879

-			    anchor     	10

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	222

-			    justify    	0

-			    label      	"<<Servlet>>")

-			icon_style 	"Icon"

-			line_color 	3342489

-			fill_color 	13434879

-			quidu      	"3DFE4BAE0056"

-			width      	300

-			height     	2082

-			icon_height 	0

-			icon_width 	0

-			icon_y_offset 	0

-			annotation 	1

-			Focus_Of_Control 	(object Focus_Of_Control "" @593

-			    location   	(2240, 428)

-			    InterObjView 	@592

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE)

-			Focus_Of_Control 	(object Focus_Of_Control "" @594

-			    location   	(2240, 1984)

-			    line_color 	3342489

-			    InterObjView 	@592

-			    height     	60

-			    y_coord    	0

-			    Nested     	FALSE))

-		    (object SelfMessView "" @595

-			location   	(16, 1872)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @596

-			    Parent_View 	@595

-			    location   	(2155, 1828)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE4C2701C3"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	308

-			    justify    	0

-			    label      	"internalDoFilter()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@564

-			supplier   	@564

-			Focus_Src  	@566

-			Focus_Entry 	@567

-			origin     	(2080, 1872)

-			terminus   	(2230, 1872)

-			ordinal    	12)

-		    (object InterMessView "" @597

-			location   	(2144, 1984)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @598

-			    Parent_View 	@597

-			    location   	(2151, 1940)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE4CA502BF"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	162

-			    justify    	0

-			    label      	"service()"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	0)

-			line_color 	3342489

-			client     	@564

-			supplier   	@592

-			Focus_Src  	@566

-			Focus_Entry 	@594

-			origin     	(2079, 1984)

-			terminus   	(2224, 1984)

-			ordinal    	13)

-		    (object InterMessView "" @599

-			location   	(16, 2000)

-			font       	(object Font

-			    size       	10

-			    face       	"Arial"

-			    bold       	FALSE

-			    italics    	FALSE

-			    underline  	FALSE

-			    strike     	FALSE

-			    color      	0

-			    default_color 	TRUE)

-			label      	(object SegLabel @600

-			    Parent_View 	@599

-			    location   	(1904, 1956)

-			    font       	(object Font

-				size       	10

-				face       	"Arial"

-				bold       	FALSE

-				italics    	FALSE

-				underline  	FALSE

-				strike     	FALSE

-				color      	0

-				default_color 	TRUE)

-			    quidu      	"3DFE4CB4025B"

-			    anchor_loc 	1

-			    nlines     	1

-			    max_width  	113

-			    justify    	0

-			    label      	"return"

-			    pctDist    	0.500000

-			    height     	45

-			    orientation 	1)

-			line_color 	3342489

-			client     	@564

-			supplier   	@560

-			Focus_Src  	@566

-			Focus_Entry 	@563

-			origin     	(2048, 2000)

-			terminus   	(1760, 2000)

-			ordinal    	14)))))

-    root_subsystem 	(object SubSystem "Component View"

-	quid       	"3DFDF6CE036A"

-	physical_models 	(list unit_reference_list)

-	physical_presentations 	(list unit_reference_list

-	    (object Module_Diagram "Main"

-		quid       	"3DFDF6D201FD"

-		title      	"Main"

-		zoom       	100

-		max_height 	28350

-		max_width  	21600

-		origin_x   	0

-		origin_y   	0

-		items      	(list diagram_item_list))))

-    process_structure 	(object Processes

-	quid       	"3DFDF6CE0373"

-	ProcsNDevs 	(list

-	    (object Process_Diagram "Deployment View"

-		quid       	"3DFDF6CE0387"

-		title      	"Deployment View"

-		zoom       	100

-		max_height 	28350

-		max_width  	21600

-		origin_x   	0

-		origin_y   	0

-		items      	(list diagram_item_list))))

-    properties 	(object Properties

-	attributes 	(list Attribute_Set

-	    (object Attribute

-		tool       	"Data Modeler"

-		name       	"propertyId"

-		value      	"809135966")

-	    (object Attribute

-		tool       	"Data Modeler"

-		name       	"default__Project"

-		value      	(list Attribute_Set

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"project"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"TableCounter"

-			value      	0)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"ViewCounter"

-			value      	0)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"DomainCounter"

-			value      	0)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"SPPackageCounter"

-			value      	0)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"TriggerCounter"

-			value      	0)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"IndexCounter"

-			value      	0)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"ConstraintCounter"

-			value      	0)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"StoreProcedureCounter"

-			value      	0)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"PrimaryKeyCounter"

-			value      	0)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"ForeignKeyCounter"

-			value      	0)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"JoinCounter"

-			value      	0)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"TableSpaceCounter"

-			value      	0)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"cONTAINERCounter"

-			value      	0)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"TablePrefix"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"ViewPrefix"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"DomainPrefix"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"TriggerPrefix"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"IndexPrefix"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"ConstraintPrefix"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"StoreProcedurePrefix"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"PrimaryKeyPrefix"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"ForeignKeyPrefix"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"TableSpacePrefix"

-			value      	"")))

-	    (object Attribute

-		tool       	"Data Modeler"

-		name       	"default__Module-Spec"

-		value      	(list Attribute_Set

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"dmItem"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"DMName"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"IsDatabase"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"TargetDatabase"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"Location"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"IsTableSpace"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"TableSpaceType"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"IsDeault"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"BufferPool"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"ExtentSize"

-			value      	1)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"PrefetchSize"

-			value      	1)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"PageSize"

-			value      	4)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"ManagedBy"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"ContainerList"

-			value      	"")))

-	    (object Attribute

-		tool       	"Data Modeler"

-		name       	"default__Category"

-		value      	(list Attribute_Set

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"dmItem"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"DMName"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"dmSchema"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"dmDomainPackage"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"IsSchema"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"IsDomainPackage"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"IsRootSchema"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"IsRootDomainPackage"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"IsSchemaPackage"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"DatabaseID"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"DBMS"

-			value      	"")))

-	    (object Attribute

-		tool       	"Data Modeler"

-		name       	"default__Class"

-		value      	(list Attribute_Set

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"dmItem"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"DMName"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"IsTable"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"IsView"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"IsDomain"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"IsSPPackage"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"Synonymns"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"TableSpaceID"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"SourceId"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"SourceType"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"CorrelationName"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"SelectClause"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"IsUpdateable"

-			value      	TRUE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"CheckOption"

-			value      	"None")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"IsSnapShot"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"IsDistinct"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"PersistToServer"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"IsPackage"

-			value      	FALSE)))

-	    (object Attribute

-		tool       	"Data Modeler"

-		name       	"default__Attribute"

-		value      	(list Attribute_Set

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"dmItem"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"DMName"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"Ordinal"

-			value      	0)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"IsIdentity"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"IsUnique"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"NullsAllowed"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"Length"

-			value      	0)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"Scale"

-			value      	0)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"ColumnType"

-			value      	"Native")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"ForBitData"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"DefaultValueType"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"DefaultValue"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"SourceId"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"SourceType"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"OID"

-			value      	FALSE)))

-	    (object Attribute

-		tool       	"Data Modeler"

-		name       	"default__Association"

-		value      	(list Attribute_Set

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"dmItem"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"DMName"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"IsRelationship"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"SourceId"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"SourceType"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"RIMethod"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"ParentUpdateRule"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"ParentUpdateRuleName"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"ParentDeleteRule"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"ParentDeleteRuleName"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"ChildInsertRestrict"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"ChildInsertRestrictName"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"ChildMultiplicity"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"ChildMultiplicityName"

-			value      	"")))

-	    (object Attribute

-		tool       	"Data Modeler"

-		name       	"default__Role"

-		value      	(list Attribute_Set

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"dmItem"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"DMName"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"ConstraintName"

-			value      	"")))

-	    (object Attribute

-		tool       	"Data Modeler"

-		name       	"default__Operation"

-		value      	(list Attribute_Set

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"dmItem"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"DMName"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"IsConstraint"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"ConstraintType"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"IsIndex"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"IsTrigger"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"IsStoredProcedure"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"IsCluster"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"TableSpace"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"FillFactor"

-			value      	0)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"KeyList"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"CheckPredicate"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"IsUnique"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"DeferalMode"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"InitialCheckTime"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"TriggerType"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"IsInsertEvent"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"IsUpdateEvent"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"IsDeleteEvent"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"RefOldTable"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"RefNewTable"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"RefOldRow"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"RefNewRow"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"IsRow"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"WhenClause"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"Language"

-			value      	"SQL")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"ProcType"

-			value      	"Procedure")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"IsDeterministic"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"ParameterStyle"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"ReturnedNull"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"ExternalName"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"Length"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"Scale"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"ForBitData"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"DefaultValue"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"DefaultValueType"

-			value      	"")))

-	    (object Attribute

-		tool       	"Data Modeler"

-		name       	"default__Parameter"

-		value      	(list Attribute_Set

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"dmItem"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"DMName"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"IsInParameter"

-			value      	TRUE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"IsOutParameter"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"Ordinal"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"Length"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"Scale"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"ForBitData"

-			value      	FALSE)

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"DefaultValueType"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"DefaultValue"

-			value      	"")

-		    (object Attribute

-			tool       	"Data Modeler"

-			name       	"OperationID"

-			value      	"")))

-	    (object Attribute

-		tool       	"Data Modeler"

-		name       	"HiddenTool"

-		value      	FALSE)

-	    (object Attribute

-		tool       	"Data Modeler Communicator"

-		name       	"HiddenTool"

-		value      	FALSE)

-	    (object Attribute

-		tool       	"Deploy"

-		name       	"HiddenTool"

-		value      	FALSE)

-	    (object Attribute

-		tool       	"Rose Model Integrator"

-		name       	"HiddenTool"

-		value      	FALSE)

-	    (object Attribute

-		tool       	"Rose Web Publisher"

-		name       	"HiddenTool"

-		value      	FALSE)

-	    (object Attribute

-		tool       	"Web Modeler"

-		name       	"HiddenTool"

-		value      	FALSE))

-	quid       	"3DFDF6CE0374"))

diff --git a/tomcat-uid/webapps/docs/architecture/startup.html b/tomcat-uid/webapps/docs/architecture/startup.html
index 1c3ce85..d86b97e 100644
--- a/tomcat-uid/webapps/docs/architecture/startup.html
+++ b/tomcat-uid/webapps/docs/architecture/startup.html
@@ -1,19 +1,94 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat Architecture (6.0.41) - Startup</title><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Architecture (7.0.77) - Startup</title><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="overview.html">Overview</a></li><li><a href="startup.html">Server Startup</a></li><li><a href="requestProcess.html">Request Process</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat Architecture</h1><h2>Startup</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Server Startup"><!--()--></a><a name="Server_Startup"><strong>Server Startup</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Architecture Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="overview.html">Overview</a></li><li><a href="startup.html">Server Startup</a></li><li><a href="requestProcess.html">Request Process</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Startup</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Server Startup"><!--()--></a><a name="Server_Startup"><strong>Server Startup</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>

 This page describes how the Tomcat server starts up.  There are several

 different ways to start tomcat, including:

+</p>

 <ul>

   <li>From the command line.</li>

   <li>From a Java program as an embedded server.</li>

   <li>Automatically as a Windows service.</li>

 </ul>

-</p>

 

 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="description"><strong>description</strong></a></font></td></tr><tr><td><blockquote>

 <p>

@@ -39,6 +114,31 @@
 

 </blockquote></td></tr></table>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/architecture/startup.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/architecture/startup/serverStartup.txt b/tomcat-uid/webapps/docs/architecture/startup/serverStartup.txt
index 7eac279..2443812 100644
--- a/tomcat-uid/webapps/docs/architecture/startup/serverStartup.txt
+++ b/tomcat-uid/webapps/docs/architecture/startup/serverStartup.txt
@@ -13,126 +13,127 @@
   See the License for the specific language governing permissions and

   limitations under the License.

 

-Tomcat 5 Startup Sequence

+Tomcat Startup Sequence

 

 Sequence 1. Start from Command Line

 Class: org.apache.catalina.startup.Bootstrap

 What it does:

-	a) Set up classloaders 

-		commonLoader (common)-> System Loader

-		sharedLoader (shared)-> commonLoader -> System Loader

-		catalinaLoader(server) -> commonLoader -> System Loader

-	b) Load startup class (reflection)

-		org.apache.catalina.startup.Catalina

-		setParentClassloader -> sharedLoader

-		Thread.contextClassloader -> catalinaLoader

-	c) Bootstrap.daemon.init() complete

-	

-Sequence 2. Process command line argument (start, startd, stop, stopd)

-Class: org.apache.catalina.startup.Bootstrap (assume command->start)

-What it does: 

-	a) Catalina.setAwait(true);

-	b) Catalina.load()

-		b1) initDirs() -> set properties like 

-		                  catalina.home

-		                  catalina.base == catalina.home (most cases)

-		b2) initNaming

-			setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY,

-				    org.apache.naming.java.javaURLContextFactory ->default)

-		b3) createStartDigester() 

-			Configures a digester for the main server.xml elements like

-			org.apache.catalina.core.StandardServer (can change of course :)

-			org.apache.catalina.deploy.NamingResources

-				Stores naming resources in the J2EE JNDI tree

-			org.apache.catalina.LifecycleListener

-				implements events for start/stop of major components

-			org.apache.catalina.core.StandardService

-				The single entry for a set of connectors,

-				so that a container can listen to multiple connectors

-				ie, single entry

-			org.apache.coyote.tomcat5.CoyoteConnector

-				Connectors to listen for incoming requests only

-			It also adds the following rulesets to the digester

-				NamingRuleSet

-				EngineRuleSet

-				HostRuleSet

-				ContextRuleSet

-		b4) Load the server.xml and parse it using the digester

-		    Parsing the server.xml using the digester is an automatic

-		    XML-object mapping tool, that will create the objects defined in server.xml

-		    Startup of the actual container has not started yet.

-		b5) Assigns System.out and System.err to the SystemLogHandler class

-		b6) Calls initialize on all components, this makes each object register itself with the 

-		    JMX agent.

-		    During the process call the Connectors also initialize the adapters.

-		    The adapters are the components that do the request pre-processing.

-		    Typical adapters are HTTP1.1 (default if no protocol is specified,

-		    org.apache.coyote.http11.Http11Protocol)

-		    AJP1.3 for mod_jk etc.

+    a) Set up classloaders

+        commonLoader (common)-> System Loader

+        sharedLoader (shared)-> commonLoader -> System Loader

+        catalinaLoader(server) -> commonLoader -> System Loader

+        (by default the commonLoader is used for the

+         sharedLoader and the serverLoader)

+    b) Load startup class (reflection)

+        org.apache.catalina.startup.Catalina

+        setParentClassloader -> sharedLoader

+        Thread.contextClassloader -> catalinaLoader

+    c) Bootstrap.daemon.init() complete

 

-	c) Catalina.start()

-		c1) Starts the NamingContext and binds all JNDI references into it

-		c2) Starts the services under <Server> which are:

-			StandardService -> starts Engine (ContainerBase ->Logger,Loader,Realm,Cluster etc)

-		c3) StandardHost (started by the service)

-				Configures a ErrorReportValvem to do proper HTML output for different HTTP 

-				errors codes

-				Starts the Valves in the pipeline (at least the ErrorReportValve)

-				Configures the StandardHostValve, 

-					this valves ties the Webapp Class loader to the thread context

-					it also finds the session for the request

-					and invokes the context pipeline

-				Starts the HostConfig component

-					This component deploys all the webapps

-						(webapps & conf/Catalina/localhost/*.xml)

-					Webapps are installed using the deployer (StandardHostDeployer)

-					The deployer will create a Digester for your context, this digester

-					will then invoke ContextConfig.start()

-						The ContextConfig.start() will process the default web.xml (conf/web.xml)

-						and then process the applications web.xml (WEB-INF/web.xml)

-						

-		c4) During the lifetime of the container (StandardEngine) there is a background thread that 

-		    keeps checking if the context has changed. If a context changes (timestamp of war file, 

-		    context xml file, web.xml) then a reload is issued (stop/remove/deploy/start)

-		    

-	d) Tomcat receives a request on an HTTP port

-	    d1) The request is received by a separate thread which is waiting in the PoolTcpEndPoint 

-	         class. It is waiting for a request in a regular ServerSocket.accept() method.

-	         When a request is received, this thread wakes up.

-	    d2) The PoolTcpEndPoint assigns the a TcpConnection to handle the request. 

-	        It also supplies a JMX object name to the catalina container (not used I believe)

-	    d3) The processor to handle the request in this case is Coyote Http11Processor, 

-	        and the process method is invoked.

-	        This same processor is also continuing to check the input stream of the socket

-	        until the keep alive point is reached or the connection is disconnected.

-	    d4) The HTTP request is parsed using an internal buffer class (Coyote Http11 Internal Buffer)

-	        The buffer class parses the request line, the headers, etc and store the result in a 

-	        Coyote request (not an HTTP request) This request contains all the HTTP info, such

-	        as servername, port, scheme, etc.

-	    d5) The processor contains a reference to an Adapter, in this case it is the 

-	        Coyote Tomcat 5 Adapter. Once the request has been parsed, the Http11 processor

-	        invokes service() on the adapter. In the service method, the Request contains a 

-	        CoyoteRequest and CoyoteRespons (null for the first time)

-	        The CoyoteRequest(Response) implements HttpRequest(Response) and HttpServletRequest(Response)

-	        The adapter parses and associates everything with the request, cookies, the context through a 

-	        Mapper, etc

-	    d6) When the parsing is finished, the CoyoteAdapter invokes its container (StandardEngine)

-	        and invokes the invoke(request,response) method.

-	        This initiates the HTTP request into the Catalina container starting at the engine level

-	    d7) The StandardEngine.invoke() simply invokes the container pipeline.invoke()

-	    d8) By default the engine only has one valve the StandardEngineValve, this valve simply

-	        invokes the invoke() method on the Host pipeline (StandardHost.getPipeLine())

-	    d9) the StandardHost has two valves by default, the StandardHostValve and the ErrorReportValve

-	    d10) The standard host valve associates the correct class loader with the current thread

-	         It also retrieves the Manager and the session associated with the request (if there is one)

-	         If there is a session access() is called to keep the session alive

-	    d11) After that the StandardHostValve invokes the pipeline on the context associated

-	         with the request.

-	    d12) The first valve that gets invoked by the Context pipeline is the FormAuthenticator

-	         valve. Then the StandardContextValve gets invoke.

-	         The StandardContextValve invokes any context listeners associated with the context.

-	         Next it invokes the pipeline on the Wrapper component (StandardWrapperValve)

-	    d13) During the invocation of the StandardWrapperValve, the JSP wrapper (Jasper) gets invoked

-	         This results in the actual compilation of the JSP.

-	         And then invokes the actual servlet.

-	e) Invocation of the servlet class

+Sequence 2. Process command line argument (start, stop)

+Class: org.apache.catalina.startup.Bootstrap (assume command->start)

+What it does:

+    a) Catalina.setAwait(true);

+    b) Catalina.load()

+        b1) initDirs() -> set properties like

+                          catalina.home

+                          catalina.base == catalina.home (most cases)

+        b2) initNaming

+            setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY,

+                    org.apache.naming.java.javaURLContextFactory ->default)

+        b3) createStartDigester()

+            Configures a digester for the main server.xml elements like

+            org.apache.catalina.core.StandardServer (can change of course :)

+            org.apache.catalina.deploy.NamingResources

+                Stores naming resources in the J2EE JNDI tree

+            org.apache.catalina.LifecycleListener

+                implements events for start/stop of major components

+            org.apache.catalina.core.StandardService

+                The single entry for a set of connectors,

+                so that a container can listen to multiple connectors

+                ie, single entry

+            org.apache.catalina.Connector

+                Connectors to listen for incoming requests only

+            It also adds the following rulesets to the digester

+                NamingRuleSet

+                EngineRuleSet

+                HostRuleSet

+                ContextRuleSet

+        b4) Load the server.xml and parse it using the digester

+            Parsing the server.xml using the digester is an automatic

+            XML-object mapping tool, that will create the objects defined in server.xml

+            Startup of the actual container has not started yet.

+        b5) Assigns System.out and System.err to the SystemLogHandler class

+        b6) Calls initialize on all components, this makes each object register itself with the

+            JMX agent.

+            During the process call the Connectors also initialize the adapters.

+            The adapters are the components that do the request pre-processing.

+            Typical adapters are HTTP1.1 (default if no protocol is specified,

+            org.apache.coyote.http11.Http11Protocol)

+            AJP1.3 for mod_jk etc.

+

+    c) Catalina.start()

+        c1) Starts the NamingContext and binds all JNDI references into it

+        c2) Starts the services under <Server> which are:

+            StandardService -> starts Engine (ContainerBase -> Realm,Cluster etc)

+        c3) StandardHost (started by the service)

+                Configures a ErrorReportValvem to do proper HTML output for different HTTP

+                errors codes

+                Starts the Valves in the pipeline (at least the ErrorReportValve)

+                Configures the StandardHostValve,

+                    this valves ties the Webapp Class loader to the thread context

+                    it also finds the session for the request

+                    and invokes the context pipeline

+                Starts the HostConfig component

+                    This component deploys all the webapps

+                        (webapps & conf/Catalina/localhost/*.xml)

+                    HostConfig will create a Digester for your context, this digester

+                    will then invoke ContextConfig.start()

+                        The ContextConfig.start() will process the default web.xml (conf/web.xml)

+                        and then process the applications web.xml (WEB-INF/web.xml)

+

+        c4) During the lifetime of the container (StandardEngine) there is a background thread that

+            keeps checking if the context has changed. If a context changes (timestamp of war file,

+            context xml file, web.xml) then a reload is issued (stop/remove/deploy/start)

+

+    d) Tomcat receives a request on an HTTP port

+        d1) The request is received by a separate thread which is waiting in the ThreadPoolExecutor

+             class. It is waiting for a request in a regular ServerSocket.accept() method.

+             When a request is received, this thread wakes up.

+        d2) The ThreadPoolExecutor assigns the a TaskThread to handle the request.

+            It also supplies a JMX object name to the catalina container (not used I believe)

+        d3) The processor to handle the request in this case is Coyote Http11Processor,

+            and the process method is invoked.

+            This same processor is also continuing to check the input stream of the socket

+            until the keep alive point is reached or the connection is disconnected.

+        d4) The HTTP request is parsed using an internal buffer class (Http11InputBuffer)

+            The buffer class parses the request line, the headers, etc and store the result in a

+            Coyote request (not an HTTP request) This request contains all the HTTP info, such

+            as servername, port, scheme, etc.

+        d5) The processor contains a reference to an Adapter, in this case it is the

+            CoyoteAdapter. Once the request has been parsed, the Http11Processor

+            invokes service() on the adapter. In the service method, the Request contains a

+            CoyoteRequest and CoyoteResponse (null for the first time)

+            The CoyoteRequest(Response) implements HttpRequest(Response) and HttpServletRequest(Response)

+            The adapter parses and associates everything with the request, cookies, the context through a

+            Mapper, etc

+        d6) When the parsing is finished, the CoyoteAdapter invokes its container (StandardEngine)

+            and invokes the invoke(request,response) method.

+            This initiates the HTTP request into the Catalina container starting at the engine level

+        d7) The StandardEngine.invoke() simply invokes the container pipeline.invoke()

+        d8) By default the engine only has one valve the StandardEngineValve, this valve simply

+            invokes the invoke() method on the Host pipeline (StandardHost.getPipeLine())

+        d9) the StandardHost has two valves by default, the StandardHostValve and the ErrorReportValve

+        d10) The standard host valve associates the correct class loader with the current thread

+             It also retrieves the Manager and the session associated with the request (if there is one)

+             If there is a session access() is called to keep the session alive

+        d11) After that the StandardHostValve invokes the pipeline on the context associated

+             with the request.

+        d12) The first valve that gets invoked by the Context pipeline is the FormAuthenticator

+             valve. Then the StandardContextValve gets invoke.

+             The StandardContextValve invokes any context listeners associated with the context.

+             Next it invokes the pipeline on the Wrapper component (StandardWrapperValve)

+        d13) During the invocation of the StandardWrapperValve, the JSP wrapper (Jasper) gets invoked

+             This results in the actual compilation of the JSP.

+             And then invokes the actual servlet.

+    e) Invocation of the servlet class

diff --git a/tomcat-uid/webapps/docs/balancer-howto.html b/tomcat-uid/webapps/docs/balancer-howto.html
index ebee858..797fdb3 100644
--- a/tomcat-uid/webapps/docs/balancer-howto.html
+++ b/tomcat-uid/webapps/docs/balancer-howto.html
@@ -1,9 +1,84 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 6.0 (6.0.41) - Load Balancer HOW-TO</title><meta name="author" content="Yoav Shapira"><meta name="author" content="Remy Maucherat"><meta name="author" content="Andy Oliver"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - Load Balancer HOW-TO</title><meta name="author" content="Yoav Shapira"><meta name="author" content="Remy Maucherat"><meta name="author" content="Andy Oliver"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat 6.0</h1><h2>Load Balancer HOW-TO</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Load Balancer HOW-TO</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Using_the_JK_1.2.x_native_connector">Using the JK 1.2.x native connector</a></li><li><a href="#Using_Apache_HTTP_Server_2.x_with_mod_proxy">Using Apache HTTP Server 2.x with mod_proxy</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Using the JK 1.2.x native connector"><!--()--></a><a name="Using_the_JK_1.2.x_native_connector"><strong>Using the JK 1.2.x native connector</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -16,6 +91,31 @@
 Apache HTTP Server 2.0, but mod_proxy will have to be compiled separately using the code

 from Apache HTTP Server 2.2.

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/balancer-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/building.html b/tomcat-uid/webapps/docs/building.html
index 738adcb..d6d7690 100644
--- a/tomcat-uid/webapps/docs/building.html
+++ b/tomcat-uid/webapps/docs/building.html
@@ -1,132 +1,248 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 6.0 (6.0.41) - Building Tomcat</title><meta name="author" content="Remy Maucherat"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - Building Tomcat</title><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat 6.0</h1><h2>Building Tomcat</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

-<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Download_a_Java_Development_Kit_(JDK)_release_(version_5)">Download a Java Development Kit (JDK) release (version 5)</a></li><li><a href="#Install_Apache_Ant_1.6.5_or_later">Install Apache Ant 1.6.5 or later</a></li><li><a href="#Checkout_or_obtain_the_source_code_for_Tomcat_6.0">Checkout or obtain the source code for Tomcat 6.0</a></li><li><a href="#Building_Tomcat">Building Tomcat</a></li><li><a href="#Building_with_Eclipse">Building with Eclipse</a></li><li><a href="#Building_with_other_IDEs">Building with other IDEs</a></li></ul>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Building Tomcat</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Download_Java_Development_Kit_(JDK)_versions_6_and_7">Download Java Development Kit (JDK) versions 6 and 7</a></li><li><a href="#Install_Apache_Ant_1.8.2_or_later">Install Apache Ant 1.8.2 or later</a></li><li><a href="#Checkout_or_obtain_the_source_code_for_Tomcat_7.0">Checkout or obtain the source code for Tomcat 7.0</a></li><li><a href="#Configure_download_area">Configure download area</a></li><li><a href="#Building_Tomcat">Building Tomcat</a></li><li><a href="#Building_with_Eclipse">Building with Eclipse</a></li><li><a href="#Building_with_other_IDEs">Building with other IDEs</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>

-Building Apache Tomcat from SVN is very easy, and is the first step to contributing to

-Tomcat. The following is a step by step TODO list.

+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 <a href="BUILDING.txt">BUILDING.txt</a>.

+The following is a quick step by step guide.

 </p>

 

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Download a Java Development Kit (JDK) release (version 5)"><!--()--></a><a name="Download_a_Java_Development_Kit_(JDK)_release_(version_5)"><strong>Download a Java Development Kit (JDK) release (version 5)</strong></a></font></td></tr><tr><td><blockquote>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Download Java Development Kit (JDK) versions 6 and 7"><!--()--></a><a name="Download_Java_Development_Kit_(JDK)_versions_6_and_7"><strong>Download Java Development Kit (JDK) versions 6 and 7</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>

-The JDK can be downloaded following the "Previous Releases" link from

-<a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">here</a>.

+  Building Apache Tomcat requires a Java 6 JDK to be installed and optionally

+  a Java 7 JDK installed in parallel with Java 6 one. The Java 7 JDK is only

+  required if you wish to build Tomcat with JSR-356 (Java WebSocket 1.1)

+  support.

 </p>

 

 <p>

-<b>IMPORTANT</b>: Set an environment variable JAVA_HOME to the pathname of the 

-directory into which you installed the JDK release.

+  You can download JDKs from Oracle<br>

+  <a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">http://www.oracle.com/technetwork/java/javase/downloads/index.html</a><br>

+  or from another JDK vendor.

 </p>

 

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Install Apache Ant 1.6.5 or later"><!--()--></a><a name="Install_Apache_Ant_1.6.5_or_later"><strong>Install Apache Ant 1.6.5 or later</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+  <b>IMPORTANT</b>: Set an environment variable JAVA_HOME to the pathname of

+  the directory into which you installed the Java 6 JDK. The path to Java 7

+  JDK is configured in <code>build.properties</code> file (see below).

+</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Install Apache Ant 1.8.2 or later"><!--()--></a><a name="Install_Apache_Ant_1.8.2_or_later"><strong>Install Apache Ant 1.8.2 or later</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>

-Download a binary distribution of Ant 1.6.5 or later from 

+Download a binary distribution of Ant 1.8.2 or later from

 <a href="http://ant.apache.org/bindownload.cgi">here</a>.

 </p>

 

 <p>

 Unpack the binary distribution into a convenient location so that the

 Ant release resides in its own directory (conventionally named

-"apache-ant-1.6.x").  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.

+<code>apache-ant-1.8.x</code>).  For the remainder of this guide,

+the symbolic name <code>${ant.home}</code> is used to refer to the full pathname of

+ the Ant installation directory.

 </p>

 

 <p>

-Create an ANT_HOME environment variable to point the directory ${ant.home}, 

+<b>IMPORTANT</b>: Create an ANT_HOME environment variable to point the directory <code>${ant.home}</code>,

 and modify the PATH environment variable to include directory

-"${ant.home}/bin" in its list.  This makes the "ant" command line script

+<code>${ant.home}/bin</code> in its list.  This makes the <code>ant</code> command line script

 available, which will be used to actually perform the build.

 </p>

 

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Checkout or obtain the source code for Tomcat 6.0"><!--()--></a><a name="Checkout_or_obtain_the_source_code_for_Tomcat_6.0"><strong>Checkout or obtain the source code for Tomcat 6.0</strong></a></font></td></tr><tr><td><blockquote>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Checkout or obtain the source code for Tomcat 7.0"><!--()--></a><a name="Checkout_or_obtain_the_source_code_for_Tomcat_7.0"><strong>Checkout or obtain the source code for Tomcat 7.0</strong></a></font></td></tr><tr><td><blockquote>

 

   <p>

-  Tomcat 6.0 SVN repository URL:

-  <a href="http://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk/">http://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk/</a>

+  Tomcat 7.0 SVN repository URL:

+  <a href="http://svn.apache.org/repos/asf/tomcat/tc7.0.x/trunk/">http://svn.apache.org/repos/asf/tomcat/tc7.0.x/trunk/</a>

   </p>

-

   <p>

-  Download a source package from:

-  <a href="http://tomcat.apache.org/download-60.cgi">http://tomcat.apache.org/download-60.cgi</a>

+  Tomcat source packages:

+  <a href="http://tomcat.apache.org/download-70.cgi">http://tomcat.apache.org/download-70.cgi</a>.

   </p>

 

   <p>

   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. The location where the source has been

-  placed will be referred as <code>${tomcat.source}</code>.

+  source package. For the remainder of this guide, the symbolic name

+  <code>${tomcat.source}</code> is used to refer to the

+  location where the source has been placed.

   </p>

 

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Configure download area"><!--()--></a><a name="Configure_download_area"><strong>Configure download area</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>

+  Building Tomcat involves downloading a number of libraries that it depends on.

+  It is strongly recommended to configure download area for those libraries.

+</p>

+

+<p>

+  By default the build is configured to download the dependencies into the

+  <code>${user.home}/tomcat-build-libs</code> directory. You can change this

+  (see below) but it must be an absolute path.

+</p>

+

+<p>

+  The build is controlled by creating a

+  <code>${tomcat.source}/build.properties</code> file. It can be used to

+  redefine any property that is present in <code>build.properties.default</code>

+  and <code>build.xml</code> files. The <code>build.properties</code> file

+  does not exist by default. You have to create it.

+</p>

+

+<p>

+  The download area is defined by property <code>base.path</code>. For example:

+</p>

+

+<div class="codeBox"><pre><code># ----- 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</code></pre></div>

+

+<p>

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

+</p>

+

+<p>

+  Another example:

+</p>

+

+<div class="codeBox"><pre><code>base.path=${user.dir}/../libraries-tomcat7.0</code></pre></div>

+

+<p>

+  Users who access the Internet through a proxy must use the properties

+  file to indicate to Ant the proxy configuration:

+</p>

+

+<div class="codeBox"><pre><code># ----- Proxy setup -----

+proxy.host=proxy.domain

+proxy.port=8080

+proxy.use=on</code></pre></div>

+

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Building Tomcat"><!--()--></a><a name="Building_Tomcat"><strong>Building Tomcat</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>

-Use the following commands:

-<code><br>

-    cd ${tomcat.source}<br>

-    ant download<br>

-    ant<br>

-</code>

+  If you have installed a Java 7 JDK and wish to build Tomcat with JSR-356

+  (Java WebSocket 1.1) support, set <code>java.7.home</code> property in

+  file <code>${tomcat.source}/build.properties</code> to the location of

+  the Java 7 JDK installation.

 </p>

 

 <p>

-<b>WARNING:</b> Running "ant download" command will download libraries required

-  to build Tomcat to the <code>/usr/share/java</code> directory by default.

-  On a typical Linux or MacOX system, an ordinary user

-  will not have access to write to this directory, and, even if you do,

-  it may not be appropriate for you to write there. On Windows

-  this usually corresponds to the <code>C:\usr\share\java</code> directory,

-  unless Cygwin is used. Read below to learn how to customize the directory

-  used to download the binaries.

+  An example, using 32-bit JDK on a 64-bit Windows system:

+</p>

+

+<div class="codeBox"><pre><code># Location of Java 7 JDK

+java.7.home=C:/Program Files (x86)/Java/jdk1.7.0_72</code></pre></div>

+

+<p>

+Use the following commands to build Tomcat:

 </p>

 

 <p>

-<b>NOTE:</b> Users accessing the Internet through a proxy must use a properties

-  file to indicate to Ant the proxy configuration. Read below.

+<code>cd ${tomcat.source}</code><br>

+<code>ant</code>

 </p>

 

 <p>

-The build can be controlled by creating a ${tomcat.source}/build.properties

-  file, and adding the following content to it:

-<code><br>

-    # ----- Proxy setup -----<br>

-    # Uncomment if using a proxy server.<br>

-    #proxy.host=proxy.domain<br>

-    #proxy.port=8080<br>

-    #proxy.use=on<br>

-<br>

-    # ----- Default Base Path for Dependent Packages -----<br>

-    # Replace this path with the directory path where<br>

-    # dependencies binaries should be downloaded.<br>

-    base.path=/home/me/some-place-to-download-to<br>

-</code>

+Once the build has completed successfully, a usable Tomcat installation will have been

+produced in the <code>${tomcat.source}/output/build</code> directory, and can be started

+and stopped with the usual scripts.

 </p>

-

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Building with Eclipse"><!--()--></a><a name="Building_with_Eclipse"><strong>Building with Eclipse</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>

-<b>Important:</b>

-This is not a supported means of building Tomcat; this information is

+<b>IMPORTANT:</b> 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.

+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.

 </p>

 

 <p>

-Note that you <b>must</b> complete all the above steps to fetch

-dependent libraries and build some JAR files the first time.

-After you have completed the above steps, you can set up an

-Eclipse project.

-<b>Note</b> that this will not let you build everything under Eclipse;

+<b>NOTE:</b> 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,

@@ -135,53 +251,126 @@
 </p>

 

 <p>

-Use Windows-&gt;Preferences and then Java-&gt;Build Path-&gt;Classpath

-Variables to add two new Classpath variables:

+<b>WARNING:</b> Do not forget to create and configure

+  <code>${tomcat.source}/build.properties</code> file as described above

+  before running any Ant targets.

 </p>

 

 <p>

-<table border="1">

- <tr><td>TOMCAT_LIBS_BASE</td><td>the base path where the binary dependencies have been downloaded</td></tr>

- <tr><td>ANT_HOME</td><td>the base path of Ant 1.6.2 or later</td></tr>

+Sample Eclipse project files and launch targets are provided in the

+<code>res/ide-support/eclipse</code> directory of the source tree.

+The instructions below will automatically copy these into the required locations.

+</p>

+<p>

+Two Ant targets are provided as a convenience. The first one, named

+<em>ide-eclipse</em>, downloads all binary dependencies and configures

+Eclipse project in the root of the source tree. The created Eclipse project

+targets a Java 6 JDK and skips WebSocket classes that cannot be compiled with

+Java 6.

+</p>

+

+<p>

+The second target, named <em>ide-eclipse-websocket</em>, creates directory

+<code>../tomcat-7.0.x-java7</code> and configures the second Eclipse project

+there. This project targets a Java 7 JDK. This project does not have its own

+source tree, but accesses a subset of the source tree of the first project,

+compiling all WebSocket classes that were skipped.

+</p>

+

+<p>

+<code>cd ${tomcat.source}</code><br>

+<code>ant ide-eclipse</code><br>

+<code>ant ide-eclipse-websocket</code>

+</p>

+

+<p>

+Start Eclipse and create a new Workspace.

+</p>

+

+<p>

+Open the <em>Preferences</em> dialog and then select <em>Java-&gt;Build Path-&gt;Classpath

+Variables</em> to add two new <em>Classpath Variables</em>:

+</p>

+

+

+<table class="defaultTable">

+ <tr><td>TOMCAT_LIBS_BASE</td><td>The same location as the <code>base.path</code>

+  setting in <code>build.properties</code>, where the binary dependencies have been downloaded</td></tr>

+ <tr><td>ANT_HOME</td><td>the base path of Ant 1.8.2 or later</td></tr>

 </table>

+

+<p>

+In the <em>Preferences</em> dialog go to <em>Java-&gt;Installed JREs</em>

+and add JDK 6 and JDK 7 there. Close the dialog.

 </p>

 

 <p>

-There are two files in the root directory, <code>eclipse.classpath</code> and

-<code>eclipse.project</code>. Create their copies with new names,

-<code>.classpath</code> and <code>.project</code> respectively.

+Use <em>File-&gt;Import</em> command from menu and choose <em>Existing Projects into Workspace</em>.

+From there choose the root directory of the Tomcat source tree (<code>${tomcat.source}</code>)

+and import the project located there. Import the second project as well,

+if you have created it (<code>../tomcat-7.0.x-java7</code>).

 </p>

 

 <p>

-Use File-&gt;Import and chose "Existing Projects into Workspace".

-From there import the root directory where you have checked out tomcat.

+<code>start-tomcat</code> and <code>stop-tomcat</code> launch configurations are provided in

+<code>res/ide-support/eclipse</code> and will be available in the <em>Run-&gt;Run Configurations</em>

+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 <code>org.apache.catalina.startup.Bootstrap</code> as the main class,

+<code>start</code>/<code>stop</code> etc. as program arguments, and specify <code>-Dcatalina.home=...</code>

+(with the name of your build directory) as VM arguments.

 </p>

 

 <p>

-Eclipse .project and .classpath files provided in the root directory of

-tomcat repository should allow Eclipse to find all source trees and jars, and

-hopefully compile without problems. <b>Note</b> that these

-files assume you are using Eclipse with a 5.0 or later JDK.

+Tweaking a few formatting preferences will make it much easier to keep consistent with Tomcat

+coding conventions (and have your contributions accepted):

 </p>

 

+<table class="defaultTable">

+  <tr><td>Java -&gt; Code Style -&gt; Formatter -&gt; Edit...</td>

+  <td>Tab policy: Spaces only<br>Tab and Indentation size: 4</td></tr>

+  <tr><td>General -&gt; Editors -&gt; Text Editors</td>

+  <td>Displayed tab width: 2<br>Insert spaces for tabs<br>Show whitespace characters (optional)</td></tr>

+  <tr><td>XML -&gt; XML Files -&gt; Editor</td><td>Indent using spaces<br>Indentation size: 2</td></tr>

+  <tr><td>Ant -&gt; Editor -&gt; Formatter</td><td>Tab size: 2<br>Use tab character instead of spaces: unchecked</td></tr>

+</table>

+

 <p>

-To run Tomcat without a special IDE plug-in, you can simply use Run-&gt;Run...

-enter "org.apache.catalina.startup.Catalina" as the main class,

-"start" as program arguments, and

-"-Dcatalina.home=..." (with the name of your build directory) 

-as VM arguments.

+The recommended configuration of Compiler Warnings is documented in

+<code>res/ide-support/eclipse/java-compiler-errors-warnings.txt</code> file.

 </p>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Building with other IDEs"><!--()--></a><a name="Building_with_other_IDEs"><strong>Building with other IDEs</strong></a></font></td></tr><tr><td><blockquote>

 <p>

-The same caveats apply as for Eclipse, above.

+The same general approach should work for most IDEs; it has been reported

+to work in IntelliJ IDEA, for example.

 </p>

 

-<p>

-The same general idea should work in most IDEs; it has been reported

-to work in Idea, for example.

-</p>

-

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/building.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/cgi-howto.html b/tomcat-uid/webapps/docs/cgi-howto.html
index 4b4a8a2..4384ec9 100644
--- a/tomcat-uid/webapps/docs/cgi-howto.html
+++ b/tomcat-uid/webapps/docs/cgi-howto.html
@@ -1,9 +1,84 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 6.0 (6.0.41) - CGI How To</title><meta name="author" content="Glenn L. Nielsen"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - CGI How To</title><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat 6.0</h1><h2>CGI How To</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>CGI How To</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Installation">Installation</a></li><li><a href="#Configuration">Configuration</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -14,9 +89,9 @@
 

 <p>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 

+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, 

+Tomcat's CGI support is largely compatible with Apache httpd's,

 but there are some limitations (e.g., only one cgi-bin directory).

 </p>

 

@@ -31,41 +106,91 @@
 external to the Tomcat JVM. If you are using the Java SecurityManager this

 will bypass your security policy configuration in <code>catalina.policy.</code></p>

 

-<p>Remove the XML comments from around the CGI servlet and servlet-mapping

-configuration in <code>$CATALINA_BASE/conf/web.xml</code>.</p>

+<p>To enable CGI support:</p>

 

-<p>Only Contexts which are marked as privileged may use the CGI servlet (see the

-privileged property of the Context element).</p>

+<ol>

+<li><p>There are commented-out sample servlet and servlet-mapping elements for

+CGI servlet in the default <code>$CATALINA_BASE/conf/web.xml</code> file.

+To enable CGI support in your web application, copy that servlet and

+servlet-mapping declarations into <code>WEB-INF/web.xml</code> file of your

+web application.</p>

+

+<p>Uncommenting the servlet and servlet-mapping in

+<code>$CATALINA_BASE/conf/web.xml</code> file enables CGI for all installed

+web applications at once.</p>

+</li>

+

+<li><p>Set <code>privileged="true"</code> on the Context element for your

+web application.</p>

+

+<p>Only Contexts which are marked as privileged are allowed to use the

+CGI servlet. Note that modifying the global <code>$CATALINA_BASE/conf/context.xml</code>

+file affects all web applications. See

+<a href="config/context.html">Context documentation</a> for details.</p>

+</li>

+</ol>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Configuration"><strong>Configuration</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>There are several servlet init parameters which can be used to

-configure the behaviour of the CGI servlet.

+configure the behaviour of the CGI servlet.</p>

 <ul>

 <li><strong>cgiPathPrefix</strong> - The CGI search path will start at

 the web application root directory + File.separator + this prefix.

-The default cgiPathPrefix is <code>WEB-INF/cgi</code></li>

-<li><strong>debug</strong> - Debugging detail level for messages logged

-by this servlet. Default 0.</li>

-<li><strong>executable</strong> - The of the executable to be used to

+By default there is no value, which results in the web application root

+directory being used as the search path. The recommended value is

+<code>WEB-INF/cgi</code></li>

+<li><strong>executable</strong> - 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

 <code>perl</code>.</li>

 <li><strong>executable-arg-1</strong>, <strong>executable-arg-2</strong>,

 and so on - additional arguments for the executable. These precede the

 CGI script name. By default there are no additional arguments.</li>

+<li><strong>envHttpHeaders</strong> - 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

+<code>ACCEPT[-0-9A-Z]*|CACHE-CONTROL|COOKIE|HOST|IF-[-0-9A-Z]*|REFERER|USER-AGENT</code>

+</li>

 <li><strong>parameterEncoding</strong> - Name of the parameter encoding

 to be used with the CGI servlet. Default is

-<code>System.getProperty("file.encoding","UTF-8")</code>.</li>

+<code>System.getProperty("file.encoding","UTF-8")</code>. That is the system

+default encoding, or UTF-8 if that system property is not available.</li>

 <li><strong>passShellEnvironment</strong> - Should the shell environment

-variables (if any) be passed to the CGI script? Default is

+variables from Tomcat process (if any) be passed to the CGI script? Default is

 <code>false</code>.</li>

 <li><strong>stderrTimeout</strong> - The time (in milliseconds) to wait for

 the reading of stderr to complete before terminating the CGI process. Default

-is 2000.</li>

+is <code>2000</code>.</li>

 </ul>

-</p>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/cgi-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/changelog.html b/tomcat-uid/webapps/docs/changelog.html
index ddebb1f..38bb7ec 100644
--- a/tomcat-uid/webapps/docs/changelog.html
+++ b/tomcat-uid/webapps/docs/changelog.html
@@ -1,78 +1,4226 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 6.0 (6.0.41) - Changelog</title><meta name="author" content="Remy Maucherat"><meta name="author" content="Yoav Shapira"><meta name="author" content="Filip Hanik"><meta name="author" content="Rainer Jung"><meta name="author" content="Peter Rossbach"><meta name="author" content="Konstantin Kolinko"><meta name="author" content="Jean-Frederic Clere"><meta name="author" content="Keiichi Fujino"><meta name="author" content="Mladen Turk"><meta name="author" content="Tim Whittington"><meta name="author" content="Sylvain Laurent"><meta name="author" content="Christopher Schultz"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - Changelog</title><meta name="author" content="Remy Maucherat"><meta name="author" content="Filip Hanik"><meta name="author" content="Rainer Jung"><meta name="author" content="Konstantin Kolinko"><meta name="author" content="Peter Rossbach"><meta name="author" content="Keiichi Fujino"><meta name="author" content="Tim Whittington"><meta name="author" content="Mladen Turk"><meta name="author" content="Christopher Schultz"><meta name="author" content="Sylvain Laurent"><meta name="author" content="Violeta Georgieva"><meta name="author" content="Jeremy Boynes"><meta name="author" content="Felix Schumacher"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat 6.0</h1><h2>Changelog</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.41"><!--()--></a><a name="Tomcat_6.0.41"><strong>Tomcat 6.0.41</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong></strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.41/Jasper"><!--()--></a><a name="Tomcat_6.0.41/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Changelog</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.77 (violetagg)"><!--()--></a><a name="Tomcat_7.0.77_(violetagg)"><strong>Tomcat 7.0.77 (violetagg)</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.77 (violetagg)/Catalina"><!--()--></a><a name="Tomcat_7.0.77_(violetagg)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54618">54618</a>: Add support to the

+        <code>HttpHeaderSecurityFilter</code> for the HSTS preload parameter.

+        (markt)

+      </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=56529">56529</a>: Avoid <code>NoSuchElementException</code> while handling

-        attributes with empty string value in custom tags. Based on a patch

-        provided by Hariprasad Manchi. (violetagg/kkolinko)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60911">60911</a>: Ensure NPE will not be thrown when looking for SSL

+        session ID. Based on a patch by Didier Gutacker. (violetagg)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.40"><!--()--></a><a name="Tomcat_6.0.40"><strong>Tomcat 6.0.40</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.40/Catalina"><!--()--></a><a name="Tomcat_6.0.40/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.77 (violetagg)/Coyote"><!--()--></a><a name="Tomcat_7.0.77_(violetagg)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=56027">56027</a>: Add more options for managing FIPS mode in the

-        AprLifecycleListener. (schultz/kkolinko)

+        When using the NIO2 connector, ensure a WebSocket close frame is

+        processed before the end of stream is processed to ensure that the end

+        of stream is processed correctly. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=56082">56082</a>: Fix a concurrency bug in JULI's LogManager

-        implementation. (markt)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60852">60852</a>: Correctly spell compressible when used in

+        configuration attributes and internal code. Based on a patch by Michael

+        Osipov. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=56236">56236</a>: Enable Tomcat to work with alternative Servlet and

-        JSP API JARs that package the XML schemas in such as way as to require

-        a dependency on the JSP API before enabling validation for web.xml.

-        Tomcat has no such dependency. (markt)

+        Improve sendfile handling when requests are pipelined. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.77 (violetagg)/Jasper"><!--()--></a><a name="Tomcat_7.0.77_(violetagg)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve the error handling for simple tags to ensure that the tag is

+        released and destroyed once used. (remm, violetagg)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Change the default value of the <code>xmlBlockExternal</code> attribute

-        of Context elements. It is now <code>true</code>. (kkolinko) 

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60844">60844</a>: 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)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.77 (violetagg)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.77_(violetagg)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60764">60764</a>: Implement <code>equals()</code> and

+        <code>hashCode()</code> in the <code>StatementFacade</code> 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

+        <code>useStatementFacade</code> attribute. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.76 (markt)"><!--()--></a><a name="Tomcat_7.0.76_(markt)"><strong>Tomcat 7.0.76 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2017-03-16</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.76 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.76_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Make it easier for sub-classes of <code>Tomcat</code> to modify the

+        default web.xml settings by over-riding

+        <code>getDefaultWebXmlListener()</code>. Patch provided by Aaron

+        Anderson. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Don't log to standard out in SSLValve. (kkolinko/markt)

+        Reduce the contention in the default <code>InstanceManager</code>

+        implementation when multiple threads are managing objects and need to

+        reference the annotation cache. (markt)

       </td></tr>

       <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

-        Use StringBuilder in DefaultServlet. (kkolinko)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60674">60674</a>: Remove <code>final</code> marker from

+        <code>CorsFilter</code> to enable sub-classing. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=56275">56275</a>: Allow web applications to be stopped cleanly even if

-        filters throw exceptions when their destroy() method is called.

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60683">60683</a>: Security manager failure causing NPEs when doing IO

+        on some JVMs. (csutherl)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60688">60688</a>: Update the internal fork of Apache Commons BCEL to

+        r1782855 to add early access Java 9 support to the annotation scanning

+        code. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60718">60718</a>: Improve error handling for asynchronous processing and

+        correct a number of cases where the <code>requestDestroyed()</code>

+        event was not being fired and an entry wasn't being made in the access

+        logs. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60808">60808</a>: Ensure that the <code>Map</code> returned by

+        <code>ServletRequest.getParameterMap()</code> is fully immutable. Based

+        on a patch provided by woosan. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60824">60824</a>: Correctly cache the <code>Subject</code> in the

+        session - if there is a session - when running under a

+        <code>SecurityManager</code>. Patch provided by Jan Engehausen. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure request and response facades are used when firing application

+        listeners. (markt/remm)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        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)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.76 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.76_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that executor thread pools used with connectors pre-start the

+        configured minimum number of idle threads. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60594">60594</a>: Allow some invalid characters that were recently

+        restricted to be processed in requests by using the system property

+        <code>tomcat.util.http.parser.HttpParser.requestTargetAllow</code>.

+        (csutherl)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.76 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.76_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Refactor code generated for JSPs to reduce the size of the code required

+        for tags. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.76 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.76_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Make the <code>accessTimeout</code> configurable in

+        <code>ClusterSingleSignOn</code>. The <code>accessTimeout</code> is used

+        as a timeout period for PING in replication map. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60806">60806</a>: To avoid <code>ClassNotFoundException</code>, make

+        sure that the web application class loader is passed to

+        <code>ReplicatedContext</code>. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.76 (markt)/WebSocket"><!--()--></a><a name="Tomcat_7.0.76_(markt)/WebSocket"><strong>WebSocket</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60617">60617</a>: Correctly create a <code>CONNECT</code> request when

+        establishing a WebSocket connection via a proxy. Patch provided by

+        Svetlin Zarev. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.76 (markt)/Tribes"><!--()--></a><a name="Tomcat_7.0.76_(markt)/Tribes"><strong>Tribes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that <code>NoRpcChannelReply</code> messages are not received on

+        <code>RpcCallback</code>. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60722">60722</a>: Take account of the

+        <strong>dispatchersUseEncodedPaths</strong> setting on the current

+        <strong>Context</strong> when generating paths for dispatches triggered

+        by <code>AsyncContext.dispatch()</code>. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.76 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.76_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60620">60620</a>: Fix configuration of Eclipse projects, broken by

+        introduction of <code>SafeForkJoinWorkerThreadFactory</code> helper

+        class. This class cannot be built with Java 6. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        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)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60784">60784</a>: 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)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update the NSIS Installer used to build the Windows installer to version

+        3.01. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        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)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.75 (violetagg)"><!--()--></a><a name="Tomcat_7.0.75_(violetagg)"><strong>Tomcat 7.0.75 (violetagg)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2017-01-24</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.75 (violetagg)/Cluster"><!--()--></a><a name="Tomcat_7.0.75_(violetagg)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Make the <code>accessTimeout</code> configurable in

+        <code>BackupManager</code>. The <code>accessTimeout</code> is used as a

+        timeout period for PING in replication map. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.75 (violetagg)/Web applications"><!--()--></a><a name="Tomcat_7.0.75_(violetagg)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure the ASF logo image is correctly displayed in docs and

+        host-manager applications. (violetagg)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.74 (violetagg)"><!--()--></a><a name="Tomcat_7.0.74_(violetagg)"><strong>Tomcat 7.0.74 (violetagg)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.74 (violetagg)/Catalina"><!--()--></a><a name="Tomcat_7.0.74_(violetagg)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53602">53602</a>: Add HTTP status code 451 (RFC 7725) to the list of

+        HTTP status codes recognised by Tomcat. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correctly handle the <code>configClass</code> attribute of a Host when

+        embedding Tomcat. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60379">60379</a>: Dispose of the GSS credential once it is no longer

+        required. Patch provided by Michael Osipov. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60380">60380</a>: Ensure that a call to

+        <code>HttpServletRequest#logout()</code> triggers a call to

+        <code>TomcatPrincipal#logout()</code>. Based on a patch by Michael

+        Osipov. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60387">60387</a>: Correct the javadoc for

+        <code>o.a.catalina.AccessLog.setRequestAttributesEnabled</code>.

+        The default value is different for the different implementations.

+        (violetagg)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60393">60393</a>: Use consistent parameter naming in implementations of

+        <code>Realm#authenticate(GSSContext, boolean)</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60395">60395</a>: Log when an <code>Authenticator</code> passes an

+        incomplete <code>GSSContext</code> to a Realm since it indicates a bug

+        in the <code>Authenticator</code>. Patch provided by Michael Osipov.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update the warnings that reference required options for running on Java

+        9 to use the latest syntax for those options. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60513">60513</a>: Fix thread safety issue with RMI cleanup code. (remm)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60620">60620</a>:

+        Extend the <code>JreMemoryLeakPreventionListener</code> to provide

+        protection against <code>ForkJoinPool.commonPool()</code> related memory

+        leaks. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.74 (violetagg)/Coyote"><!--()--></a><a name="Tomcat_7.0.74_(violetagg)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        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 <code>0.0.0.0</code> or <code>::</code>.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure sendfile is enabled by default for APR. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Prevent read time out when the file is deleted while serving the

+        response. The issue was observed only with APR Connector and

+        sendfile enabled. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        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 <code>0.0.0.0</code> or

+        <code>::</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60409">60409</a>: When unable to complete sendfile request, ensure the

+        Processor will be added to the cache only once. (markt/violetagg)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.74 (violetagg)/Jasper"><!--()--></a><a name="Tomcat_7.0.74_(violetagg)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=44294">44294</a>: Add support for varargs in UEL expressions. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60356">60356</a>: Fix pre-compilation of JSPs that depend on nested tag

+        files packaged in a JAR. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60431">60431</a>: Improve handling of varargs in UEL expressions. Based

+        on a patch by Ben Wolfe. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60497">60497</a>: Restore previous tag reuse behavior following the use

+        of try/finally. (remm)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve the error handling for simple tags to ensure that the tag is

+        released and destroyed once used. (remm)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60497">60497</a>: Follow up fix using a better variable name for the

+        tag reuse flag. (remm)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Revert use of try/finally for simple tags. (remm)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.74 (violetagg)/Web applications"><!--()--></a><a name="Tomcat_7.0.74_(violetagg)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct a typo in Host Configuration Reference.

+        Issue reported via comments.apache.org. (violetagg)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        In the documentation web application, be explicit that clustering

+        requires a secure network for all of the cluster network traffic.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update the ASF logos to the new versions.

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.74 (violetagg)/Tribes"><!--()--></a><a name="Tomcat_7.0.74_(violetagg)/Tribes"><strong>Tribes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Reduce the warning logs for a message received from a different domain

+        in order to avoid excessive log outputs. (kfujino)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add log message that PING message has received beyond the timeout

+        period. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        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)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.74 (violetagg)/WebSocket"><!--()--></a><a name="Tomcat_7.0.74_(violetagg)/WebSocket"><strong>WebSocket</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60437">60437</a>: Avoid possible handshake overflows in the websocket

+        client. (remm)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.74 (violetagg)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.74_(violetagg)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58816">58816</a>: Implement the statistics of jdbc-pool. The stats infos

+        are <code>borrowedCount</code>, <code>returnedCount</code>,

+        <code>createdCount</code>, <code>releasedCount</code>,

+        <code>reconnectedCount</code>, <code>releasedIdleCount</code> and

+        <code>removeAbandonedCount</code>. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60194">60194</a>: If <code>validationQuery</code> is not specified,

+        connection validation is done by calling the <code>isValid()</code>

+        method. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60398">60398</a>: Fix testcase of <code>TestSlowQueryReport</code>.

+        (kfujino)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Enable reset the statistics without restarting the pool. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.74 (violetagg)/Other"><!--()--></a><a name="Tomcat_7.0.74_(violetagg)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60366">60366</a>: Change <code>catalina.bat</code> to use directly

+        <code>LOGGING_MANAGER</code> and <code>LOGGING_CONFIG</code> variables

+        in order to configure logging, instead of modifying

+        <code>JAVA_OPTS</code>. Patch provided by Petter Isberg. (violetagg)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        New property is added <code>test.verbose</code> in order to control

+        whether the output of the tests is displayed on the console or not.

+        Patch provided by Emmanuel Bourg. (violetagg)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update the ASF logos used in the Apache Tomcat installer for Windows to

+        use the new versions.

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Spelling corrections provided by Josh Soref. (violetagg)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.73 (violetagg)"><!--()--></a><a name="Tomcat_7.0.73_(violetagg)"><strong>Tomcat 7.0.73 (violetagg)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2016-11-14</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.73 (violetagg)/Catalina"><!--()--></a><a name="Tomcat_7.0.73_(violetagg)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60117">60117</a>: Ensure that the name of <code>LogLevel</code> is

+        localized when using <code>OneLineFormatter</code>. Patch provided by

+        Tatsuya Bessho. (kfujino)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60151">60151</a>: Improve the exception error messages when a

+        <code>ResourceLink</code> fails to specify the type, specifies an

+        unknown type or specifies the wrong type. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60167">60167</a>: Ignore empty lines in <code>/etc/passwd</code> files

+        when using the <code>PasswdUserDatabase</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        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)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60199">60199</a>: Log a warning if deserialization issues prevent a

+        session attribute from being loaded. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correctly test for control characters when reading the provided shutdown

+        password. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When configuring the JMX remote listener, specify the allowed types for

+        the credentials. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.73 (violetagg)/Coyote"><!--()--></a><a name="Tomcat_7.0.73_(violetagg)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60123">60123</a>: Avoid potential threading issues that could cause

+        excessively large vales to be returned for the processing time of

+        a current request. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60174">60174</a>: Log instances of <code>HeadersTooLargeException</code>

+        during request processing. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct the HTTP header parser so that DEL is not treated as a valid

+        token character. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60319">60319</a>: When using an Executor, disconnect it from the

+        Connector attributes <code>maxThreads</code>,

+        <code>minSpareThreads</code> and <code>threadPriority</code> to enable

+        the configuration settings to be consistently reported. These Connector

+        attributes will be reported as <code>-1</code> when an Executor is in

+        use. The values used by the executor may be set and obtained via the

+        Executor. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        If an I/O error occurs during async processing on a non-container

+        thread, ensure that the <code>onError()</code> event is triggered.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve detection of I/O errors during async processing on non-container

+        threads and trigger async error handling when they are detected. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add additional checks for valid characters to the HTTP request line

+        parsing so invalid request lines are rejected sooner. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.73 (violetagg)/Web applications"><!--()--></a><a name="Tomcat_7.0.73_(violetagg)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add an example of using the <code>classesToInitialize</code> attribute

+        of the <code>JreMemoryLeakPreventionListener</code> to the documentation

+        web application. Based on a patch by Cris Berneburg. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60192">60192</a>: Correct a typo in the status output of the Manager

+        application. Patch provided by  Radhakrishna Pemmasani. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct a typo in HTTP Connector How-To.

+        Issue reported via comments.apache.org. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix default value of <code>validationInterval</code> attribute in

+        jdbc-pool. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct a typo in CGI How-To.

+        Issue reported via comments.apache.org. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60344">60344</a>: Add a note to BUILDING.txt regarding using the source

+        bundle with the correct line endings. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.73 (violetagg)/Tribes"><!--()--></a><a name="Tomcat_7.0.73_(violetagg)/Tribes"><strong>Tribes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When the proxy node sends a backup retrieve message, ensure that using

+        the <code>channelSendOptions</code> that has been set rather than the

+        default <code>channelSendOptions</code>. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.73 (violetagg)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.73_(violetagg)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60099">60099</a>: Ensure that use all method arguments as a cache key

+        when using <code>StatementCache</code>. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60139">60139</a>: Correct Javadocs for

+        <code>PoolConfiguration.getValidationInterval</code> and

+        <code>setValidationInterval</code>. Reported by Phillip Webb. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.73 (violetagg)/Other"><!--()--></a><a name="Tomcat_7.0.73_(violetagg)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        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)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.72 (violetagg)"><!--()--></a><a name="Tomcat_7.0.72_(violetagg)"><strong>Tomcat 7.0.72 (violetagg)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2016-09-19</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.72 (violetagg)/Catalina"><!--()--></a><a name="Tomcat_7.0.72_(violetagg)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure <code>Digester.useContextClassLoader</code> is considered in

+        case the class loader is used. (violetagg)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.72 (violetagg)/Jasper"><!--()--></a><a name="Tomcat_7.0.72_(violetagg)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60101">60101</a>: Remove preloading of the class that was deleted.

+        (violetagg)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.72 (violetagg)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.72_(violetagg)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Notify jmx when returning the connection that has been marked suspect.

+        (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that the <code>POOL_EMPTY</code> notification has been added to

+        the jmx notification types. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.72 (violetagg)/Other"><!--()--></a><a name="Tomcat_7.0.72_(violetagg)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        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)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.71 (violetagg)"><!--()--></a><a name="Tomcat_7.0.71_(violetagg)"><strong>Tomcat 7.0.71 (violetagg)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.71 (violetagg)/Catalina"><!--()--></a><a name="Tomcat_7.0.71_(violetagg)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57705">57705</a>: Add debug logging for requests denied by the remote

+        host and remote address valves and filters. Based on a patch by Graham

+        Leggett. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Change the default of the

+        <code>sessionCookiePathUsesTrailingSlash</code> attribute of the

+        <code>Context</code> element to <code>false</code> since the problems

+        caused when a Servlet is mapped to <code>/*</code> are more significant

+        than the security risk of not enabling this option by default. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59708">59708</a>: Modify the LockOutRealm logic. Valid authentication

+        attempts during the lock out period will no longer reset the lock out

+        timer to zero. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve error handling around user code prior to calling

+        <code>InstanceManager.destroy()</code> to ensure that the method is

+        executed. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that reading the <code>singleThreadModel</code> attribute of a

+        <code>StandardWrapper</code> via JMX does not trigger initialisation of

+        the associated servlet. With some frameworks this can trigger an

+        unexpected initialisation thread and if initilisation is not thread-safe

+        the initialisation can then fail. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        By default, treat paths used to obtain a request dispatcher as encoded.

+        This behaviour can be changed per web application via the

+        <code>dispatchersUseEncodedPaths</code> attribute of the Context.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59839">59839</a>: Apply <code>roleSearchAsUser</code> to all nested searches

+        in JNDIRealm. (fschumacher)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        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)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        When retrieving an object via a <code>ResourceLink</code>, ensure that

+        the object obtained is of the expected type. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59866">59866</a>: When scanning <code>WEB-INF/classes</code> for

+        annotations, don't scan the contents of

+        <code>WEB-INF/classes/META-INF</code> (if present) since classes will

+        never be loaded from that location. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59912">59912</a>: Fix an edge case in input stream handling where an

+        <code>IOException</code> could be thrown when reading a POST body.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59966">59966</a>: Do not start the web application if the error page

+        configuration in web.xml is invalid. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Switch the CGI servlet to the standard logging mechanism and remove

+        support for the debug attribute. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add a new initialisation parameter, <code>envHttpHeaders</code>, to

+        the CGI Servlet to mitigate <a href="https://httpoxy.org">httpoxy</a>

+        (<a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5388">CVE-2016-5388</a>) by default and to provide a mechanism that can be

+        used to mitigate any future, similar issues. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        When adding and removing <code>ResourceLink</code>s dynamically, ensure

+        that the global resource is only visible via the

+        <code>ResourceLinkFactory</code> when it is meant to be. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60008">60008</a>: When processing CORs requests, treat any origin with a

+        URI scheme of <code>file</code> as a valid origin. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        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 <code>FAILED</code> state. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix a file descriptor leak when reading the global web.xml. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60041">60041</a>: Better error message if a JAR is deleted while a web

+        application is running. Note: Deleting a JAR while the application is

+        running is not supported and errors are expected. Based on a patch by

+        gehui. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.71 (violetagg)/Coyote"><!--()--></a><a name="Tomcat_7.0.71_(violetagg)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve error handling around user code prior to calling

+        <code>InstanceManager.destroy()</code> to ensure that the method is

+        executed. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59904">59904</a>: Add a limit (default 200) for the number of cookies

+        allowed per request. Based on a patch by gehui. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Make timing attacks against the Realm implementations harder. (schultz)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Refactor the code that implements the requirement that a call to

+        <code>complete()</code> or <code>dispatch()</code> made from a

+        non-container thread before the container initiated thread that called

+        <code>startAsync()</code> 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)  

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.71 (violetagg)/Jasper"><!--()--></a><a name="Tomcat_7.0.71_(violetagg)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve error handling around user code prior to calling

+        <code>InstanceManager.destroy()</code> to ensure that the method is

+        executed. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve the error handling for custom tags to ensure that the tag is

+        returned to the pool or released and destroyed once used. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fixed StringIndexOutOfBoundsException. Based on a patch provided by

+        wuwen via Github. (violetagg)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.71 (violetagg)/WebSocket"><!--()--></a><a name="Tomcat_7.0.71_(violetagg)/WebSocket"><strong>WebSocket</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve error handling around user code prior to calling

+        <code>InstanceManager.destroy()</code> to ensure that the method is

+        executed. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59868">59868</a>: 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)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59908">59908</a>: Ensure that a reason phrase is included in the close

+        message if a session is closed due to a timeout. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.71 (violetagg)/Web Applications"><!--()--></a><a name="Tomcat_7.0.71_(violetagg)/Web_Applications"><strong>Web Applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Do not log an additional case of <code>IOException</code>s in the

+        error handler for the Drawboard WebSocket example when the root cause is

+        the client disconnecting since the logs add no value. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59642">59642</a>: Mention the <code>localDataSource</code> in the

+        <code>DataSourceRealm</code> section of the Realm How-To. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Follow-up to the fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59399">59399</a>. Ensure that the new attribute

+        <code>transportGuaranteeRedirectStatus</code> is documented for all

+        <strong>Realm</strong>s. Also document the <code>NullRealm</code> and

+        when it is automatically created for an <strong>Engine</strong>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        MBeans Descriptors How-To is moved to

+        <code>mbeans-descriptors-howto.html</code>. Patch provided by Radoslav

+        Husar. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60034">60034</a>: Correct a typo in the Manager How-To page of the

+        documentation web application. (markt) 

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.71 (violetagg)/Tribes"><!--()--></a><a name="Tomcat_7.0.71_(violetagg)/Tribes"><strong>Tribes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add log message when the ping has timed-out. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        If the ping message has been received at the

+        <code>AbstractReplicatedMap#leftOver</code> method, ensure that notify

+        the member is alive than ignore it. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.71 (violetagg)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.71_(violetagg)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix the duplicated connection release when connection verification

+        failed. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that do not remove the abandoned connection that has been already

+        released. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        In order to avoid the unintended skip of <code>PoolCleaner</code>,

+        remove the check code of the execution interval in the task that has

+        been scheduled. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59849">59849</a>: Ensure that the connection verification is executed by

+        <code>initSQL</code> (if required) if the borrowing

+        <code>PooledConnection</code> has not been initialized. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59850">59850</a>: Ensure that the <code>ResultSet</code> is closed when

+        enabling the <code>StatementCache</code> interceptor. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59923">59923</a>: Reduce the default value of

+        <code>validationInterval</code> in order to avoid the potential issue

+        that continues to return an invalid connection after database restart.

+        (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that the <code>ResultSet</code> is returned as Proxy object when

+        enabling the <code>StatementDecoratorInterceptor</code>. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=60043">60043</a>: Ensure that the <code>suspectTimeout</code> works

+        without removing connection when the <code>removeAbandoned</code> is

+        disabled. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add log message of when returning the connection that has been marked

+        suspect. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct Javadoc for <code>ConnectionPool.suspect()</code>. Based on a

+        patch by Yahya Cahyadi. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.71 (violetagg)/Other"><!--()--></a><a name="Tomcat_7.0.71_(violetagg)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Use the mirror network rather than the ASF master site to download the

+        current ASF dependencies. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        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)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fixed typos in mbeans-descriptors.xml files. (violetagg)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update the internal fork of Commons BCEL to r1757132 to align with the

+        BCEL 6 release. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update the internal fork of Commons Codec to r1757174. Code formatting

+        changes only. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update the internal fork of Commons FileUpload to afdedc9. This pulls in

+        a fix to improve the performance with large multipart boundaries.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Update the download location for Objenesis. (violetagg)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.70 (violetagg)"><!--()--></a><a name="Tomcat_7.0.70_(violetagg)"><strong>Tomcat 7.0.70 (violetagg)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2016-06-20</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.70 (violetagg)/Catalina"><!--()--></a><a name="Tomcat_7.0.70_(violetagg)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59219">59219</a>: Ensure <code>AsyncListener.onError()</code> is called

+        if an <code>Exception</code> is thrown during async processing. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59220">59220</a>: Ensure that <code>AsyncListener.onComplete()</code> is

+        called if the async request times out and the response is already

+        committed. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59261">59261</a>: <code>ServletRequest.getAsyncContext()</code> now

+        throws an <code>IllegalStateException</code> as required by the Servlet

+        specification if the request is not in asynchronous mode when called.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59310">59310</a>: Do not add a <code>Content-Length: 0</code> header for

+        custom responses to <code>HEAD</code> requests that do not set a

+        <code>Content-Length</code> value. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When normalizing paths, improve the handling when paths end with

+        <code>/.</code> or <code>/..</code> and ensure that input and output are

+        consistent with respect to whether or not they end with <code>/</code>.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59317">59317</a>: Ensure that

+        <code>HttpServletRequest.getRequestURI()</code> returns an encoded URI

+        rather than a decoded URI after a dispatch. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that the value for the header <code>X-Frame-Options</code> is

+        constructed correctly according to the specification when

+        <code>ALLOW-FROM</code> option is used. (violetagg)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59399">59399</a>: Add a new option to the Realm implementations that

+        ship with Tomcat that allows the HTTP status code used for HTTP -&gt; HTTPS

+        redirects to be controlled per Realm. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59449">59449</a>: In <code>ContainerBase</code>, ensure that the process

+        to remove a child container is the reverse of the process to add one.

+        Patch provided by Huxing Zhang. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        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)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix a potential concurrency issue with the web application class loader

+        and  concurrent reads and writes of the resource cache. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59619">59619</a>: Within the web application class loader, always use

+        path as the key for the resource cache to improve the hit ratio. This

+        also fixes a problem exposed by the fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56777">56777</a> that

+        enabled file based configuration resources to be loaded from the class

+        path. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix error message when failed to register MBean. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.70 (violetagg)/Coyote"><!--()--></a><a name="Tomcat_7.0.70_(violetagg)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58970">58970</a>: Fix a connection counting bug in the NIO connector

+        that meant some dropped connections were not removed from the current

+        connection count. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59289">59289</a>: Do not recycle upgrade processors in unexpected close

+        situations. (remm)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that requests with HTTP method names that are not tokens (as

+        required by RFC 7231) are rejected with a 400 response. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When an asynchronous request is processed by the AJP connector, ensure

+        that request processing has fully completed before starting the next

+        request. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+       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)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.70 (violetagg)/Jasper"><!--()--></a><a name="Tomcat_7.0.70_(violetagg)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        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)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59654">59654</a>: Enforce the requirements of section 7.3.1 of the JSP

+        specification regarding the permitted locations for TLD files. Patch

+        provided by Huxing Zhang. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.70 (violetagg)/WebSocket"><!--()--></a><a name="Tomcat_7.0.70_(violetagg)/WebSocket"><strong>WebSocket</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that a client disconnection triggers the error handling for the

+        associated WebSocket end point. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.70 (violetagg)/Web Applications"><!--()--></a><a name="Tomcat_7.0.70_(violetagg)/Web_Applications"><strong>Web Applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct a typo in SSL/TLS Configuration How-To.

+        Issue reported via comments.apache.org. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58891">58891</a>: Update the SSL how-to. Based on a suggestion by

+        Alexander Kj&auml;ll. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.70 (violetagg)/Tribes"><!--()--></a><a name="Tomcat_7.0.70_(violetagg)/Tribes"><strong>Tribes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix potential NPE that depends on the setting order of attributes of

+        static member when using the static cluster. (kfujino)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add get/set method for the channel that is related to

+        <code>ChannelInterceptorBase</code>. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        As with the multicast cluster environment, in the static cluster

+        environment, the local member inherits properties from the cluster

+        receiver. (kfujino)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add get/set method for the channel that is related to each Channel

+        services. (kfujino)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add name to channel in order to identify channels. In tomcat cluster

+        environment, it is set the cluster name + "-Channel" as default value.

+        (kfujino)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add the channel name to the thread which is invoked by channel services

+        in order to identify the associated channel. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that clear the channel instance from channel services when

+        stopping channel. (kfujino)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Implement map state in the replication map. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that the ping is not executed during the start/stop of the

+        replication map. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        In ping processing in the replication map, send not the

+        <code>INIT</code> message but the newly introduced <code>PING</code>

+        message. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.70 (violetagg)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.70_(violetagg)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        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)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.70 (violetagg)/Other"><!--()--></a><a name="Tomcat_7.0.70_(violetagg)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        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. (violetagg/markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Remove native code (Windows Service Wrapper, APR/native connector)

+        support for Windows Itanium. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update the internal fork of Commons File Upload to r1743698 (1.3.1 plus

+        additional fixes). (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58626">58626</a>: Add support for a new environment variable

+        (<code>USE_NOHUP</code>) that causes <code>nohup</code> 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)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.69 (violetagg)"><!--()--></a><a name="Tomcat_7.0.69_(violetagg)"><strong>Tomcat 7.0.69 (violetagg)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2016-04-15</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.69 (violetagg)/Catalina"><!--()--></a><a name="Tomcat_7.0.69_(violetagg)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix the type of <code>InstanceManager</code> attribute of mbean

+        definition of <code>StandardContext</code>. (kfujino)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58351">58351</a>: Make the server build date and server version number

+        accessible via JMX. Patch provided by  Huxing Zhang. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59001">59001</a>: Correctly handle the case when Tomcat is installed on

+        a path where one of the segments ends in an exclamation mark. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Expand the fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59001">59001</a> to cover the special sequences used

+        in Tomcat's custom jar:war: URLs. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59043">59043</a>: Avoid warning while expiring sessions associated with

+        a single sign on if <code>HttpServletRequest.logout()</code> is used.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59054">59054</a>: Ensure that using the

+        <code>CrawlerSessionManagerValve</code> in a distributed environment

+        does not trigger an error when the Valve registers itself in the

+        session. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Log a warning message if a user tries to configure the default session

+        timeout via the deprecated (and ignored)

+        <code>Manager.setMaxInactiveInterval()</code> method. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct a regression introduced in 7.0.68 where the deprecated

+        <code>Manager.getMaxInactiveInterval()</code> method returned the

+        current default session timeout in minutes rather than seconds. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        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)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+       <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59115">59115</a>: 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)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59123">59123</a>: Close <code>NamingEnumeration</code> objects used by

+        the <code>JNDIRealm</code> once they are no longer required.

+        (fschumacher/markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59138">59138</a>: 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)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59145">59145</a>: Don't log an invalid warning when a user logs out of

+        a session associated with SSO. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59151">59151</a>: Fix a regression in the fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56917">56917</a> that

+        added additional (and arguably unnecessary) validation to the provided

+        redirect location. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59206">59206</a>: Ensure NPE will not be thrown by

+        <code>o.a.tomcat.util.file.ConfigFileLoader</code> when

+        <code>catalina.base</code> is not specified. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59213">59213</a>: Async dispatches should be based off a wrapped request.

+        (remm)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59217">59217</a>: Remove duplication in the recycling of the path in

+        <code>o.a.tomcat.util.http.ServerCookie</code>. Patch is provided by

+        Kyohei Nakamura. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that <code>javax.servlet.ServletRequest</code> and

+        <code>javax.servlet.ServletResponse</code> provided during

+        <code>javax.servlet.AsyncListener</code> registration are made

+        available via <code>javax.servlet.AsyncEvent.getSuppliedRequest</code>

+        and <code>javax.servlet.AsyncEvent.getSuppliedResponse</code>

+        (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Clarify the log message that specifying both urlPatterns and value

+        attributes in WebServlet and WebFilter annotations is not allowed.

+        (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure the exceptions caused by Valves will be available in the log

+        files so that they can be evaluated when

+        <code>o.a.catalina.valves.ErrorReportValve.showReport</code> is

+        disabled. Patch is provided by Svetlin Zarev. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59247">59247</a>: Preload ResourceEntry as a workaround for security

+        manager issues on some JVMs. (kkolinko/remm)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59269">59269</a>: Correct the implementation of

+        <code>PersistentManagerBase</code> so that <code>minIdleSwap</code>

+        functions as designed and sessions are swapped out to keep the active

+        session count below <code>maxActiveSessions</code>. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.69 (violetagg)/Coyote"><!--()--></a><a name="Tomcat_7.0.69_(violetagg)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58646">58646</a>: Correct a problem with sendfile that resulted in a

+        Processor being added to the cache twice leading to broken responses.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59015">59015</a>: Fix potential cause of endless APR Poller loop during

+        shutdown if the Poller experiences an error during the shutdown process.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Limit the default TLS ciphers for JSSE (BIO, NIO) and OpenSSL (APR) to

+        those currently considered secure. (markt) 

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add a new environment variable <code>JSSE_OPTS</code> that is intended

+        to be used to pass JVM wide configuration to the JSSE implementation.

+        The default value is <code>-Djdk.tls.ephemeralDHKeySize=2048</code>

+        which protects against weak Diffie-Hellman keys. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.69 (violetagg)/WebSocket"><!--()--></a><a name="Tomcat_7.0.69_(violetagg)/WebSocket"><strong>WebSocket</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59014">59014</a>: Ensure that a WebSocket close message can be sent

+        after a close message has been received. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correctly handle compression of partial messages when the final message

+        fragment has a zero length payload. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Extend the WebSocket programmatic echo endpoint provided in the examples

+        to handle binary messages and also partial messages. This aligns the

+        code with Tomcat 8 and makes it easier to run the Autobahn testsuite

+        against the WebSocket implementation. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59119">59119</a>: Correct read logic for WebSocket client when using

+        secure connections. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59134">59134</a>: Correct client connect logic for secure connections

+        made through a proxy. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59189">59189</a>: Explicitly release the native memory held by the

+        <code>Inflater</code> and <code>Deflater</code> when using

+        PerMessageDeflate and the WebSocket session ends. Based on a patch by

+        Henrik Olsson. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.69 (violetagg)/Web Applications"><!--()--></a><a name="Tomcat_7.0.69_(violetagg)/Web_Applications"><strong>Web Applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct the description of the

+        <code>ServletRequest.getServerPort()</code> in Proxy How-To.

+        Issue reported via comments.apache.org. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix a potential indefinite wait in the Comet Chat servlet in the

+        examples web application. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59229">59229</a>: Fix error in HTTP docs and make clear the the HTTP NIO

+        connector uses non-blocking I/O to read the HTTP request headers.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Update in the documentation the link to the maven repository where

+        Tomcat snapshot artifacts are deployed. (markt/violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Clarify in the documentation that calls to

+        <code>ServletContext.log(String, Throwable)</code> or

+        <code>GenericServlet.log(String, Throwable)</code> are logged at the

+        SEVERE level. (violetagg)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.69 (violetagg)/Tribes"><!--()--></a><a name="Tomcat_7.0.69_(violetagg)/Tribes"><strong>Tribes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        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)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Avoid NPE when a proxy node failed to retrieve a backup entry. (kfujino)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add log of when received an unexpected messages. (kfujino)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add the flag indicating that member is a localMember. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.69 (violetagg)/Other"><!--()--></a><a name="Tomcat_7.0.69_(violetagg)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58283">58283</a>: Change the default download location for libraries

+        during the build process from <code>/usr/share/java</code> to

+        <code>${user.home}/tomcat-build-libs</code>. Patch provided by

+        Ahmed Hosni. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59031">59031</a>: When using the Windows uninstaller, do not remove the

+        contents of any directories that have been symlinked into the Tomcat

+        directory structure. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Modify the default <code>tomcat-users.xml</code> file to make it harder

+        for users to configure the entries intended for use with the examples

+        web application for the Manager application. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59211">59211</a>: Add hamcrest to Eclipse classpath. Patch is provided

+        by Huxing Zhang. (violetagg)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59280">59280</a>: Update the NSIS Installer used to build the

+        Windows Installers to version 2.51. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.68 (violetagg)"><!--()--></a><a name="Tomcat_7.0.68_(violetagg)"><strong>Tomcat 7.0.68 (violetagg)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2016-02-16</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.68 (violetagg)/General"><!--()--></a><a name="Tomcat_7.0.68_(violetagg)/General"><strong>General</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Allow to configure multiple JUnit test class patterns with the build

+        property <code>test.name</code> and document the property in

+        BUILDING.txt. (rjung)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.68 (violetagg)/Catalina"><!--()--></a><a name="Tomcat_7.0.68_(violetagg)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct implementation of

+        <code>validateClientProvidedNewSessionId</code> so client provided

+        session IDs may be rejected if validation is enabled. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56785">56785</a>: Avoid <code>NullPointerException</code> if directory

+        exists on the class path that is not readable by the Tomcat user.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57906">57906</a>: Suppress WebappClassLoader log messages when running

+        with a security manager on Java 6, caused by

+        <code>java.beans.Introspector.findExplicitBeanInfo()</code> calls

+        during evaluation of EL expressions. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58692">58692</a>: Make <code>StandardJarScanner</code> more robust. Log

+        a warning if a class path entry cannot be scanned rather than triggering

+        the failure of the web application. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58701">58701</a>: Reset the <code>instanceInitialized</code> field in

+        <code>StandardWrapper</code> when unloading a Servlet so that a new

+        instance may be correctly initialized. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58702">58702</a>: Ensure an access log entry is generated if the client

+        aborts the connection. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fixed various issues reported by Findbugs. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58735">58735</a>: Add support for the <code>X-XSS-Protection</code>

+        header to the <code>HttpHeaderSecurityFilter</code>. Patch provided by

+        Jacopo Cappellato. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58751">58751</a>: Correctly handle the case where an

+        <code>AsyncListener</code> dispatches to a Servlet on an asynchronous

+        timeout and the Servlet uses <code>sendError()</code> to trigger an

+        error page. Includes a test case based on code provided by Andy

+        Wilkinson.(markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58765">58765</a>: Change default for

+        <code>mapperContextRootRedirectEnabled</code> to <code>true</code> since

+        this is required for correct session management because of the default

+        for <code>sessionCookiePathUsesTrailingSlash</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add the <code>StatusManagerServlet</code> to the list of Servlets that

+        can only be loaded by privileged applications. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Simplify code and fix messages in

+        <code>org.apache.catalina.core.DefaultInstanceManager</code> class.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that the proper file encoding if specified will be used when

+        a readme file is served by DefaultServlet. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix declaration of <code>localPort</code> attribute of Connector MBean:

+        it is read-only. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58766">58766</a>: Make skipping non-class files during annotation

+        scanning faster by checking the file name first. Improve debug logging.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58768">58768</a>: Log a warning if a redirect fails because of an

+        invalid location. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58836">58836</a>: 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)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Make sure that shared Digester is reset in an unlikely error case

+        in <code>HostConfig.deployWAR()</code>. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix a potential JDBC resource leak in DataSourceRealm. (schultz)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58900">58900</a>: Correctly undeploy symlinked resources and prevent an

+        infinite cycle of deploy / undeploy. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Protect initialization of <code>ResourceLinkFactory</code> when

+        running with a SecurityManager. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        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

+        <code>sessionAttributeFilter</code> to

+        <code>sessionAttributeNameFilter</code>. 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)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Extend the session attribute filtering options to include filtering

+        based on the implementation class of the value and optional

+        <code>WARN</code> level logging if an attribute is filtered. These

+        options are available for all of the Manager implementations that ship

+        with Tomcat. When a <code>SecurityManager</code> is used filtering will

+        be enabled by default. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58905">58905</a>: Ensure that <code>Tomcat.silence()</code> silences the

+        correct logger and respects the current setting. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58946">58946</a>: Ensure that the request parameter map remains

+        immutable when processing via a RequestDispatcher. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.68 (violetagg)/Coyote"><!--()--></a><a name="Tomcat_7.0.68_(violetagg)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        New configuration option <code>ajpFlush</code> for the AJP connectors

+        to disable the sending of AJP flush packets. (rjung)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.68 (violetagg)/Jasper"><!--()--></a><a name="Tomcat_7.0.68_(violetagg)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix handling of missing messages in

+        <code>org.apache.el.util.MessageFactory</code>. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ignore <code>engineOptionsClass</code> and <code>scratchdir</code> when

+        running under a security manager. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.68 (violetagg)/Cluster"><!--()--></a><a name="Tomcat_7.0.68_(violetagg)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        In order to avoid that the heartbeat thread and the background thread to

+        run <code>Channel.heartbeat</code> simultaneously, if

+        <code>heartbeatBackgroundEnabled</code> of <code>SimpleTcpCluster</code>

+        set to <code>true</code>, ensure that the heartbeat thread does not

+        start. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.68 (violetagg)/WebSocket"><!--()--></a><a name="Tomcat_7.0.68_(violetagg)/WebSocket"><strong>WebSocket</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57489">57489</a>: Ensure <code>onClose()</code> is called when a

+        WebSocket connection is closed even if the sending of the close message

+        fails. Includes test cases by Barry Coughlan. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        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)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.68 (violetagg)/Web Applications"><!--()--></a><a name="Tomcat_7.0.68_(violetagg)/Web_Applications"><strong>Web Applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct some typos in the JNDI resources How-To. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Don't create sessions unnecessarily in the Manager application. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Don't create sessions unnecessarily in the Host Manager application.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58723">58723</a>: 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)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        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 <code>unpackWARs</code> is <code>true</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58935">58935</a>: Remove incorrect references in the documentation to

+        using <code>jar:file:</code> URLs with the Manager application. (markt) 

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.68 (violetagg)/Tribes"><!--()--></a><a name="Tomcat_7.0.68_(violetagg)/Tribes"><strong>Tribes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add support for the startup notification of local members in the static

+        cluster. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ignore the unnecessary member remove operation from different domain.

+        (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add support for the shutdown notification of local members in the static

+        cluster. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that asynchronous session replication thread is a daemon thread.

+        (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.68 (violetagg)/Other"><!--()--></a><a name="Tomcat_7.0.68_(violetagg)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update the NSIS Installer used to build the Windows Installers to

+        version 2.50. (markt/kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.67 (violetagg)"><!--()--></a><a name="Tomcat_7.0.67_(violetagg)"><strong>Tomcat 7.0.67 (violetagg)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2015-12-10</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.67 (violetagg)/Catalina"><!--()--></a><a name="Tomcat_7.0.67_(violetagg)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56917">56917</a>: As per RFC7231 (HTTP/1.1), allow HTTP/1.1 and later

+        redirects to use relative URIs. This is controlled by a new attribute

+        <code>useRelativeRedirects</code> on the <strong>Context</strong> and

+        defaults to <code>true</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58660">58660</a>: Correct a regression in 7.0.66 caused by the change

+        that moved the redirection for context roots from the Mapper to the

+        Default Servlet. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fixed potential NPE in <code>HostConfig</code> while deploying an

+        application. Issue reported by coverity scan. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58655">58655</a>: Fix an <code> IllegalStateException</code> when

+        calling <code>HttpServletResponse.sendRedirect()</code> with the

+        <code>RemoteIpFilter</code>. This was caused by trying to correctly

+        generate the absolute URI for the redirect. With the fix for

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56917">56917</a>, redirects may now be relative making the

+        <code>sendRedirect()</code> implementation for the

+        <code>RemoteIpFilter</code> 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)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.67 (violetagg)/WebSocket"><!--()--></a><a name="Tomcat_7.0.67_(violetagg)/WebSocket"><strong>WebSocket</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58658">58658</a>: Correct a regression in 7.0.66 that prevented Tomcat

+        from starting on Java 6 unless the WebSocket JARs (that require Java 7)

+        were removed. (markt) 

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.67 (violetagg)/Web Applications"><!--()--></a><a name="Tomcat_7.0.67_(violetagg)/Web_Applications"><strong>Web Applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add a description of the default value of

+        <code>heartbeatSleeptime</code> attribute and <code>optionCheck</code>

+        attribute in the cluster channel docs. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.67 (violetagg)/Tribes"><!--()--></a><a name="Tomcat_7.0.67_(violetagg)/Tribes"><strong>Tribes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix potential NPE in <code>AbstractReplicatedMap.breakdown()</code>.

+        (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.66 (violetagg)"><!--()--></a><a name="Tomcat_7.0.66_(violetagg)"><strong>Tomcat 7.0.66 (violetagg)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.66 (violetagg)/General"><!--()--></a><a name="Tomcat_7.0.66_(violetagg)/General"><strong>General</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58596">58596</a>: Clarify the description in RUNNING.txt of how

+        environment variables are used. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.66 (violetagg)/Catalina"><!--()--></a><a name="Tomcat_7.0.66_(violetagg)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=34319">34319</a>: Only load those keys in <code>StoreBase.processExpire</code>

+        from JDBCStore, that are old enough, to be expired. Based on a patch

+        by Tom Anderson. (fschumacher)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56777">56777</a>: Allow file based configuration resources (user

+        database, certificate revocation lists, keystores and trust stores) to

+        be configured using URLs as well as files. Back-port provided by Huxing

+        Zhang. (markt/violetagg)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57741">57741</a>: Enable the CGI servlet to use the standard error page

+        mechanism. Note that if the CGI servlet's debug init parameter is

+        set to 10 or higher then the standard error page mechanism will be

+        bypassed and a debug response generated by the CGI servlet will be

+        returned instead. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58486">58486</a>: Protect against two further possible memory leaks

+        associated with XML parsing. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58497">58497</a>: Make <code>AbstractHttp11Processor</code> easy to

+        extend. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58508">58508</a>: Escape role names when generating associated MBeans in

+        case the role name contains characters not permitted in an MBean name.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58522">58522</a>: Fixed concurrency issue when iterating web

+        application's resources. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58534">58534</a>: Removed repeated conditional tests in

+        <code>o.a.tomcat.websocket.pojo.PojoMethodMapping</code> and

+        <code>o.a.tomcat.util.net.AprEndpoint</code>

+        Patch provided by Anthony Whitford. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58535">58535</a>: Use <code>Collections.reverseOrder</code>

+        when a reverse ordering is needed. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58537">58537</a>: Some of the inner classes in

+        <code>o.a.catalina.valves.ExtendedAccessLogValve</code> are made static.

+        Patch provided by Anthony Whitford. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58540">58540</a>: Removed unused code from

+        <code>o.a.catalina.connector.Request</code>.

+        Patch provided by Anthony Whitford. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58541">58541</a>, <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58544">58544</a>: It is more efficient to call

+        <code>Integer.toString(int)</code> instead of

+        <code>Integer.valueOf(int).toString()</code> when only a string

+        representation of a primitive is needed. Based on a patch provided by

+        Anthony Whitford. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58541">58541</a>, <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58547">58547</a>: It is more efficient to call

+        <code>valueOf(...)</code> instead of Number constructor. Based on a

+        patch provided by Anthony Whitford. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58545">58545</a>: In some use cases it is more efficient to use

+        <code>Map.entrySet()</code> instead of <code>Map.keySet()</code>

+        Based on a patch provided by Anthony Whitford. (violetagg)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add a new RestCsrfPreventionFilter that provides basic CSRF protection

+        for REST APIs. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58581">58581</a>: If a custom error page fails, fall back to the

+        standard error page rather than throwing an NPE. Based on a patch by

+        Huxing Zhang. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58582">58582</a>: Combined realm should perform background processing

+        on its sub-realms. Based upon a patch provided by Aidan. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Handle the unlikely case where different versions of a web application

+        are deployed with different session settings. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add a new Context option, enabled by default, that enables an additional

+        check that a client provided session ID is in use in at least one other

+        web application before allowing it to be used as the ID for a new

+        session in the current web application. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add support for DIGEST authentication to the JNDIRealm. Based on a patch

+        by Alexis Hassler. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58603">58603</a>: Ensure that

+        <code>HttpServletRequest.getRequestURL()</code> returns the correct

+        value when using the <code>RemoteIpFilter</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that in an embedded Tomcat the logging configuration is

+        not lost during garbage collection. (violetagg)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Move the functionality that provides redirects for context roots and

+        directories where a trailing <code>/</code> is added from the Mapper to

+        the <code>DefaultServlet</code>. This enables such requests to be

+        processed by any configured Valves and Filters before the redirect is

+        made. This behaviour is configurable via the

+        <code>mapperContextRootRedirectEnabled</code> and

+        <code>mapperDirectoryRedirectEnabled</code> attributes of the Context

+        which may be used to restore the previous behaviour. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58635">58635</a>: Enable break points to be set within agent code when

+        running Tomcat with a Java agent. Based on a patch by Huxing Zhang.

+        (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add path parameter handling to

+        <code>HttpServletRequest.getContextPath()</code>. This is a follow-up to

+        the fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57215">57215</a>. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.66 (violetagg)/Jasper"><!--()--></a><a name="Tomcat_7.0.66_(violetagg)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57136#c25">57136#c25</a>: Implement a setting that controls what quoting

+        rule is used when parsing EL expressions in attributes on a JSP page

+        (chapter JSP.1.6 of specification). The setting name is

+        <code>quoteAttributeEL</code> and it is configured as initialisation

+        parameter of JSP Servlet (per web application configuration is possible)

+        and as a command line option for JspC. The default value was changed to

+        <code>true</code>, which restores behaviour implemented in

+        Tomcat 7.0.64. It means that attribute quoting is applied on top of EL

+        quoting. This provides better compatibility with older versions of

+        Tomcat and other implementations. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.66 (violetagg)/Cluster"><!--()--></a><a name="Tomcat_7.0.66_(violetagg)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Optimize the session lock range in DeltaManager.requestCompleted.

+        (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Enable an explicit configuration of local member in the static cluster

+        membership. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix potential integer overflow in <code>DeltaSession</code>.

+        Reported by coverity scan. (fschumacher)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.66 (violetagg)/Tribes"><!--()--></a><a name="Tomcat_7.0.66_(violetagg)/Tribes"><strong>Tribes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Distinguish the handling of the shutdown payload and member verification

+        clearly. When handling shutdown payload, verification completion message

+        is not required. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When starting the <code>StaticMembershipInterceptor</code>,

+        <code>StaticMembershipInterceptor</code> checks  the required

+        Interceptors. If the required Interceptor does not exist, it issues

+        warning logs. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        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)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct the warning log of when the member that is not registered in the

+        membership is detected. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        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)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.66 (violetagg)/WebSocket"><!--()--></a><a name="Tomcat_7.0.66_(violetagg)/WebSocket"><strong>WebSocket</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Use instance manager for server endpoint instances. (remm)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55006">55006</a>: The WebSocket client now honors the

+        <code>java.net.java.net.ProxySelector</code> configuration (using the

+        HTTP type) when establishing WebSocket connections to servers. Based on

+        a patch by Niki Dokovski. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58624">58624</a>: Correct a thread safety issue that meant that blocking

+        message writes could block indefinitely if the WebSocket connection was

+        closed while a message write was in progress. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.66 (violetagg)/Web applications"><!--()--></a><a name="Tomcat_7.0.66_(violetagg)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Make it clear in the documentation for the CGI servlet that the debug

+        page is not considered secure and should not be used in production.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        The <code>domain</code> attribute of <code>StaticMember</code> is not

+        required but optional. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58631">58631</a>: Correct the continuation character use in the Windows

+        Service How-To page of the documentation web application. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.66 (violetagg)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.66_(violetagg)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58489">58489</a>: Correct QueryStatsComparator to hold up the

+        general contract for Comparator. (fschumacher)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When creating a <code>QueryStats</code> object, ensure that

+        <code>maxQueries</code> is checked. If <code>maxQueries</code> is a

+        value less than or equal to 0, <code>QueryStats</code> are never

+        created. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix potential integer overflow in <code>ConnectionPool</code> and

+        <code>PooledConnection</code>. Reported by coverity scan. (fschumacher)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.65 (violetagg)"><!--()--></a><a name="Tomcat_7.0.65_(violetagg)"><strong>Tomcat 7.0.65 (violetagg)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2015-10-19</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.65 (violetagg)/Catalina"><!--()--></a><a name="Tomcat_7.0.65_(violetagg)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57681">57681</a>: Add a web application class loader implementation that

+        supports the parallel loading of web application classes. Use of this

+        feature requires a Java 7 or later JRE. Based on a patch by Huxing

+        Zhang. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58187">58187</a>: Correct a regression in the fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57765">57765</a>

+        that meant that deployment of web applications deployed via the Manager

+        application was delayed until the next execution of the automatic

+        deployment background process. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58284">58284</a>: Correctly implement session serialization so

+        non-serializable attributes are skipped with a warning. Patch provided

+        by Andrew Shore. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58313">58313</a>: Fix concurrent access of encoders map when clearing

+        encoders prior to switch to async. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58320">58320</a>: Fix concurrent access of request attributes which is

+        possible during asynchronous processing. (markt)

+      </td></tr> 

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        In preparation for implementing enhancement <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57681">57681</a>, replace

+        the use of the <code>StandardClassLoader</code> with

+        <code>URLClassLoader</code>. This removes the server class loader from

+        JMX. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58352">58352</a>: Always trigger a thread dump if Tomcat fails to stop

+        gracefully from <code>catalina.sh</code> even if using

+        <code>-force</code>. Patch provided by  Alexandre Garnier. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58416">58416</a>: Correctly detect when a forced stop fails to stop

+        Tomcat because the Tomcat process is waiting on some system call or is

+        uninterruptible. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58436">58436</a>: Fix some rare data races in JULI's

+        <code>ClassLoaderLogManager</code> during shutdown. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.65 (violetagg)/Coyote"><!--()--></a><a name="Tomcat_7.0.65_(violetagg)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct some edge cases in <code>RequestUtil.normalize()</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58275">58275</a>: The IBM JREs accept cipher suite names starting with

+        <code>TLS_</code> or <code>SSL_</code> but when listing the supported

+        cipher suites only the <code>SSL_</code> version is reported. This can

+        break Tomcat's check that at least one requested cipher suite is

+        supported. Tomcat now includes a work-around so either form of the

+        cipher suite name can be used when running on an IBM JRE. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58357">58357</a>: For reasons not currently understood when the

+        APR/native connector is used with OpenSSL reads can return an error code

+        when there is no apparent error. This was work-around for HTTP upgrade

+        connections by treating this as <code>EAGAIN</code>. The same fix has

+        now been applied to the standard HTTP connector. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57799">57799</a>: Remove useless sendfile check for NIO SSL. (remm)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.65 (violetagg)/Jasper"><!--()--></a><a name="Tomcat_7.0.65_(violetagg)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57136">57136</a>: Correct a regression in the previous fix for this

+        issue. <code>\${</code> should only be an escape for <code>${</code>

+        within an EL expression. Within a JSP page <code>\$</code> should be an

+        escape for <code>$</code>. The EL specification applies when parsing the

+        expression delimited by <code>${</code> and <code>}</code>. Parsing of

+        the delimiting <code>${</code> and <code>}</code> is the responsibility

+        of the JSP specification. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58296">58296</a>: Fix a memory leak in the JSP unloading feature that

+        meant that using a value other than <code>-1</code> for

+        <code>maxLoadedJsps</code> triggered a memory leak once the limit was

+        reached. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58340">58340</a>: Improve error reporting for tag files packaged in

+        JARs. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58444">58444</a>: Ensure that JSPs work with any custom base class that

+        meets the requirements defined in the JSP specification without

+        requiring that base class to implement Tomcat specific code. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.65 (violetagg)/Cluster"><!--()--></a><a name="Tomcat_7.0.65_(violetagg)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix a default clusterListeners in <code>SimpleTcpCluster</code>. The

+        optimal default value is different for each session manager.

+        <code>ClusterSessionListener</code> is never used in

+        <code>BackupManager</code>. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct log messages in case of using <code>BackupManager</code>.

+        (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.65 (violetagg)/WebSocket"><!--()--></a><a name="Tomcat_7.0.65_(violetagg)/WebSocket"><strong>WebSocket</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58342">58342</a>: Fix a copy and paste error that meant MessageHandler

+        removal could fail for binary and pong MessageHandlers. Patch provided

+        by DJ. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58414">58414</a>: Correctly handle sending zero length messages when

+        using per message deflate. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.65 (violetagg)/Web applications"><!--()--></a><a name="Tomcat_7.0.65_(violetagg)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct documentation for cluster-howto. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.65 (violetagg)/Extras"><!--()--></a><a name="Tomcat_7.0.65_(violetagg)/Extras"><strong>Extras</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure JULI adapters does not include the LogFactoryImpl class. Patch

+        provided by Benjamin Gandon. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.65 (violetagg)/Tribes"><!--()--></a><a name="Tomcat_7.0.65_(violetagg)/Tribes"><strong>Tribes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add support for configurations of <code>ChannelListener</code> and

+        <code>MembershipListener</code> in server.xml. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct log messages in case of using <code>ReplicatedMap</code>.

+        (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.65 (violetagg)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.65_(violetagg)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Make sure the pool has been properly configured when attributes that

+        related to the pool size are changed via JMX. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.64 (violetagg)"><!--()--></a><a name="Tomcat_7.0.64_(violetagg)"><strong>Tomcat 7.0.64 (violetagg)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2015-08-25</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.64 (violetagg)/Catalina"><!--()--></a><a name="Tomcat_7.0.64_(violetagg)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55317">55317</a>: Facilitate weaving by allowing ClassFileTransformer to

+        be added to WebappClassLoader. Patch by Nick Williams. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58031">58031</a>: Make the (first) reason parameter parsing failed

+        available as a request attribute and then use it to provide a better 

+        status code via the FailedRequstFilter (if configured). (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58086">58086</a>: Ensure that WAR URLs are handled properly when using

+        Apache Ant for web application deployment. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58094">58094</a>: Fix cosmetic error log when using non standard

+        non cacheable resources, like with the empty resources used in some

+        tests. (remm)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58096">58096</a>: Classes loaded from <code>/WEB-INF/classes/</code>

+        should use that directory as their code base. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix possible resource leaks by closing streams properly.

+        Issues reported by Coverity Scan. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58116">58116</a>: Fix a regression in the fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57281">57281</a> that

+        broke Comet support when running under a security manager. Based on a

+        patch provided by Johno Crawford. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58179">58179</a>: Fix a thread safety issues that could mean concurrent

+        threads setting the same attribute on a <code>ServletContext</code>

+        could both see <code>null</code> as the old value. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58192">58192</a>: Correct a regression in the previous fix for

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58023">58023</a>. Ensure that classes are associated with their manifest

+        even if the class file is first read (and cached) without the manifest.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix thread safety issue in the <code>AsyncContext</code> implementation

+        that meant a sequence of <code>start();dispatch();</code> calls using

+        non-container threads could result in a previous dispatch interfering

+        with a subsequent start. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.64 (violetagg)/Coyote"><!--()--></a><a name="Tomcat_7.0.64_(violetagg)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57943">57943</a>: Prevent the same socket being added to the cache

+        twice. Patch based on analysis by Ian Luo / Sun Qi. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add <code>text/javascript,application/javascript</code> to the default

+        list of compressable MIME types. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58103">58103</a>: When pipelining requests, and the previous request was

+        an async request, ensure that the socket is removed from the waiting

+        requests so that the async timeout thread doesn't process it during the

+        next request. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix a concurrency issue that meant that a change in socket timeout (e.g.

+        when switching to asynchronous I/O) did not always take effect

+        immediately. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        In the AJP and HTTP NIO connectors, ensure that the socket timeout is

+        correctly set before adding the socket back to the poller for read.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58157">58157</a>: Ensure that the handling of async timeouts does not

+        result in an unnecessary dispatch to a container thread that could

+        result in the current socket being added to the Poller multiple times

+        with multiple attempts to process the same event for the same socket.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct a couple of edge cases in <code>RequestUtil.normalize()</code>.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.64 (violetagg)/Jasper"><!--()--></a><a name="Tomcat_7.0.64_(violetagg)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58110">58110</a>: Like scriptlet sections, declaration sections of JSP

+        pages have a one-to-one mapping of lines to the generated .java file.

+        Use this information to provide more accurate error messages if a

+        compilation error occurs in a declaration section. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58119">58119</a>: When tags are compiled they must be placed in the

+        org/apache/jsp/tag/web directory. Correct a regression in the fix for

+        52725. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58178">58178</a>: Expressions in a tag file should use the tag

+        file's <code>PageContext</code> rather than that of the containing

+        page. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.64 (violetagg)/WebSocket"><!--()--></a><a name="Tomcat_7.0.64_(violetagg)/WebSocket"><strong>WebSocket</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58166">58166</a>: Allow applications to send close codes in the range

+        3000-4999 inclusive. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58232">58232</a>: Avoid possible NPE when adding endpoints

+        programmatically to the

+        <code>javax.websocket.server.ServerContainer</code>.

+        Based on a patch provided by bastian.(violetagg)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.64 (violetagg)/Web applications"><!--()--></a><a name="Tomcat_7.0.64_(violetagg)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct the incorrect document of <code>QueryTimeoutInterceptor</code>.

+        The setting value is not in milliseconds but in seconds. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58112">58112</a>: Update the documentation for using the Catalina tasks

+        in an Apache Ant build file. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve the Javadoc for some of the APR socket read functions that have

+        inconsistent behaviour for return values. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58255">58255</a>: Document the Semaphore valve. Patch provided by

+        Kyohei Nakamura. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.64 (violetagg)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.64_(violetagg)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix potential NPE in <code>QueryTimeoutInterceptor</code>. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add support for stopping the pool cleaner via JMX. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        The <code>fairness</code> attribute and

+        <code>ignoreExceptionOnPreLoad</code> attribute do not allow a change

+        via JMX. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        If the <code>timeBetweenEvictionRunsMillis</code> attribute is changed

+        via jmx, it should restart the pool cleaner because this attribute

+        affects the execution interval of the pool cleaner. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Eliminate the dependence on <code>maxActive</code> of busy queues and

+        idle queue in order to enable the expansion of the pool size via JMX.

+        (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.64 (violetagg)/Other"><!--()--></a><a name="Tomcat_7.0.64_(violetagg)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Update sample Eclipse IDE configuration to exclude test/webapp* and

+        similar paths from compiler sourcepath. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.63 (violetagg)"><!--()--></a><a name="Tomcat_7.0.63_(violetagg)"><strong>Tomcat 7.0.63 (violetagg)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2015-07-06</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.63 (violetagg)/Catalina"><!--()--></a><a name="Tomcat_7.0.63_(violetagg)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57938">57938</a>: Correctly handle empty form fields when a form is

+        submitted as <code>multipart/form-data</code>, the

+        <code>maxPostSize</code> attribute of the Connector has been set to a

+        negative value and the Context has been configured with a value of

+        <code>true</code> for <code>allowCasualMultipartParsing</code>. The

+        meaning of the value zero for the <code>maxPostSize</code> has also been

+        changed to mean a limit of zero rather than no limit to align it with

+        <code>maxSavePostSize</code> and to be more intuitive. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54618">54618</a>: Add a new <code>HttpHeaderSecurityFilter</code> that

+        adds the <code>Strict-Transport-Security</code>,

+        <code>X-Frame-Options</code> and <code>X-Content-Type-Options</code>

+        HTTP headers to the response. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add a workaround for issues with SPNEGO authentication when running on

+        Java 8 update 40 and later. The workaround should be safe for earlier

+        Java versions but it can be disabled with the

+        <code>applyJava8u40Fix</code> attribute of the SPNEGO authenticator if

+        necessary. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57154">57154</a>: Add support for web applications (Context elements)

+        that do not have a docBase. This is primarily for use when embedding but

+        it also fixes a rare issue when running the unit test. Patch provided by

+        Huxing Zhang. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57959">57959</a>: Fixed deadlock in

+        <code>org.apache.juli.FileHandler</code> when log is rotated.

+        (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57977">57977</a>: Correctly bind and unbind the web application class

+        loader during execution of the PersistentValve. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=58023">58023</a>: Fix potentially excessive memory usage due to

+        unnecessary caching of JAR manifests in the web application class

+        loader. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57700">57700</a>: Ensure that Container event

+        <code>ADD_CHILD_EVENT</code> will be sent in all cases. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add configuration fields for header names in SSLValve. (remm)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.63 (violetagg)/Coyote"><!--()--></a><a name="Tomcat_7.0.63_(violetagg)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57265">57265</a>: Further fix to address a potential threading issue

+        for NIO when sendfile is used in conjunction with TLS. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57931">57931</a>: Ensure that TLS connections with the NIO HTTP

+        connector that experience issues during the handshake (e.g. missing or

+        invalid client certificate) are closed cleanly and that the client

+        receives the correct error code rather than simply closing the

+        connection. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57943">57943</a>: Added a work-around to catch

+        <code>ConcurrentModificationException</code>s during Poller timeout

+        processing that were causing the Poller thread to stop. The root cause

+        of these exceptions is currently unknown. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix possible very long (1000 seconds) timeout with APR/native connector.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Support "-" separator in the SSLProtocol configuration of the

+        APR/native connector for protocol exclusion. (rjung)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.63 (violetagg)/Cluster"><!--()--></a><a name="Tomcat_7.0.63_(violetagg)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Make sure that stream is closed after using it in

+        <code>DeltaSession.applyDiff()</code>. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.63 (violetagg)/WebSocket"><!--()--></a><a name="Tomcat_7.0.63_(violetagg)/WebSocket"><strong>WebSocket</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57676">57676</a>: List conflicting WebSocket endpoint classes when

+        there is a path conflict. Based upon a patch proposed by yangkun.

+        (schultz)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Extend support for the <code>permessage-deflate</code> extension to the

+        client implementation.

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57969">57969</a>: Provide path parameters to POJO via per session

+        <code>javax.websocket.server.ServerEndpointConfig</code> as they vary

+        between different requests. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57974">57974</a>: Session.getOpenSessions should return all sessions

+        associated with a given endpoint instance, rather than all sessions

+        from the endpoint class. (remm)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.63 (violetagg)/Web applications"><!--()--></a><a name="Tomcat_7.0.63_(violetagg)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57282">57282</a>: Update request processing sequence diagrams. Updated

+        diagrams provided by Stephen Chen. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57971">57971</a>: Correct the documentation for the cluster

+        configuration setting <code>recoverySleepTime</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57758">57758</a>: Add document of <code>testOnConnect</code> attribute

+        in jdbc-pool doc. (kfujino)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add description of <code>validatorClassName</code> attribute to testXXXX

+        attributes in jdbc-pool docs. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.63 (violetagg)/Tribes"><!--()--></a><a name="Tomcat_7.0.63_(violetagg)/Tribes"><strong>Tribes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that the state transfer flag is updated to true only when the map

+        states have been transferred correctly from existing map members.

+        (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Do not set the nodes that failed to replication to the backup nodes.

+        Ensure that the nodes that the data has been successfully replicated are

+        set to the backup node. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When failed to replication, rather than all member is handled as a

+        failed member, exclude the failure members from backup members.

+        (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.63 (violetagg)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.63_(violetagg)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Refactoring of the <code>removeOldest</code> method in

+        <code>SlowQueryReport</code> to behave as expected. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57783">57783</a>: Fix <code>NullPointerException</code> in

+        <code>SlowQueryReport</code>. To avoid this NPE, Refactor

+        <code>SlowQueryReport#removeOldest</code> and handle the abandoned

+        connection properly. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.63 (violetagg)/Other"><!--()--></a><a name="Tomcat_7.0.63_(violetagg)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update package renamed Apache Commons BCEL to r1682271 to pick up some

+        some code clean up. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update package renamed Apache Commons File upload to r1682322 to pick up

+        the post 1.3.1 fixes. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update package renamed Apache Commons Codec to r1682326. No functional

+        changes. Javadoc only. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.62 (violetagg)"><!--()--></a><a name="Tomcat_7.0.62_(violetagg)"><strong>Tomcat 7.0.62 (violetagg)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2015-05-14</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.62 (violetagg)/Catalina"><!--()--></a><a name="Tomcat_7.0.62_(violetagg)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Allow logging of the remote port in the access log using the format

+        pattern <code>%{remote}p</code>. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57765">57765</a>: When checking last modified times as part of the

+        automatic deployment process, account for the fact that

+        <code>File.lastModified()</code> has a resolution of one second to

+        ensure that if a file has been modified within the last second, the

+        latest version of the file is always used. Note that a side-effect of

+        this change is that files with modification times in the future are

+        treated as if they are unmodified. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Align redeploy resource modification checking with reload modification

+        checking so that now, in both cases, a change in modification time

+        rather than an increase in modification time is used to determine if the

+        resource has changed. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Cleanup <code>o.a.tomcat.util.digester.Digester</code> from debug

+        messages that do not give any valuable information. Patch provided

+        by Polina Genova. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57772">57772</a>: When reloading a web application and a directory

+        representing an expanded WAR needs to be deleted, delete the directory

+        after the web application has been stopped rather than before to avoid

+        potential ClassNotFoundExceptions. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57801">57801</a>: Improve the error message in the start script in case

+        the PID read from the PID file is already owned by a process. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57824">57824</a>: Correct a regression in the fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57252">57252</a>

+        that broke request listeners for non-async requests that triggered an

+        error that was handled by the ErrorReportingValve. (markt/violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57841">57841</a>: Improve error logging during web application start.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57856">57856</a>: Ensure that any scheme/port changes implemented by the

+        <code>RemoteIpFilter</code> also affect

+        <code>HttpServletResponse.sendRedirect()</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57896">57896</a>: Support defensive copying of "cookie" header so that

+        unescaping double quotes in a cookie value does not corrupt original

+        value of "cookie" header. This is an opt-in feature, enabled by

+        <code>org.apache.tomcat.util.http.ServerCookie.PRESERVE_COOKIE_HEADER</code>

+        or <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code>

+        system property. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.62 (violetagg)/Coyote"><!--()--></a><a name="Tomcat_7.0.62_(violetagg)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57779">57779</a>: When an I/O error occurs on a non-container thread

+        only dispatch to a container thread to handle the error if using Servlet

+        3+ asynchronous processing. This avoids potential deadlocks if an

+        application is performing I/O on a non-container thread without using

+        the Servlet 3+ asynchronous API. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57833">57833</a>: When using JKS based keystores for NIO, ensure that

+        the key alias is always converted to lower case since that is what JKS

+        key stores expect. Based on a patch by  Santosh Giri Govind M. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57837">57837</a>: Add <code>text/css</code> to the default list of

+        compressable MIME types. (markt) 

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.62 (violetagg)/Jasper"><!--()--></a><a name="Tomcat_7.0.62_(violetagg)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57845">57845</a>: Ensure that, if the same JSP is accessed directly and

+        via a <code>&lt;jsp-file&gt;</code> declaration in web.xml, updates to

+        the JSP are visible (subject to the normal rules on re-compilation)

+        regardless of how the JSP is accessed. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57855">57855</a>: Explicitly handle the case where a

+        <code>MethodExpression</code> is invoked with null or the wrong number

+        of parameters. Rather than failing with an

+        <code>ArrayIndexOutOfBoundsException</code> or a

+        <code>NullPointerException</code> throw an

+        <code>IllegalArgumentException</code> with a useful error message.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.62 (violetagg)/Cluster"><!--()--></a><a name="Tomcat_7.0.62_(violetagg)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add new attribute that send all actions for session across Tomcat

+        cluster nodes. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Remove unused <code>pathname</code> attribute in mbean definition of

+        <code>BackupManager</code>. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57338">57338</a>:  Improve the ability of the ClusterSingleSignOn valve

+        to handle nodes being added and removed from the Cluster at run time.

+        (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Avoid unnecessary call of <code>DeltaRequest.addSessionListener()</code>

+        in non-primary nodes. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.62 (violetagg)/WebSocket"><!--()--></a><a name="Tomcat_7.0.62_(violetagg)/WebSocket"><strong>WebSocket</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57762">57762</a>: Ensure that the WebSocket client correctly detects

+        when the connection to the server is dropped. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57776">57776</a>: Revert the 8.0.21 fix for the

+        <code>permessage-deflate</code> implementation and incorrect op-codes

+        since the fix was unnecessary (the bug only affected trunk) and the fix

+        broke rather than fixed <code>permessage-deflate</code> if an

+        uncompressed message was converted into more than one compressed

+        message. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix log name typo in <code>WsRemoteEndpointImplServer</code> class,

+        caused by a copy-paste. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57788">57788</a>: Avoid NPE when looking up a class hierarchy without

+        finding anything. (remm)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Make WebSocket client more robust when handling errors during the close

+        of a WebSocket session. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.62 (violetagg)/Web applications"><!--()--></a><a name="Tomcat_7.0.62_(violetagg)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57759">57759</a>: Add information to the keyAlias documentation to make

+        it clear that the order keys are read from the keystore is

+        implementation dependent. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57864">57864</a>: Update the documentation web application to make it

+        clearer that hex values are not valid for cluster send options. Based on

+        a patch by Kyohei Nakamura. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.62 (violetagg)/Tribes"><!--()--></a><a name="Tomcat_7.0.62_(violetagg)/Tribes"><strong>Tribes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix a concurrency issue when a backup message that has all session data

+        and a backup message that has diff data are processing at the same time.

+        This fix ensures that <code>MapOwner</code> is set to

+        <code>ReplicatedMapEntry</code>. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Clarify the handling of Copy message and Copy nodes. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Copy node does not need to send the entry data. It is enough to send

+        only the node information of the entry. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <code>ReplicatedMap</code> should send the Copy message when

+        replicating. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix behavior of <code>ReplicatedMap</code> when member has disappeared.

+        If map entry is primary, rebuild the backup members. If primary node of

+        map entry has disappeared, backup node is promoted to primary. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When a map member has been added to <code>ReplicatedMap</code>, make

+        sure to add it to backup nodes list of all other members. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.61 (violetagg)"><!--()--></a><a name="Tomcat_7.0.61_(violetagg)"><strong>Tomcat 7.0.61 (violetagg)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2015-04-07</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.61 (violetagg)/Catalina"><!--()--></a><a name="Tomcat_7.0.61_(violetagg)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55988">55988</a>: Correct the check used for Java 8 JSSE

+        server-preferred TLS cipher suite ordering. Ensure that SSL parameters

+        are provided to <code>SSLServerSocket</code> and <code>SSLEngine</code>.

+        Patch provided by Ognjen Blagojevic. (violetagg)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.61 (violetagg)/WebSocket"><!--()--></a><a name="Tomcat_7.0.61_(violetagg)/WebSocket"><strong>WebSocket</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57761">57761</a>: Ensure that the opening HTTP request is correctly

+        formatted when the WebSocket client connects to a server root. (remm)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.60 (violetagg)"><!--()--></a><a name="Tomcat_7.0.60_(violetagg)"><strong>Tomcat 7.0.60 (violetagg)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.60 (violetagg)/Catalina"><!--()--></a><a name="Tomcat_7.0.60_(violetagg)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Clarify threaded usage of variables by removing volatile marker

+        in NonceInfo. Issue reported by Coverity Scan. (fschumacher)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49785">49785</a>: Enable StartTLS connections for JNDIRealm.

+        (fschumacher)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55988">55988</a>: Add support for Java 8 JSSE server-preferred TLS

+        cipher suite ordering. This feature requires Java 8

+        and is controlled by <code>useServerCipherSuitesOrder</code>

+        attribute on an HTTP connector.

+        Based upon patches provided by Ognjen Blagojevic. (schultz)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56438">56438</a>: Add logging that reports when a JAR is scanned for

+        TLDs but nothing is found so that Tomcat may be configured to skip this

+        JAR in future. Based on a patch by VIN. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56848">56848</a>: Use <code>Locale.forLanguageTag</code> to process

+        Locale headers when running on a Java 7 or later JRE. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57021">57021</a>: Improve logging in AprLifecycleListener and

+        jni.Library when Tomcat-Native DLL fails to load. Based on a patch by

+        Pravallika Peddi. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57180">57180</a>: Further fixes to support the use of arbitrary HTTP

+        methods with the CORS filter. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Warn about problematic setting of appBase. (fschumacher)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+       <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57534">57534</a>: CORS Filter should only look at media type component of

+       Content-Type request header. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that user name checking in the optional SecurityListener is

+        case-insensitive (as documented) and than the case-insensitive

+        comparison is performed using the system default Locale. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When docBase refers internal war and unpackWARs is set to false, avoid

+        registration of the invalid redeploy resource that has been added ".war"

+        extension in duplicate. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        If WAR exists, it is not necessary to trigger a reload when adding a

+        Directory. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56608">56608</a>: When deploying an external WAR, add watched resources

+        in the expanded directory based on whether the expanded directory is

+        expected to exist rather than if it does exist.

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+         When triggering a reload due to a modified watched resource, ensure

+         that multiple changed watched resources only trigger one reload rather

+         than a series of reloads.

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57601">57601</a>: Ensure that HEAD requests return the correct content

+        length (i.e. the same as for a GET) when the requested resource includes

+        a resource served by the Default servlet. (jboynes/markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57602">57602</a>: Ensure that HEAD requests return the correct content

+        length (i.e. the same as for a GET) when the requested resource includes

+        a resource served by a servlet that extends <code>HttpServlet</code>.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57621">57621</a>: When an async request completes, ensure that any

+        remaining request body data is swallowed. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57637">57637</a>: Do not create unnecessary sessions when using

+        PersistentValve. (jboynes/fschumacher)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57645">57645</a>: Correct a regression in the fix for

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57190">57190</a> that incorrectly required the path passed to

+        <code>ServletContext.getContext(String)</code> to be an exact match to a

+        path to an existing context. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Make sure that <code>unpackWAR</code> attribute of <code>Context</code>

+        is handled correctly in <code>HostConfig</code>. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When deploying a WAR file that contains a context.xml file and

+        <code>unpackWARs</code> is <code>false</code> ignore any context.xml

+        file that may exist in an expanded directory associated with the WAR.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57675">57675</a>: Correctly quote strings when using the extended

+        access log. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57704">57704</a>: Fix potential NPEs during web application start/stop

+        when <code>org.apache.tomcat.InstanceManager</code> is not initialized.

+        (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add support for <code>LAST_ACCESS_AT_START</code> system property to

+        <code>SingleSignOn</code>. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57723">57723</a>: Ensure that the Context name and path remain

+        consistent when adding a web application to an embedded Tomcat instance

+        via <code>Tomcat.addWebapp(Host,String,String,String)</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57724">57724</a>: Handle the case in the CORS filter where a user agent

+        includes an origin header for a non-CORS request. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Refactor Authenticator implementations to reduce code duplication.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When searching for SCIs

+        <code>o.a.catalina.Context.getParentClassLoader</code> will be used

+        instead of <code>java.lang.ClassLoader.getParent</code>. Thus one can

+        provide the correct parent class loader when running embedded Tomcat in

+        other environments such as OSGi. (violetagg)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.60 (violetagg)/Coyote"><!--()--></a><a name="Tomcat_7.0.60_(violetagg)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57509">57509</a>: Improve length check when writing HTTP/1.1

+        response headers: reserve space for 4 extra bytes. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57540">57540</a>: Make TLS/SSL protocol available in a new request

+        attribute

+        (<code>org.apache.tomcat.util.net.secure_protocol_version</code>).

+        (Note that AJP connectors will require <tt>mod_jk</tt> 1.2.41 or later,

+        or an as-yet-unknown version of mod_proxy_ajp, or configure the proxy

+        to send the AJP_SSL_PROTOCOL request attribute to Tomcat. Please see

+        the bug comments for details.)

+        Based upon a patch provided by Ralf Hauser. (schultz)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57544">57544</a>: Fix potential infinite loop when preparing a kept

+        alive HTTP connection for the next request. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57546">57546</a>: Ensure that a dropped network connection does not

+        leave references to the UpgradeProcessor associated with the connection

+        in memory. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57570">57570</a>: Make the processing of trailer headers with chunked

+        input optional and disabled by default. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When applying the <code>maxSwallowSize</code> limit to a connection read

+        that many bytes first before closing the connection to give the client a

+        chance to read the response. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Prevent an async timeout being processed multiple times for the same

+        socket when running on slow and/or heavily loaded systems. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57581">57581</a>: Change statistics byte counter in coyote Request

+        object to be long to allow values above 2Gb. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix a concurrency issue in the APR Poller that meant it was possible

+        under low load for a socket queued to be added to the Poller not to be

+        added for 10 seconds. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57638">57638</a>: Avoid an IllegalArgumentException when an AJP request

+        body chunk larger than the socket read buffer is being read. This

+        typically requires a larger than default AJP packetSize. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57674">57674</a>: Avoid a BufferOverflowException when an AJP response

+        body chunk larger than the socket write buffer is being written. This

+        typically requires a larger than default AJP packetSize. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Refactor Connector authentication (only used by AJP) into a separate

+        method. (markt) 

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57708">57708</a>: Implement a new feature for AJP connectors - Tomcat

+        Authorization. If the new tomcatAuthorization attribute is set to

+        <code>true</code> (it is disabled by default) Tomcat will take an

+        authenticated user name from the AJP protocol and use the appropriate

+        Realm for the request to authorize (i.e. add roles) to that user.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix an issue that meant that any pipe-lined data read by Tomcat before

+        an asynchronous request completed was lost during the completion of the

+        asynchronous request. This mean that the pipe-lined request(s) would be

+        lost and/or corrupted. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update the minimum recommended version of the Tomcat Native library (if

+        used) to 1.1.33. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.60 (violetagg)/Jasper"><!--()--></a><a name="Tomcat_7.0.60_(violetagg)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57136">57136</a>: Ensure only <code>\${</code> and <code>\#{</code> are

+        treated as escapes for <code>${</code> and <code>#{</code> rather than

+        <code>\$</code> and <code>\#</code> being treated as escapes for

+        <code>$</code> and <code>#</code> when processing literal expressions in

+        expression language. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57148">57148</a>: When coercing an object to a given type and a

+        <code>PropertyEditor</code> has been registered for the type correctly

+        coerce the empty string to <code>null</code> if the

+        <code>PropertyEditor</code> throws an exception. (kkolinko/markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.60 (violetagg)/Cluster"><!--()--></a><a name="Tomcat_7.0.60_(violetagg)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Remove unnecessary method that always returns true. The domain filtering

+        works on <code>DomainFilterInterceptor</code>. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.60 (violetagg)/WebSocket"><!--()--></a><a name="Tomcat_7.0.60_(violetagg)/WebSocket"><strong>WebSocket</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct a bug in the <code>permessage-deflate</code> implementation that

+        meant that the incorrect op-codes were used if an uncompressed message

+        was converted into more than one compressed message. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.60 (violetagg)/Web applications"><!--()--></a><a name="Tomcat_7.0.60_(violetagg)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix possible resource leaks by closing streams properly. Issues

+        reported by Coverity Scan. (fschumacher)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56058">56058</a>: Add links to the AccessLogValve documentation for

+        configuring reverse proxies and/or Tomcat to ensure that the desired

+        information is used entered in the access log when Tomcat is running

+        behind a reverse proxy. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57503">57503</a>: Make clear that the JULI integration for log4j only

+        works with log4j 1.2.x. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Remove incorrect note from context configuration page in the

+        documentation web application that stated WAR files located outside the

+        appBase were never unpacked. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57644">57644</a>: Update examples to use Apache Standard Taglib 1.2.5.

+        (jboynes)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57683">57683</a>: Ensure that if a client aborts their connection to the

+        stock ticker example (the only way a client can disconnect), the example

+        continues to work for existing and new clients. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct the documentation for deployOnStartup to make clear that if a

+        WAR file is updated while Tomcat is stopped and unpackWARs is true,

+        Tomcat will not detect the changed WAR file when it starts and will not

+        replace the unpacked WAR file with the contents of the updated WAR.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.60 (violetagg)/Extras"><!--()--></a><a name="Tomcat_7.0.60_(violetagg)/Extras"><strong>Extras</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57377">57377</a>: Remove the restriction that prevented the use of SSL

+        when specifying a bind address with the JMXRemoteLifecycleListener. Also

+        enable SSL to be configured for the registry as well as the server.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.60 (violetagg)/Tribes"><!--()--></a><a name="Tomcat_7.0.60_(violetagg)/Tribes"><strong>Tribes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Make sure that refuse the messages from a different domain in

+        <code>DomainFilterInterceptor</code>. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.60 (violetagg)/Other"><!--()--></a><a name="Tomcat_7.0.60_(violetagg)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Enhance bean factory used for JNDI resources. New attribute

+        <code>forceString</code> allows to support non-standard

+        string argument property setters. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix <code>TestAbstractAjpProcessor</code> unit test failures on

+        Windows. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Guard the digester from MbeansDescriptorsDigesterSource with its own

+        lock object. (fschumacher)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57558">57558</a>: Add missing JAR in Ant task definition required by

+        the validate task. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        List names of Testsuites that have failed or skipped tests when

+        running tests with Ant. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57703">57703</a>: Update the <code>http-method</code> definition for

+        web applications using a Servlet 2.5 descriptor as per Servlet 2.5 MR 6.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update to Tomcat Native Library version 1.1.33 to pick up the Windows

+        binaries that are based on OpenSSL 1.0.1m and APR 1.5.1. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.59 (violetagg)"><!--()--></a><a name="Tomcat_7.0.59_(violetagg)"><strong>Tomcat 7.0.59 (violetagg)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2015-02-04</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.59 (violetagg)/Jasper"><!--()--></a><a name="Tomcat_7.0.59_(violetagg)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57504">57504</a>: Initialize TLD locations cache when creating the

+        ServletContext. (jboynes)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.59 (violetagg)/Tribes"><!--()--></a><a name="Tomcat_7.0.59_(violetagg)/Tribes"><strong>Tribes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix a possible deadlock when receiver thread invokes

+        <code>mapMemberAdded()</code> while ping thread invokes

+        <code>memberAlive()</code>. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.58 (violetagg)"><!--()--></a><a name="Tomcat_7.0.58_(violetagg)"><strong>Tomcat 7.0.58 (violetagg)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.58 (violetagg)/Catalina"><!--()--></a><a name="Tomcat_7.0.58_(violetagg)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57173">57173</a>: Revert the fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56953">56953</a> that broke

+        annotation scanning in some cases. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57178">57178</a>: The CORS filter now treats <code>null</code> as a

+        valid origin that matches <code>*</code>. Patch provided by Gregor

+        Zurowski. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57180">57180</a>: Do not limit the CORS filter to only accepting

+        requests that use an HTTP method defined in RFC 7231. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57190">57190</a>: Fix <code>ServletContext.getContext(String)</code>

+        when parallel deployment is used so that the correct ServletContext is

+        returned. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57208">57208</a>: Prevent NPE in JNDI Realm when no results are found

+        in a directory context for a user with specified user name. Based on

+        a patch provided by Jason McIntosh. (violetagg)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57209">57209</a>: Add a new attribute, userSearchAsUser to the JNDI

+        Realm. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57215">57215</a>: Ensure that the result of calling

+        <code>HttpServletRequest.getContextPath()</code> is neither decoded nor

+        normalized as required by the Servlet specification. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57216">57216</a>: Improve handling of invalid context paths. A context

+        path should either be an empty string or start with a

+        <code>'/'</code> and do not end with a

+        <code>'/'</code>. Invalid context path are automatically

+        corrected and a warning is logged. The <code>null</code> and

+        <code>"/"</code> values are now correctly changed to

+        <code>""</code>. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct message that is logged when load-on-startup servlet fails

+        to load. It was logging a wrong name. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57239">57239</a>: Correct several message typos. Includes patch by

+        vladk. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Make the session id generator extensible by adding a

+        <code>SessionIdGenerator</code> interface, an abstract

+        base class and a standard implementation. (rjung)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Back-port clarification from Servlet 3.1 specification that during

+        async processing an <code>IllegalStateException</code> should be thrown

+        if <code>getRequest()</code> or <code>getResponse()</code> is called

+        after <code>complete()</code> or <code>dispatch()</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix a concurrency issue in async processing. Ensure that a non-container

+        thread can not change the async state until the container thread has

+        completed. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57252">57252</a>: Provide application configured error pages with a

+        chance to handle an async error before the built-in error reporting.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57281">57281</a>: Enable non-public Filter and Servlet classes to be

+        configured programmatically via the Servlet 3.0 API and then used

+        without error when running under a SecurityManager. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57308">57308</a>: Remove unnecessary calls to

+        <code>System.getProperty()</code> where more suitable API calls are

+        available. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add unit tests for RemoteAddrValve and RemoteHostValve. (rjung)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Allow to configure RemoteAddrValve and RemoteHostValve to

+        adopt behavior depending on the connector port. Implemented

+        by optionally adding the connector port to the string compared

+        with the patterns <code>allow</code> and <code>deny</code>. Configured

+        using <code>addConnectorPort</code> attribute on valve. (rjung)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Optionally trigger authentication instead of denial in

+        RemoteAddrValve and RemoteHostValve. This only works in

+        combination with <code>preemptiveAuthentication</code>

+        on the application context. Configured using

+        <code>invalidAuthenticationWhenDeny</code> attribute on valve. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Prevent file descriptors leak and ensure that files are closed after

+        retrieving the last modification time. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57326">57326</a>: Enable <code>AsyncListener</code> implementations to

+        re-register themselves during <code>AsyncListener.onStartAsync</code>.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57331">57331</a>: Allow ExpiresFilter to use "year" as synonym for

+        "years" in its configuration. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+          Improve SnoopServlet in unit tests. (rjung)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+          Add RequestDescriptor class to unit tests.

+          Adjust TestRewriteValve to use RequestDescriptor. (rjung)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+          Add more AJP unit tests. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57363">57363</a>: Log to stderr if LogManager is unable to read

+        configuration files rather than swallowing the exception silently.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57420">57420</a>: Make UEncoder a local variable in

+        DirContextURLConnection to make it threadsafe. Based on ideas from

+        kkolinko and violetagg. (fschumacher)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57425">57425</a>: Don't add attributes with null value or name to the

+        replicated context. (fschumacher)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57431">57431</a>: Enable usage of custom class for context creation when

+        using embedded tomcat. (fschumacher)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57446">57446</a>: Ensure that <code>ServletContextListener</code>s that

+        have limited access to <code>ServletContext</code> methods are called

+        with the same <code>ServletContext</code> instance for both

+        <code>contextInitialized()</code> and <code>contextDestroyed()</code>.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57461">57461</a>: When an instance of

+        <code>org.apache.catalina.startup.VersionLoggerListener</code> logs the

+        result of <code>System.getProperty("java.home")</code> don't report it

+        in a manner that makes it look like the <code>JAVA_HOME</code>

+        environment variable. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        While closing streams for given resources ensure that if an exception

+        happens it will be handled properly. Issue is reported by Coverity Scan.

+        (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Change Response to use UEncoder instances with shared safeChars.

+        (fschumacher)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Allow <code>VersionLoggerListener</code> to log all system properties.

+        This feature is off by default. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.58 (violetagg)/Coyote"><!--()--></a><a name="Tomcat_7.0.58_(violetagg)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57234">57234</a>: Make SSL protocol filtering to remove insecure

+        protocols case insensitive. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57265">57265</a>: Fix some potential concurrency issues with sendFile

+        and the NIO connector. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57324">57324</a>: If the client uses <code>Expect: 100-continue</code>

+        and Tomcat responds with a non-2xx response code, Tomcat also closes the

+        connection. If Tomcat knows the connection is going to be closed when

+        committing the response, Tomcat will now also send the

+        <code>Connection: close</code> response header. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57340">57340</a>: When using Comet, ensure that Socket and SocketWrapper

+        are only returned to their respective caches once on socket close (it is

+        possible for multiple threads to call close concurrently). (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57446">57446</a>: Ensure that <code>ServletContextListener</code>s that

+        have limited access to <code>ServletContext</code> methods are called

+        with the same <code>ServletContext</code> instance for both

+        <code>contextInitialized()</code> and <code>contextDestroyed()</code>.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.58 (violetagg)/Jasper"><!--()--></a><a name="Tomcat_7.0.58_(violetagg)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        CVE-2014-7810:

+        Do not use a privileged code block when evaluating EL expressions

+        when running under a security manager, which allowed to bypass code

+        restrictions. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix an issue with BeanELResolver when running under a security

+        manager. Some classes may not be accessible but may have accessible

+        interfaces. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57316">57316</a>: Fix JspC when directory name contains a character

+        sequence that appears to be URL encoded. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.58 (violetagg)/Cluster"><!--()--></a><a name="Tomcat_7.0.58_(violetagg)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        In order to enable define in <code>Cluster</code> element,

+        <code>ClusterSingleSignOn</code> implements <code>ClusterValve</code>.

+        (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix mbean descriptor of <code>ClusterSingleSignOn</code>. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57473">57473</a>: Add sanity check to FarmWebDeployer's WarWatcher to

+        detect suspected incorrect permissions on the watch directory. (schultz)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.58 (violetagg)/WebSocket"><!--()--></a><a name="Tomcat_7.0.58_(violetagg)/WebSocket"><strong>WebSocket</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct multiple issues with the flushing of batched messages that could

+        lead to duplicate and/or corrupt messages. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correctly implement headers case insensitivity. (markt/remm)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Allow optional use of user extensions. (remm)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Allow using partial binary message handlers. (remm)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Limit ping/pong message size. (remm)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Allow configuration of the time interval for the periodic event. (remm)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        More accurate annotations processing. (remm)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Allow optional default for origin header in the client. (remm)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57490">57490</a>: Make it possible to use Tomcat's WebSocket client

+        within a web application when running under a SecurityManager. Based on

+        a patch by Mikael Sterner. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add some debug logging to the WebSocket session to track session

+        creation and session closure. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.58 (violetagg)/Web applications"><!--()--></a><a name="Tomcat_7.0.58_(violetagg)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Update documentation for CGI servlet. Recommend to copy the servlet

+        declaration into web application instead of enabling it globally.

+        Correct documentation for cgiPathPrefix. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Improve HTML version of build instructions and align with

+        BUILDING.txt. Document creating second Eclipse project to compile

+        WebSocket classes with Java 7 (<code>ide-eclipse-websocket</code>

+        target added in 7.0.56). (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Improve Tomcat Manager documentation. Rearrange, add section on

+        HTML GUI, document /expire command and Server Status page. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix ambiguity of section links on Valves configuration reference page.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57238">57238</a>: Update information on SSL/TLS on Security and SSL

+        documentation pages. Based on patch by Glen Peterson. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57261">57261</a>: Add vminfo and threaddump commands to Manager

+        application. Implement <code>VminfoTask</code> and

+        <code>ThreaddumpTask</code> Ant tasks. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57323">57323</a>: Correct display of outdated sessions in sessions

+        count listing in Manager application. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add document of <code>ClusterSingleSignOn</code>. (kfujino)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Clarify documentation for <code>useBodyEncodingForURI</code>

+        attribute of a connector. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.58 (violetagg)/Other"><!--()--></a><a name="Tomcat_7.0.58_(violetagg)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        When downloading required libraries at build time, use random name

+        for temporary file and automatically create destination directory

+        (<code>base.path</code>). (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update optional Checkstyle library to 6.1.1. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Simplify <code>setproxy</code> task in <code>build.xml</code>.

+        Taskdef there is not needed since Ant 1.8.2. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve Java 7 support in <code>build.xml</code>. Check whether

+        the specified ${java.7.home} is valid. By default use Java that

+        runs Ant (${java.home}) instead of the one found on $PATH

+        to run JUnit tests. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57344">57344</a>: Provide sha1 checksum files for Tomcat downloads.

+        Correct filename patterns for apache-tomcat-*-embed.tar.gz archive

+        to exclude an *.asc file. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.57 (violetagg)"><!--()--></a><a name="Tomcat_7.0.57_(violetagg)"><strong>Tomcat 7.0.57 (violetagg)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2014-11-11</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.57 (violetagg)/Catalina"><!--()--></a><a name="Tomcat_7.0.57_(violetagg)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=47919">47919</a>: Extend the information logged when Tomcat starts to

+        optionally log the values of command line arguments (enabled by

+        default) and environment variables (disabled by default). Note that

+        the values added to CATALINA_OPTS and JAVA_OPTS environment variables

+        will be logged, as they are used to build up the command line. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56401">56401</a>: Log version information when Tomcat starts.

         (markt/kkolinko)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Redefine the <code>globalXsltFile</code> initialisation parameter of the

-        DefaultServlet as relative to CATALINA_BASE/conf or CATALINA_HOME/conf.

-        Prevent user supplied XSLTs used by the DefaultServlet from defining

-        external entities. (markt)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57022">57022</a>: Ensure SPNEGO authentication continues to work with

+        the JNDI Realm using delegated credentials with recent Oracle JREs.

+        (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Add a work around for validating XML documents (often TLDs) that use

-        just the file name to refer to refer to the JavaEE schema on which they

-        are based. (kkolinko)

+        Correct a couple of NPEs in the JNDI Realm that could be triggered with

+        when not specifying a roleBase and enabling roleSearchAsUser. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=56369">56369</a>: Ensure that removing an MBean notification listener

+        Remove the unnecessary registration of context.xml as a redeploy

+        resource. The context.xml having an external docBase has already been

+        registered as a redeploy resources at first. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve the previous fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56401">56401</a>. Avoid logging version

+        information in the constructor since it then gets logged at undesirable

+        times such as when using <code>StoreConfig</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57105">57105</a>: When parsing web.xml do not limit the buffer element

+        of the jsp-property-group element to integer values as the allowed 

+        values are <code>&lt;number&gt;kb</code> or <code>none</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update the minimum required version of the Tomcat Native library (if

+        used) to 1.1.32. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57144">57144</a>: Improve ClientAbortException to provide non-null

+        message. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        AsyncContext should remain usable until fireOnComplete is called. (remm)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        AsyncContext createListener should wrap any instantiation exception

+        using a ServletException. (remm)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.57 (violetagg)/Coyote"><!--()--></a><a name="Tomcat_7.0.57_(violetagg)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53952">53952</a>: Add support for TLSv1.1 and TLSv1.2 for APR connector.

+        Based upon a patch by Marcel &#352;ebek. This feature requires

+        Tomcat Native library 1.1.32 or later. (schultz/jfclere)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Disable SSLv3 by default for JSSE based HTTPS connectors (BIO and NIO).

+        The change also ensures that SSLv2 is disabled for these connectors

+        although SSLv2 should already be disabled by default by the JRE. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Disable SSLv3 by default for the APR/native HTTPS connector. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Do not increase remaining counter at end of stream in

+        IdentityInputFilter. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Async state MUST_COMPLETE should still be started. (remm)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.57 (violetagg)/Jasper"><!--()--></a><a name="Tomcat_7.0.57_(violetagg)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57099">57099</a>: Ensure that semi-colons are not permitted in JSP

+        import page directives. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.57 (violetagg)/Cluster"><!--()--></a><a name="Tomcat_7.0.57_(violetagg)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Avoid possible integer overflows reported by Coverity Scan. (fschumacher)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.57 (violetagg)/WebSocket"><!--()--></a><a name="Tomcat_7.0.57_(violetagg)/WebSocket"><strong>WebSocket</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57054">57054</a>: Correctly handle the case in the WebSocket client

+        when the HTTP response to the upgrade request can not be read in a

+        single pass; either because the buffer is too small or the server sent

+        the response in multiple packets. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix client subprotocol handling. (remm)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add null checks for arguments in remote endpoint. (remm/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57091">57091</a>: Work around the behaviour of the Oracle JRE when

+        creating new threads in an applet environment that breaks the WebSocket

+        client implementation. Patch provided by Niklas Hallqvist. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57118">57118</a>: Ensure that that an <code>EncodeException</code> is

+        thrown by <code>RemoteEndpoint.Basic.sendObject(Object)</code> rather

+        than an <code>IOException</code> when no suitable <code>Encoder</code>

+        is configured for the given Object. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.57 (violetagg)/Web applications"><!--()--></a><a name="Tomcat_7.0.57_(violetagg)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct documentation for <code>ServerCookie.ALLOW_NAME_ONLY</code>

+        system property. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57049">57049</a>: Clarified that <code>jvmRoute</code> can be set in

+        <code>&lt;Engine&gt;</code>'s <code>jvmRoute</code> or in a system

+        property. (schultz)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct version of Java WebSocket mentioned in documentation

+        (s/1.0/1.1/). (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        In examples web application move Async and Comet examples from JSP

+        to Servlet examples page. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Suppress timestamp comments and enable charset header in Javadoc.

+        (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.57 (violetagg)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.57_(violetagg)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57079">57079</a>: Use Tomcat version number for jdbc-pool module when

+        building and shipping the module as part of Tomcat. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix broken overview page in javadoc generated via "javadoc" task in

+        jdbc-pool build.xml file. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.57 (violetagg)/Other"><!--()--></a><a name="Tomcat_7.0.57_(violetagg)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56079">56079</a>: The Apache Tomcat Windows service and the Apache

+        Tomcat Windows service monitor application are now digitally

+        signed. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix timestamps in Tomcat build and jdbc-pool to use 24-hour format

+        instead of 12-hour one and use UTC timezone. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Improve Tomcat build script to ensure that only one ecj-nn.jar file

+        is present in Tomcat <code>lib</code> directory when Eclipse JDT

+        Compiler is updated to a new version. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56596">56596</a>: Update to Tomcat Native Library version 1.1.32 to

+        pick up the Windows binaries that are based on OpenSSL 1.0.1j and APR

+        1.5.1. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        In Tomcat tests: log name of the current test method at start time.

+        (kkolinko) 

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.56 (violetagg)"><!--()--></a><a name="Tomcat_7.0.56_(violetagg)"><strong>Tomcat 7.0.56 (violetagg)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2014-10-06</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.56 (violetagg)/Catalina"><!--()--></a><a name="Tomcat_7.0.56_(violetagg)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When scanning class files (e.g. for annotations) and reading the number

+        of parameters in a <code>MethodParameters</code> structure only read a

+        single byte (rather than two bytes) as per the JVM specification. Patch

+        provided by Francesco Komauli. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Allow the JNDI Realm to start even if the directory is not available.

+        The directory not being available is not fatal once the Realm is started

+        and it need not be fatal when the Realm starts. Based on a patch by

+        C&eacute;dric Couralet. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56736">56736</a>: Avoid an incorrect <code>IllegalStateException</code>

+        if the async timeout fires after a non-container thread has called

+        <code>AsyncContext.dispatch()</code> but before a container thread

+        starts processing the dispatch. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56739">56739</a>: If an application handles an error on an application

+        thread during asynchronous processing by calling

+        <code>HttpServletResponse.sendError()</code>, then ensure that the

+        application is given an opportunity to report that error via an

+        appropriate application defined error page if one is configured. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56771">56771</a>: When lookup for a resource in all the alternate or

+        backup <code>javax.naming.directory.DirContext</code>,

+        <code>javax.naming.NameNotFoundException</code> will be thrown at the

+        end of the search if the resource is not available in these alternate

+        or backup <code>javax.naming.directory.DirContext</code>. Based on a

+        patch by Sheldon Shao. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56796">56796</a>: Remove unnecessary sleep when stopping a web

+        application. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56801">56801</a>: Improve performance of

+        <code>org.apache.tomcat.util.file.Matcher</code> which is to filter JARs

+        for scanning during web application start. Based on a patch by Sheldon

+        Shao. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56825">56825</a>: Enable pre-emptive authentication to work with the

+        SSL authenticator. Based on a patch by jlmonteiro. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56857">56857</a>: Fix thread safety issue when calling ServletContext

+        methods while running under a security manager. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56882">56882</a>: Add testcase for processing of forwards and includes

+        when Context have been reloaded. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56900">56900</a>: Fix some potential resource leaks when reading

+        property files reported by Coverity Scan. Based on patches provided by

+        Felix Schumacher. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56902">56902</a>: Fix a potential resource leak in the Default Servlet

+        reported by Coverity Scan. Based on a patch provided by Felix

+        Schumacher. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56903">56903</a>: Correct the return value for

+        <code>StandardContext.getResourceOnlyServlets()</code> so that multiple

+        names are separated by commas. Identified by Coverity Scan and fixed

+        based on a patch by Felix Schumacher. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fixed the multipart elements merge operation performed during web

+        application deployment. Identified by Coverity Scan. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct the information written by

+        <code>ExtendedAccessLogValve</code> when a format token x-O(XXX) is

+        used so that multiple values for a header XXX are separated by commas.

+        Identified by Coverity Scan. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix a potential resource leak when reading MANIFEST.MF file for

+        extension dependencies reported by Coverity Scan. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correctly handle multiple <code>accept-language</code> headers rather

+        than just using the first header to determine the user's preferred

+        Locale. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix some potential resource leaks when reading properties, files and

+        other resources. Reported by Coverity Scan. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When using parallel deployment and <code>undeployOldVersions</code>

+        feature is enabled on a Host, correctly undeploy context of old

+        version. Make sure that Tomcat does not undeploy older Context if

+        current context is not running. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When deploying war, add XML file in the config base to the redeploy

+        resources if war does not have META-INF/context.xml or

+        <code>deployXML</code> is false. If  XML file is created in the config

+        base, redeploy will occur. (kfujino)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Various changes to reduce unnecessary code in Tomcat's copy of

+        Apache Commons BCEL to reduce the time taken for annotation scanning

+        when web applications start. Includes contributions from kkolinko and

+        hzhang9. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56938">56938</a>: Ensure web applications that have mixed case context

+        paths and are deployed as directories are correctly removed on undeploy

+        when running on a case sensitive file system. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57004">57004</a>: Add <code>stuckThreadCount</code> property to

+        <code>StuckThreadDetectionValve</code>'s JMX bean. Patch provided by

+        Ji&#345;&iacute; Pejchal. (schultz)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57011">57011</a>: Ensure that the request and response are correctly

+        recycled when processing errors during async processing. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=57016">57016</a>: When using the <code>PersistentValve</code> do not

+        remove sessions from the store when persisting them. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.56 (violetagg)/Coyote"><!--()--></a><a name="Tomcat_7.0.56_(violetagg)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56780">56780</a>: Enable Tomcat to start when using SSL with an IBM JRE

+        in strict SP800-131a mode. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56910">56910</a>: Prevent the invalid value of <code>-1</code> being

+        used for <code>maxConnections</code> with APR connectors. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that <code>AjpNioProtocol</code> and <code>AjpAprProtocol</code>

+        enable the <code>KeepAliveTimeout</code>. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.56 (violetagg)/Jasper"><!--()--></a><a name="Tomcat_7.0.56_(violetagg)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=43001">43001</a>: Enable the JspC Ant task to set the JspC option

+        <code>mappedFile</code>. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56797">56797</a>: When matching a method in an EL expression, do not

+        treat bridge methods as duplicates of the method they bridge to. In this

+        case always call the target of the bridge method. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct a logic error in the <code>JasperElResolver</code>. There was no

+        functional impact but the code was less efficient as a result of the

+        error. Based on a patch by martinschaef. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that the implementation of

+        <code>javax.servlet.jsp.PageContext.include(String)</code>

+        and

+        <code>javax.servlet.jsp.PageContext.include(String, boolean)</code>

+        will throw <code>IOException</code> when an I/O error occur during

+        the operation. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56908">56908</a>: Fix some potential resource leaks when reading jar

+        files. Reported by Coverity Scan. Based on patch provided by Felix

+        Schumacher. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56991">56991</a>: Deprecate the use of a request attribute to pass a

+        &lt;jsp-file&gt; declaration to Jasper and prevent an infinite loop

+        if this technique is used in conjunction with an include. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix a potential resource leak in JDTCompiler when checking whether

+        a resource is a package. Reported by Coverity Scan. (fschumacher)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.56 (violetagg)/WebSocket"><!--()--></a><a name="Tomcat_7.0.56_(violetagg)/WebSocket"><strong>WebSocket</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56446">56446</a>: Clearer handling of exceptions when calling a method

+        on a POJO based WebSocket endpoint. Based on a suggestion by Eugene

+        Chung. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56746">56746</a>: Allow secure WebSocket client threads to use the

+        current context class loader rather than explicitly setting it to the

+        class loader that loaded the WebSocket implementation. This allows

+        WebSocket client connections from within web applications to access,

+        amongst other things, the JNDI resources associated with the web

+        application. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56905">56905</a>: Make destruction on web application stop of thread

+        group used for WebSocket connections more robust. (kkolinko/markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56907">56907</a>: Ensure that client IO threads are stopped if a secure

+        WebSocket client connection fails. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When a WebSocket client attempts to write to a closed connection, handle

+        the resulting <code>IllegalStateException</code> in a manner consistent

+        with the handling of an <code>IOException</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add support for the <code>permessage-deflate</code> extension. This is

+        currently limited to decompressing incoming messages on the server side.

+        It is expected that support will be extended to outgoing messages and to

+        the client side shortly. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Extend support for the <code>permessage-deflate</code> extension to

+        compression of outgoing messages on the server side. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56982">56982</a>: Return the actual negotiated extensions rather than an

+        empty list for <code>Session.getNegotiatedExtensions()</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update the WebSocket implementation to support the Java WebSocket

+        specification version 1.1. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.56 (violetagg)/Web applications"><!--()--></a><a name="Tomcat_7.0.56_(violetagg)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct the label in the list of sessions by idle time for the bin that

+        represents the idle time immediately below the maximum permitted idle

+        time when using the expire command of the Manager application. (markt) 

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update the Windows authentication documentation after some additional

+        testing to answer the remaining questions. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct a couple of broken links in the Javadoc. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.56 (violetagg)/Other"><!--()--></a><a name="Tomcat_7.0.56_(violetagg)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56788">56788</a>: Display the full version in the list of installed

+        applications when installed via the Windows installer package. Patch

+        provided by Alexandre Garnier. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56829">56829</a>: Add the ability for users to define their own values

+        for <code>_RUNJAVA</code> and <code>_RUNJDB</code> environment

+        variables. Be more strict with executable filename on Windows

+        (s/java/java.exe/). Based on a patch by Neeme Praks. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56895">56895</a>: Correctly compose <code>JAVA_OPTS</code> in

+        <code>catalina.bat</code> so that escape sequences are preserved. Patch

+        by Lucas Theisen. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56988">56988</a>: Allow to use relative path in <code>base.path</code>

+        setting when building Tomcat. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56990">56990</a>: Ensure that the <code>ide-eclipse</code> build target

+        downloads all the libraries required by the default Eclipse

+        configuration files and configures Eclipse to use Java 6 for the

+        project. Add build target <code>ide-eclipse-websocket</code> that

+        creates a separate linked project that compiles websocket classes

+        of Tomcat 7 with Java 7 compiler. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.55 (violetagg)"><!--()--></a><a name="Tomcat_7.0.55_(violetagg)"><strong>Tomcat 7.0.55 (violetagg)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2014-07-27</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.55 (violetagg)/Catalina"><!--()--></a><a name="Tomcat_7.0.55_(violetagg)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=44312">44312</a>: Log an error if there is a conflict between Host and

+        Alias names. Improve host management methods in <code>Mapper</code>

+        to avoid occasionally removing a wrong host. Check that host management

+        operations are performed on the host and not on an alias. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55282">55282</a>: Ensure that one and the same application listener is

+        added only once when starting the web application. (violetagg)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56461">56461</a>: New <code>failCtxIfServletStartFails</code> attribute

+        on Context and Host configuration to force the context startup to fail

+        if a load-on-startup servlet fails its startup. (slaurent)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56526">56526</a>: Improved the <code>StuckThreadDetectionValve</code> to

+        optionally interrupt stuck threads to attempt to unblock them.

+        (slaurent)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56545">56545</a>: Pre-load an additional class, the loading of which

+        may otherwise be triggered by a web application which in turn would

+        trigger an exception when running under a security manager. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56578">56578</a>: Correct regression in the fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56339">56339</a>

+        that prevented sessions from expiring when using clustering. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56588">56588</a>: Update deprecation of Context.addApplicationListener()

+        methods according to changes in Tomcat 8. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56600">56600</a>: In WebdavServlet: Do not waste time generating

+        response for broken PROPFIND request. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Provide a better error message when asynchronous operations are not

+        supported by a filter or servlet. Patch provided by Romain Manni-Bucau.

+        (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56606">56606</a>: User entries in <code>tomcat-users.xml</code> file

+        are recommended to use "username" attribute rather than legacy "name"

+        attribute. Fix inconsistencies in Windows installer, examples. Update

+        digester rules and documentation for <code>MemoryRealm</code>.

+        (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56611">56611</a>: Refactor code to remove inefficient calls to

+        <code>Method.isAnnotationPresent()</code>. Based on a patch by Jian Mou.

+        (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56653">56653</a>: Fix concurrency issue with lists of contexts in

+        <code>Mapper</code> when stopping Contexts. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56657">56657</a>: When using parallel deployment, if the same session id

+        matches different versions of a web application, prefer the latest

+        version. Ensure that remapping selects the version that we expect.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Assert that mapping result object is empty before performing mapping

+        work in <code>Mapper</code>. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56658">56658</a>: Avoid delay between registrations of mappings for

+        context and for its servlets. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56665">56665</a>: Correct the generation of the effective web.xml when

+        elements contain an empty string as value. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56666">56666</a>: When clearing the SSO cookie use the same values for

+        domain, path, httpOnly and secure as were used to set the SSO cookie.

+        (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56677">56677</a>: Ensure that

+        <code>HttpServletRequest.getServletContext()</code> returns the correct

+        value during a cross-context dispatch. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56684">56684</a>: Ensure that Tomcat does not shut down if the socket

+        waiting for the shutdown command experiences a

+        <code>SocketTimeoutException</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When the current PathInfo is modified as a result of dispatching a

+        request, ensure that a call to

+        <code>HttpServletRequest.getPathTranslated()</code> returns a value that

+        is based on the modified PathInfo. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56698">56698</a>: When persisting idle sessions, only persist newly idle

+        sessions. Patch provided by Felix Schumacher. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56710">56710</a>: Do not map requests to servlets when context is

+        being reloaded. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56712">56712</a>: Fix session idle time calculations in

+        <code>PersistenceManager</code>. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56717">56717</a>: Fix duplicate registration of

+        <code>MapperListener</code> during repeated starts of embedded Tomcat.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56724">56724</a>: Write an error message to Tomcat logs if container

+        background thread is aborted unexpectedly. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.55 (violetagg)/Coyote"><!--()--></a><a name="Tomcat_7.0.55_(violetagg)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56518">56518</a>: When using NIO, do not attempt to write to the socket

+        if the thread is marked interrupted as this will lead to a connection

+        limit leak. This fix was based on analysis of the issue by hanyong.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56521">56521</a>: Re-use the asynchronous write buffer between writes to

+        reduce allocation and GC overhead. Based on a patch by leonzhx. Also

+        make the buffer size configurable and remove copying of data within

+        buffer when the buffer is only partially written on a subsequent write.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct a copy/paste error and return a 500 response rather than a 400

+        response when an internal server error occurs on early stages of

+        request processing. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56582">56582</a>: Use switch(actionCode) in processors instead of a

+        chain of "elseif"s. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix CVE-2014-0227:

+        Various improvements to ChunkedInputFilter including clean-up, i18n for

+        error messages and adding an error flag to allow subsequent attempts at

+        reading after an error to fail fast. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        If request contains an unrecognized Expect header, respond with error

+        417 (Expectation Failed), according to RFC2616 chapter 14.20. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When an error occurs after the response has been committed close the

+        connection immediately rather than attempting to finish the response to

+        make it easier for the client to differentiate between a complete

+        response and one that failed part way though. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56620">56620</a>: Avoid bogus access log entries when pausing the NIO

+        HTTP connector and ensure that access log entries generated by error

+        conditions use the correct request start time. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Fix CVE-2014-0230:

+        Add a new limit, defaulting to 2MB, for the amount of data Tomcat will

+        swallow for an aborted upload. The limit is configurable by

+        <code>maxSwallowSize</code> attribute of an HTTP connector. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Allow to configure <code>maxSwallowSize</code> attribute of an HTTP

+        connector via JMX. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56661">56661</a>: Fix <code>getLocalAddr()</code> for AJP connectors.

+        The complete fix is only available with a recent AJP forwarder like

+        the forthcoming mod_jk 1.2.41. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=59451">59451</a>: Correct Javadoc for <code>MessageBytes</code>. Patch

+        provided by Kyohei Nakamura. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.55 (violetagg)/Jasper"><!--()--></a><a name="Tomcat_7.0.55_(violetagg)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56334#c15">56334#c15</a>: Fix a regression in EL parsing when quoted string

+        follows a whitespace. (kkolinko/markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56543">56543</a>: Update to the Eclipse JDT Compiler 4.4. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56561">56561</a>: Avoid <code>NoSuchElementException</code> while handling

+        attributes with empty string value. (violetagg)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56581">56581</a>: If an error on a JSP page occurs when response has

+        already been committed, do not clear the buffer of JspWriter, but flush

+        it. It will make more clear where the error occurred. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56612">56612</a>: Correctly parse two consecutive escaped single quotes

+        when used in UEL expression in a JSP. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Move code that parses EL expressions within JSP template text from

+        <code>Parser</code> to <code>JspReader</code> class for better

+        performance. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.55 (violetagg)/WebSocket"><!--()--></a><a name="Tomcat_7.0.55_(violetagg)/WebSocket"><strong>WebSocket</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56577">56577</a>: Improve the executor configuration used for the

+        callbacks associated with asynchronous writes. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.55 (violetagg)/Web applications"><!--()--></a><a name="Tomcat_7.0.55_(violetagg)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Set the path for cookies created by the examples web application so they

+        only returned to the examples application. This reduces the opportunity

+        for using such cookies for malicious purposes should the advice to

+        remove the examples web application from security sensitive systems be

+        ignored. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Attempt to obfuscate session cookie values associated with other web

+        applications when viewing HTTP request headers with the Request Header

+        example from the examples web application. This reduces the opportunity

+        to use this example for malicious purposes should the advice to remove

+        the examples web application from security sensitive systems be ignored.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.55 (violetagg)/Other"><!--()--></a><a name="Tomcat_7.0.55_(violetagg)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update optional Checkstyle library to 5.7. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56685">56685</a>: Add quotes necessary for <code>daemon.sh</code> to

+        work correctly on Solaris. Based on a suggestion by lfuka. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56596">56596</a>: Update to Tomcat Native Library version 1.1.31 to pick

+        up the Windows binaries that are based on OpenSSL 1.0.1h. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.54 (violetagg)"><!--()--></a><a name="Tomcat_7.0.54_(violetagg)"><strong>Tomcat 7.0.54 (violetagg)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2014-05-22</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.54 (violetagg)/Catalina"><!--()--></a><a name="Tomcat_7.0.54_(violetagg)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix custom UTF-8 decoder so that a byte of value 0xC1 is always rejected

+        immediately as it is never valid in a UTF-8 byte sequence. Update UTF-8

+        decoder tests to account for UTF-8 decoding improvements in Java 8.

+        The custom UTF-8 decoder is still required due to bugs in the UTF-8

+        decoder provided by Java. Java 8's decoder is better than Java

+        7's but it is still buggy. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56027">56027</a>: Add more options for managing FIPS mode in the

+        AprLifecycleListener. (schultz/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56321">56321</a>: When a WAR is modified, undeploy the web application

+        before deleting any expanded directory as the undeploy process may

+        refer to classes that need to be loaded from the expanded directory. If

+        the expanded directory is deleted first, any attempt to load a new class

+        during undeploy will fail. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56339">56339</a>: Avoid an infinite loop if an application calls

+        <code>session.invalidate()</code> from the session destroyed event for

+        that session. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56365">56365</a>: Simplify file name pattern matching code in

+        <code>StandardJarScanner</code>. Ignore leading and trailing whitespace

+        and empty strings when configuring patterns. Improve documentation.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56369">56369</a>: Ensure that removing an MBean notification listener

         reverts all the operations performed when adding an MBean notification

         listener. (markt)

       </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Only create XML parsing objects if required and fix associated potential

-        memory leak in the default Servlet. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Ensure that a TLD parser obtained from the cache has the correct value

-        of <code>blockExternal</code>. (markt/kkolinko)

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56382">56382</a>: Information about finished deployment and its execution

+        time is added to the log files. Patch is provided by Danila Galimov.

+        (violetagg)

       </td></tr>

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56383">56383</a>: Properties for disabling server information and error

+        report are added to the <code>org.apache.catalina.valves.ErrorReportValve</code>.

+        Based on the patch provided by Nick Bunn. (violetagg/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix CVE-2014-0119:

+        Only create XML parsing objects if required and fix associated potential

+        memory leak in the default Servlet.

         Extend XML factory, parser etc. memory leak protection to cover some

         additional locations where, theoretically, a memory leak could occur.

-        (markt)

+        Ensure that a TLD parser obtained from the cache has the correct value

+        of <code>blockExternal</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Modify generic exception handling so that

+        <code>StackOverflowError</code> is not treated as a fatal error and can

+        handled and/or logged as required. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56409">56409</a>: Avoid <code>StackOverflowError</code> on non-Windows

+        systems if a file named <code>\</code> is encountered when scanning for

+        TLDs. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56430">56430</a>: Extend checks for suspicious URL patterns to include

+        patterns of the form <code>*.a.b</code> which are not valid patterns for

+        extension mappings. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56441">56441</a>: Raise the visibility of exceptions thrown when a

+        problem is encountered calling a getter or setter on a component

+        attribute. The logging level is raised from debug to warning. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56451">56451</a>: Make resources accessed via a context alias accessible

+        via JNDI in the same way standard resources are available. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56463">56463</a>: Property for disabling server information is added to

+        the <code>DefaultServlet</code>. Server information is presented in the

+        response sent to the client when directory listings is enabled.

+        (violetagg)

       </td></tr>

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

         Add the <code>org.apache.naming</code> package to the packages requiring

@@ -88,247 +4236,985 @@
         Make the naming context tokens for containers more robust. Require

         RuntimePermission when introducing a new token. (markt/kkolinko)

       </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56472">56472</a>: Allow NamingContextListener to clean up on stop if its

+        start failed. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56492">56492</a>: Avoid eclipse debugger pausing on uncaught exceptions

+        when tomcat renews its threads. (slaurent)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Minor fixes to <code>ThreadLocalLeakPreventionListener</code>. Do not

+        trigger threads renewal for failed contexts. Do not ignore

+        <code>threadRenewalDelay</code> setting. Improve documentation. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct regression introduced in <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=797162">r797162</a> that broke

+        authentication of users when using the

+        <code>JAASMemoryLoginModule</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56501">56501</a>: <code>HttpServletRequest.getContextPath()</code>

+        should return the undecoded context path used by the user agent. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56523">56523</a>: When using SPNEGO authentication, log the exceptions

+        associated with failed user logins at debug level rather than error

+        level. (markt)

+      </td></tr>

+     <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+       <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56536">56536</a>: Ensure that

+       <code>HttpSessionBindingListener.valueUnbound()</code> uses the correct

+       class loader when the <code>SingleSignOn</code> valve is used. (markt) 

+     </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.40/Coyote"><!--()--></a><a name="Tomcat_6.0.40/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.54 (violetagg)/Coyote"><!--()--></a><a name="Tomcat_7.0.54_(violetagg)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Improve processing of chuck size from chunked headers. Avoid overflow

-        and use a bit shift instead of a multiplication as it is marginally

-        faster. (markt/kkolinko)

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56399">56399</a>: Assert that both Coyote and Catalina request objects

+        have been properly recycled. (kkolinko)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix possible overflow when parsing long values from a byte array.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=56363">56363</a>: Update to version 1.1.30 of Tomcat Native library.

-        The minimum required version of this library for APR connector is now

-        1.1.30. (kkolinko)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56416">56416</a>: Correct documentation for default value of socket

+        linger for the AJP and HTTP connectors. (markt)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.40/Jasper"><!--()--></a><a name="Tomcat_6.0.40/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.54 (violetagg)/Jasper"><!--()--></a><a name="Tomcat_7.0.54_(violetagg)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Change the default behaviour of JspC to block XML external entities by

-        default. (kkolinko) 

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56334">56334</a>: Fix a regression in the handling of back-slash

+        escaping introduced by the fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55735">55735</a>. (markt/kkolinko)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Restore the validateXml option to Jasper that was previously renamed

-        validateTld. Both options are now supported. validateXml controls the

-        validation of web.xml files when Jasper parses them and validateTld

-        controls the validation of *.tld files when Jasper parses them. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54475">54475</a>: Add Java 8 support to SMAP generation for JSPs. Patch

-        by Robbie Gibson. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=56010">56010</a>: Don't throw an

-        <code>IllegalArgumentException</code> when

-        <code>JspFactory.getPageContext</code> is used with

-        <code>JspWriter.DEFAULT_BUFFER</code>. Based on a patch by Eugene Chung.

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56425">56425</a>: Improve method matching for EL expressions. When

+        looking for matching methods, an exact match between parameter types is

+        preferred followed by an assignable match followed by a coercible match.

         (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=56265">56265</a>: Do not escape values of dynamic tag attributes

-        containing EL expressions. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=56283">56283</a>: Add support for running Tomcat 6 with

-        ecj-P20140317-1600.jar (as drop-in replacement for ecj-4.3.1.jar). Add

-        support for value "1.8" for the <code>compilerSourceVM</code> and

-        <code>compilerTargetVM</code> options. Note that ecj-P20140317-1600.jar

-        can only be used when running with Java 6 or later. The "1.8" options

-        make sense only when running with Java 8 (or later). (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=56334">56334</a>: Fix a regression in the handling of back-slash

-        escaping introduced by the fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55735">55735</a>. (markt/kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

         Correct the handling of back-slash escaping in the EL parser and no

         longer require that <code>\$</code> or <code>\#</code> must be followed

         by <code>{</code> in order for the back-slash escaping to take effect.

         (markt)

       </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.40/Cluster"><!--()--></a><a name="Tomcat_6.0.40/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

-        Refactor <code>AbstractReplicatedMap</code> and related classes to

-        enable Tomcat 6 to be compiled using Java 8. (markt)

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56529">56529</a>: Avoid <code>NoSuchElementException</code> while handling

+        attributes with empty string value in custom tags. Patch provided by

+        Hariprasad Manchi. (violetagg)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.40/Web applications"><!--()--></a><a name="Tomcat_6.0.40/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.54 (violetagg)/Cluster"><!--()--></a><a name="Tomcat_7.0.54_(violetagg)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Remove cluster and replicationValve from cluster manager template. These

+        instance are not necessary to template. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add support for cross context session replication to

+        <code>org.apache.catalina.ha.session.BackupManager</code>. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Remove the unnecessary cross context check. It does not matter whether

+        the context that is referenced by other context is set to

+        <code>crossContext</code>=true. The context that refers to the different

+        context must be set to <code>crossContext</code>=true. (kfujino)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Move to <code>org.apache.catalina.ha.session.ClusterManagerBase</code>

+        common logics of

+        <code>org.apache.catalina.ha.session.BackupManager</code> and

+        <code>org.apache.catalina.ha.session.DeltaManager</code>. (kfujino)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Simplify the code of <code>o.a.c.ha.tcp.SimpleTcpCluster</code>. In

+        order to add or remove cluster valve to Container, use pipeline instead

+        of <code>IntrospectionUtils</code>. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        There is no need to set cluster instance when

+        <code>SimpleTcpCluster.unregisterClusterValve</code> is called.

+        Set null than cluster instance for cleanup. (kfujino)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Backport refactoring of <code>AbstractReplicatedMap</code> to implement

+        <code>Map</code> rather than extend <code>ConcurrentHashMap</code> to

+        enable Tomcat 7 to be built with Java 8. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.54 (violetagg)/WebSocket"><!--()--></a><a name="Tomcat_7.0.54_(violetagg)/WebSocket"><strong>WebSocket</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56343">56343</a>: Avoid a NPE if Tomcat's Java WebSocket 1.0

+        implementation is used with the Java WebSocket 1.0 API JAR from the

+        reference implementation. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Increase the default maximum size of the executor used by the WebSocket

+        implementation for call backs associated with asynchronous writes from

+        10 to 200. (markt)

+      </td></tr>

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=56093">56093</a>: Documentation for SSLValve. (markt/kkolinko)

+        Add a warning if the thread group created for WebSocket asynchronous

+        write call backs can not be destroyed when the web application is

+        stopped. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that threads created to support WebSocket clients are stopped

+        when no longer required. This will happen automatically for WebSocket

+        client connections initiated by web applications but stand alone clients

+        must call <code>WsWebSocketContainer.destroy()</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56449">56449</a>: When creating a new session, add the message handlers

+        to the session before calling <code>Endpoint.onOpen()</code> so the

+        message handlers are in place should the <code>onOpen()</code> method

+        trigger the sending of any messages. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56458">56458</a>: Report WebSocket sessions that are created over secure

+        connections as secure rather than as not secure. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Stop threads used for secure WebSocket client connections when they are

+        no longer required and give them better names for easier debugging while

+        they are running. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.54 (violetagg)/Web applications"><!--()--></a><a name="Tomcat_7.0.54_(violetagg)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add Support for <code>copyXML</code> attribute of Host to Host Manager.

+        (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that "name" request parameter is used as a application base of

+        host if "webapps" request parameter is not set when adding host in

+        HostManager Application. (kfujino)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

         Correct documentation on Windows service options, aligning it with

         Apache Commons Daemon documentation. (kkolinko)

       </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Add support for <code>version-major</code>,

-        <code>version-major-minor</code> tags in documentation XSLT, to simplify

-        documentation backports. (kkolinko)

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55215">55215</a>: Improve log4j configuration example. Clarify access

+        logging documentation. Based on patches provided by Brian Burch.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55383">55383</a>: Backport improved HTML markup for tables and code

+        fragments from Tomcat 8 documentation. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56418">56418</a>: Ensure that the Manager web application does not

+        report success for a web application deployment that fails. (slaurent)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

         Fix target and rel attributes on links in documentation. They were

         lost during XSLT transformation. (kkolinko)

       </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Improve valves documentation. Split valves into groups. (kkolinko)

+      </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.40/Other"><!--()--></a><a name="Tomcat_6.0.40/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.54 (violetagg)/Other"><!--()--></a><a name="Tomcat_7.0.54_(violetagg)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Align DisplayName of Tomcat installed by <code>service.bat</code> with

+        one installed by the *.exe installer. Print a warning in case if neither

+        server nor client jvm is found by <code>service.bat</code>. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56363">56363</a>: Update to version 1.1.30 of Tomcat Native library.

+        (schultz)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update package renamed Apache Commons BCEL to r1593495 to pick up some

+        additional changes for Java 7 support and some code clean up. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        In tests: allow to configure directory where JUnit reports and access

+        log are written to. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.53 (violetagg)"><!--()--></a><a name="Tomcat_7.0.53_(violetagg)"><strong>Tomcat 7.0.53 (violetagg)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2014-03-30</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.53 (violetagg)/Catalina"><!--()--></a><a name="Tomcat_7.0.53_(violetagg)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Make it easier for applications embedding and/or extending Tomcat to

+        modify the <code>javaseClassLoader</code> attribute of the

+        <code>WebappClassLoader</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve the robustness of web application undeployment based on some

+        code analysis triggered by the report for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54315">54315</a>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56219">56219</a>:

+        Improve merging process for web.xml files to take account of the

+        elements and attributes supported by the Servlet version of the merged

+        file. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56190">56190</a>: The response should be closed (i.e. no further output

+        is permitted) when a call to <code>AsyncContext.complete()</code> takes

+        effect. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56236">56236</a>: Enable Tomcat to work with alternative Servlet and

+        JSP API JARs that package the XML schemas in such as way as to require

+        a dependency on the JSP API before enabling validation for web.xml.

+        Tomcat has no such dependency. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56246">56246</a>: Fix NullPointerException in MemoryRealm when

+        authenticating an unknown user. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56248">56248</a>: Allow the deployer to update an existing WAR file

+        without undeploying the existing application if the update flag is set.

+        This allows any existing custom context.xml for the application to be

+        retained. To update an application and remove any existing context.xml

+        simply undeploy the old version of the application before deploying the

+        new version. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix CVE-2014-0096:

+        Redefine the <code>globalXsltFile</code> initialisation parameter of the

+        DefaultServlet as relative to CATALINA_BASE/conf or CATALINA_HOME/conf.

+        Prevent user supplied XSLTs used by the DefaultServlet from defining

+        external entities. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add a work around for validating XML documents (often TLDs) that use

+        just the file name to refer to the JavaEE schema on which they

+        are based. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56293">56293</a>: Cache resources loaded by the class loader from

+        <code>/META-INF/services/</code> for better performance for repeated

+        look ups. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.53 (violetagg)/Coyote"><!--()--></a><a name="Tomcat_7.0.53_(violetagg)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53119">53119</a>: Make sure the NIO AJP output buffer is cleared on any

+        error to prevent any possible overflow if it is written to again before

+        the connection is closed. This extends the original fix for the

+        APR/native output buffer to the NIO connector. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56172">56172</a>: Avoid possible request corruption when using the AJP

+        NIO connector and a request is sent using more than one AJP message.

+        Patch provided by Amund Elstad. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56213">56213</a>: Reduce garbage collection when the NIO connector is

+        under heavy load. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix CVE-2014-0075:

+        Improve processing of chuck size from chunked headers. Avoid overflow

+        and use a bit shift instead of a multiplication as it is marginally

+        faster. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix CVE-2014-0099:

+        Fix possible overflow when parsing long values from a byte array.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.53 (violetagg)/Jasper"><!--()--></a><a name="Tomcat_7.0.53_(violetagg)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54475">54475</a>: Add Java 8 support to SMAP generation for JSPs. Patch

+        by Robbie Gibson. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55483">55483</a>: Improve handing of overloaded methods and constructors

+        in expression language implementation. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56208">56208</a>:

+        Restore the validateXml option to Jasper that was previously renamed

+        validateTld. Both options are now supported. validateXml controls the

+        validation of web.xml files when Jasper parses them and validateTld

+        controls the validation of *.tld files when Jasper parses them. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56223">56223</a>: Throw an <code>IllegalStateException</code> if a call

+        is made to <code>ServletContext.setInitParameter()</code> after the

+        ServletContext has been initialized. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56265">56265</a>: Do not escape values of dynamic tag attributes

+        containing EL expressions. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Make the default compiler source and target versions for JSPs Java 6

+        since Tomcat 7 requires Java 6 as a minimum. (markt) 

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56283">56283</a>: Update to the Eclipse JDT Compiler P20140317-1600

+        which adds support for Java 8 syntax to JSPs. Add support for value

+        "1.8" for the <code>compilerSourceVM</code> and

+        <code>compilerTargetVM</code> options. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.53 (violetagg)/WebSocket"><!--()--></a><a name="Tomcat_7.0.53_(violetagg)/WebSocket"><strong>WebSocket</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Avoid a possible deadlock when one thread is shutting down a connection

+        while another thread is trying to write to it. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Call onError if an exception is thrown calling onClose when closing

+        a session. (remm)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.53 (violetagg)/Web applications"><!--()--></a><a name="Tomcat_7.0.53_(violetagg)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        In the documentation: add support for several documentation tags from

+        Tomcat 8. Such as <code>&lt;version-major/&gt;</code>. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56093">56093</a>: Add the SSL Valve to the documentation web

+        application. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56217">56217</a>: Improve readability by using left alignment for the

+        table cell containing the request information on the Manager application

+        status page. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fixed <code>java.lang.NegativeArraySizeException</code> when using

+        "Expire sessions" command in the manager web application on a

+        context where the session timeout is disabled. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+         Add support for <code>LAST_ACCESS_AT_START</code> system property to

+         Manager web application. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+         Add definition of <code>org.apache.catalina.ant.FindLeaksTask</code>.

+         (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56273">56273</a>: If the Manager web application does not perform an

+        operation because the web application is already being serviced, report

+        an error rather than reporting success. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56304">56304</a>: Add a note to the documentation about not using

+        WebSocket with BIO HTTP in production. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.53 (violetagg)/Other"><!--()--></a><a name="Tomcat_7.0.53_(violetagg)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56143">56143</a>: Improve <code>service.bat</code> so that it can be

+        launched from a non-UAC console. This includes using a single call to

+        <code>tomcat7.exe</code> to install the Windows service rather than

+        three calls, and using command line arguments instead of environment

+        variables to pass the settings. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix regression in 7.0.52: when using <code>service.bat install</code>

+        to install the service the values for --StdOutput, --StdError options

+        were passed as blank instead of "auto". (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Align options between <code>service.bat</code> and <code>exe</code>

+        Windows installer. For <code>service.bat</code> the changes are in

+        --Classpath, --DisplayName, --StartPath, --StopPath. For

+        <code>exe</code> installer the changes are in --JvmMs, --JvmMx options,

+        which are now 128 Mb and 256 Mb respectively instead of being empty.

+        Explicitly specify --LogPath path when uninstalling Windows service,

+        avoiding default value for that option. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Simplify Windows *.bat files: remove %OS% checks, as java 6 does

+        not run on ancient non-NT operating systems. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56137">56137</a>: Explicitly use the BIO connector in the SSL example in

+        server.xml so it doesn't break if APR is enabled. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56139">56139</a>: Avoid a web application class loader leak in some unit

+        tests when running on Windows. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct build script to avoid building JARs with empty packages. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Allow to limit JUnit test run to a number of selected test case

+        methods. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56189">56189</a>: Remove used file cpappend.bat from the distribution.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.52 (violetagg)"><!--()--></a><a name="Tomcat_7.0.52_(violetagg)"><strong>Tomcat 7.0.52 (violetagg)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2014-02-17</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.52 (violetagg)/Catalina"><!--()--></a><a name="Tomcat_7.0.52_(violetagg)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Generate a valid root element for the effective web.xml for a web

+        application for all supported versions of web.xml. (markt) 

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.52 (violetagg)/Coyote"><!--()--></a><a name="Tomcat_7.0.52_(violetagg)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Pull up <code>SocketWrapper</code> to <code>AbstractProcessor</code>.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        In some circumstances asynchronous requests could time out too soon.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.51 (violetagg)"><!--()--></a><a name="Tomcat_7.0.51_(violetagg)"><strong>Tomcat 7.0.51 (violetagg)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.51 (violetagg)/Catalina"><!--()--></a><a name="Tomcat_7.0.51_(violetagg)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55287">55287</a>: <code>ServletContainerInitializer</code> defined in

+        the container may not be found. (markt/jboynes)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55855">55855</a>: Provide a per Context option (containerSciFilter) to

+        exclude container SCIs. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55937">55937</a>: When deploying applications, treat a context path of

+        <code>/ROOT</code> as equivalent to <code>/</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55943">55943</a>: Improve the implementation of the class loader check

+        that prevents web applications from trying to override J2SE

+        implementation classes. As part of this fix, refactor the way a null

+        parent class loader is handled which enables a number of null checks and

+        object creation calls to be removed. Note that this change means that,

+        by default, the web application class loader is now a higher priority

+        for loading classes than the system class loader.  (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55958">55958</a>: Differentiate between <code>foo.war</code> the WAR

+        file and <code>foo.war</code> the directory. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55960">55960</a>: Improve the single sign on (SSO) unit tests. Patch

+        provided by Brian Burch. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55974">55974</a>: Retain order when reporting errors and warnings while

+        parsing XML configuration files. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56013">56013</a>: Fix issue with SPNEGO authentication when using IBM

+        JREs. IBM JREs only understand the option of infinite lifetime for

+        Kerberos credentials. Based on a patch provided by Arunav Sanyal.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56016">56016</a>: When loading resources for XML schema validation, take

+        account of the possibility that servlet-api.jar and jsp-api.jar may not

+        be loaded by the same class loader. Patch by Juan Carlos Estibariz.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56025">56025</a>: When creating a WebSocket connection, always call

+        <code>ServerEndpointConfig.Configurator.getNegotiatedSubprotocol()</code>

+        and always create the EndPoint instance after calling

+        <code>ServerEndpointConfig.Configurator.modifyHandshake()</code>.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56032">56032</a>: Ensure that the WebSocket connection is closed after

+        an IO error or an interrupt while sending a WebSocket message. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56042">56042</a>: If a request in async mode has an error but has

+        already been dispatched don't generate an error page in the

+        ErrorReportValve so the dispatch target can handle it. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add missing <code>javax.annotation.sql.*</code> classes to

+        annotations-api.jar. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        The type of logger attribute of Context MBean should be not

+        <code>org.apache.commons.logging.Log</code> but

+        <code>org.apache.juli.logging.Log</code>. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56082">56082</a>: Fix a concurrency bug in JULI's LogManager

+        implementation. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56096">56096</a>: When the attribute <code>rmiBindAddress</code> of the

+        JMX Remote Lifecycle Listener is specified it's value will be used when

+        constructing the address of a JMX API connector server. Patch is

+        provided by Jim Talbut. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When environment entry with one and the same name is defined in the web

+        deployment descriptor and with annotation then the one specified in the

+        web deployment descriptor is with priority. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Change default value of <code>xmlBlockExternal</code> attribute of

+        Context. It is <code>true</code> now. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.51 (violetagg)/Coyote"><!--()--></a><a name="Tomcat_7.0.51_(violetagg)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Avoid possible NPE if a content type is specified without a character

+        set. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55956">55956</a>: Make the forwarded remote IP address available to the

+        Connectors via a request attribute. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55976">55976</a>: Fix sendfile support for the HTTP NIO connector.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55996">55996</a>: Ensure Async requests timeout correctly when using the

+        NIO HTTP connector. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56021">56021</a>: Make it possible to use the Windows-MY key store with

+        the BIO and NIO connectors for SSL configuration. It requires a

+        <code>keystoreFile="" keystoreType="Windows-My"</code>

+        to be set on the connector. Based on a patch provided by Asanka. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.51 (violetagg)/Jasper"><!--()--></a><a name="Tomcat_7.0.51_(violetagg)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct a regression in the XML refactoring that meant that errors in

+        TLD files were swallowed. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55671">55671</a>: Correct typo in the log message for a wrong value of

+        genStringAsCharArray init-param of JspServlet. This parameter

+        had a different name in Tomcat 6. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55973">55973</a>: Fix processing of XML schemas when validation is

+        enabled in Jasper. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56010">56010</a>: Don't throw an

+        <code>IllegalArgumentException</code> when

+        <code>JspFactory.getPageContext</code> is used with

+        <code>JspWriter.DEFAULT_BUFFER</code>. Based on a patch by Eugene Chung.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56012">56012</a>: When using the extends attribute of the page directive

+        do not import the super class if it is in an unnamed package as imports

+        from unnamed packages are now explicitly illegal. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56029">56029</a>: A regression in the fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55198">55198</a> meant

+        that when EL containing a ternary expression was used in an attribute

+        a compilation error would occur for some expressions. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct several errors in jspxml Schema and DTD. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Change default value of the <code>blockExternal</code> attribute of

+        JspC task. The default value is <code>true</code>. Add support for

+        <code>-no-blockExternal</code> switch when JspC is run as a

+        standalone application. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.51 (violetagg)/Cluster"><!--()--></a><a name="Tomcat_7.0.51_(violetagg)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Simplify the code of

+        <code>o.a.c.ha.tcp.SimpleTcpCluster.createManager(String)</code>.

+        Remove unnecessary class cast. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.51 (violetagg)/WebSocket"><!--()--></a><a name="Tomcat_7.0.51_(violetagg)/WebSocket"><strong>WebSocket</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Do not return an empty string for the

+        <code>Sec-WebSocket-Protocol</code> HTTP header when no sub-protocol has

+        been requested or no sub-protocol could be agreed as RFC6455 requires

+        that no <code>Sec-WebSocket-Protocol</code> header is returned in this

+        case. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.51 (violetagg)/Web applications"><!--()--></a><a name="Tomcat_7.0.51_(violetagg)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add index.xhtml to the welcome files list for the examples web

+        application. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Clarify that the connectionTimeout may also be used as the read timeout

+        when reading a request body (if any) in the documentation web

+        application. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Clarify the behaviour of the maxConnections attribute for a connector in

+        the documentation web application. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55888">55888</a>: Update the documentation web application to make it

+        clearer that a Container may define no more than one Realm. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55956">55956</a>: Where available, displayed the forwarded remote IP

+        address available on the status page of the Manager web application.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct links to the Tomcat mailing lists in the ROOT web application.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        In Manager web application improve handling of file upload errors.

+        Display a message instead of error 500 page. Simplify parts handling

+        code, as it is known that Tomcat takes care of them when recycling a

+        request. (kkolinko) 

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.51 (violetagg)/Extras"><!--()--></a><a name="Tomcat_7.0.51_(violetagg)/Extras"><strong>Extras</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55166">55166</a>, <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56045">56045</a>: Copy the XML schemas used for

+        validation that are packaged in jsp-api.jar to servlet-api.jar so that

+        an embedded Tomcat instance can start without Jasper being available.

+        This also enables validation to work without Jasper being available.

+        (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56039">56039</a>: Enable the JmxRemoteLifecycleListener to work over

+        SSL. Patch by esengstrom. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.51 (violetagg)/Other"><!--()--></a><a name="Tomcat_7.0.51_(violetagg)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55743">55743</a>: Enable the stop script to work when the shutdown port

+        is disabled and a PID file is defined. This is only available on

+        platforms that use <code>catalina.sh</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55986">55986</a>: When forcing Tomcat to stop via

+        <code>kill -9 $CATALINA_PID</code>, the <code>catalina.sh</code> script

+        could incorrectly report that Tomcat had not yet completely stopped when

+        it had. Based on a patch by jess. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Package correct license and notice files with embedded JARs. (markt)

+      </td></tr>

       <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

         Remove svn keywords (such as $Id) from source files and documentation.

         (kkolinko)

       </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Improvements to the Windows installer, to align it with installing

-        the sevice with <code>service.bat</code>. Use explicit memory sizes

-        (--JvmMs 128 Mb and --JvmMx 256 Mb). Specify log directory path

-        when ininstalling, so that the log file is written to the Tomcat logs

-        directory, instead of "%SystemRoot%\System32\LogFiles\Apache".

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix CVE-2014-0050, a denial of service with a malicious, malformed

+        Content-Type header and multipart request processing. Fixed by merging

+        latest code (r1565163) from Commons FileUpload. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56115">56115</a>: Expose the <code>httpusecaches</code> property of

+        Ant's <code>get</code> task as some users may need to change the

+        default. Based on a suggestion by Anthony. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.50 (violetagg)"><!--()--></a><a name="Tomcat_7.0.50_(violetagg)"><strong>Tomcat 7.0.50 (violetagg)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2014-01-08</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.50 (violetagg)/Catalina"><!--()--></a><a name="Tomcat_7.0.50_(violetagg)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Handle the case where a <code>context.xml</code> file is added to a

+        web application deployed from a directory. Previously the file was

+        ignored until Tomcat was restarted. Now (assuming automatic deployment

+        is enabled) it will trigger a redeploy of the web application. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix string comparison in <code>HostConfig.setContextClass()</code>.

         (kkolinko)

       </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49993">49993</a>, <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=56143">56143</a>: Improve <code>service.bat</code>

-        script. Allow it to be launched from non-UAC console. The UAC prompt

-        will be shown only once. Now there is no need to run the command shell

-        with elevated privileges. Improve check for <code>JAVA_HOME</code>

-        and add support for <code>JRE_HOME</code>. Warn if neither "client"

-        nor "server" JVM is found. Align classpath, display name and other

-        options with the <code>exe</code> installer. Make command names

-        case-insensitive. Update documentation. (kkolinko)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.39 (markt)"><!--()--></a><a name="Tomcat_6.0.39_(markt)"><strong>Tomcat 6.0.39 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2014-01-31</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.39 (markt)/Catalina"><!--()--></a><a name="Tomcat_6.0.39_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55166">55166</a>: Fix regression that broke XML validation when running

-        on some Java 5 JVMs. (kkolinko)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.39 (markt)/Coyote"><!--()--></a><a name="Tomcat_6.0.39_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Make the HTTP NIO connector tolerant of whitespace in the individual

-        values used for the ciphers attribute. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Remove dependency introduced on the jsp-api.jar as part of the XML

-        validation changes introduced in 6.0.38. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.39 (markt)/Jasper"><!--()--></a><a name="Tomcat_6.0.39_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Correct several errors in jspxml Schema and DTD. (kkolinko)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.39 (markt)/Cluster"><!--()--></a><a name="Tomcat_6.0.39_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

-        Remove an empty TestTwoPhaseCommit test from Tribes. (kkolinko)

+        Streamline handling of WebSocket messages when no handler is configured

+        for the message currently being received. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Handle the case where a WebSocket annotation configures a message size

+        limit larger than the default permitted by Tomcat. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55855">55855</a>: This is a partial fix that bypasses the relatively

+        expensive check for a WebSocket upgrade request if no WebSocket

+        endpoints have been registered. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55905">55905</a>: Prevent a NPE when web.xml references a taglib file

+        that does not exist. Provide better error message. (violetagg)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.39 (markt)/Web applications"><!--()--></a><a name="Tomcat_6.0.39_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.50 (violetagg)/Coyote"><!--()--></a><a name="Tomcat_7.0.50_(violetagg)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix broken link in Jasper How-To documentation. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Align index.html and index.jsp in ROOT web application. Correct links

-        to specifications and to the Tomcat mailing lists. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Remove second copy of RUNNING.txt from the full-docs distribution. Some

-        unpacking utilities can't handle multiple copies of a file with the same

-        name in a directory. (kkolinko)

+        When using the BIO connector with an internal executor, do not display a

+        warning that the executor has not shutdown as the default configuration

+        for BIO connectors is not to wait. This is because threads in

+        keep-alive connections cannot be interrupted and therefore the warning

+        was nearly always displayed. (markt)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.39 (markt)/Other"><!--()--></a><a name="Tomcat_6.0.39_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.50 (violetagg)/Jasper"><!--()--></a><a name="Tomcat_7.0.50_(violetagg)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        JspC uses servlet context initialization parameters to pass

+        configuration so ensure that the servlet context used supports

+        initialization parameters. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.50 (violetagg)/Cluster"><!--()--></a><a name="Tomcat_7.0.50_(violetagg)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        In <code>AbstractReplicatedMap#finalize</code>, remove rpcChannel from

+        channel Listener of group channel before sending

+        <code>MapMessage.MSG_STOP</code> message. This prevents that the node

+        that sent the <code>MapMessage.MSG_STOP</code> by normal shutdown is

+        added to member map again by ping at heartbeat thread in the node that

+        received the <code>MapMessage.MSG_STOP</code>. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add time stamp to <code>GET_ALL_SESSIONS</code> message. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.50 (violetagg)/Web applications"><!--()--></a><a name="Tomcat_7.0.50_(violetagg)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix the sample configuration of <code>StaticMembershipInterceptor</code>

+        in order to prevent warning log. uniqueId must be 16 bytes. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.50 (violetagg)/Extras"><!--()--></a><a name="Tomcat_7.0.50_(violetagg)/Extras"><strong>Extras</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update sample Eclipse IDE project: use JUnit 4 library and prefer a

-        Java 5 JDK when several JDKs are configured. Cleanup the Ant build

-        files. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Correct Maven dependencies for individual JAR files. (markt)

+        Update dependencies that are used to build tomcat-juli extras component.

+        Apache Avalon Framework is updated to version 4.1.5, Apache Log4J to

+        version 1.2.17. (rjung)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.38 (markt)"><!--()--></a><a name="Tomcat_6.0.38_(markt)"><strong>Tomcat 6.0.38 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.38 (markt)/Catalina"><!--()--></a><a name="Tomcat_6.0.38_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.49 (violetagg)"><!--()--></a><a name="Tomcat_7.0.49_(violetagg)"><strong>Tomcat 7.0.49 (violetagg)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.49 (violetagg)/Catalina"><!--()--></a><a name="Tomcat_7.0.49_(violetagg)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Ensure that when Tomcat's anti-resource locking features are used

-        that the temporary copy of the web application and not the original is

-        removed when the web application stops. (markt/kkolinko) 

+        Correct a regression in the new XML local resolver that triggered false

+        failures when XML validation was configured. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55019">55019</a>: Fix a potential exception when accessing JSPs while

-        running under a SecurityManager. (jfclere)

+        Prevent a NPE when destroying HTTP upgrade handler for WebSocket

+        connections. (violetagg)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.48 (violetagg)"><!--()--></a><a name="Tomcat_7.0.48_(violetagg)"><strong>Tomcat 7.0.48 (violetagg)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.48 (violetagg)/Catalina"><!--()--></a><a name="Tomcat_7.0.48_(violetagg)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51294">51294</a>: Add support for unpacking WARs located outside of the

+        Host's appBase in to the appBase. (markt) 

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55052">55052</a>: Make JULI's LogManager to additionally look for

-        logging properties without prefixes if the property cannot be found with

-        a prefix. (kkolinko)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55656">55656</a>: Configure the Digester to use the server class loader

+        when parsing server.xml rather than the class loader that loaded

+        StandardServer. Patch provided by Roberto Benedetti. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55266">55266</a>: Ensure that the session ID is parsed from the request

-        before any redirect as the session ID may need to be encoded as part of

-        the redirect URL. (markt)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55664">55664</a>: Correctly handle JSR 356 WebSocket Encoder, Decoder

+        and MessageHandler implementations that use a generic type such as

+        <code>Encoder.Text&lt;List&lt;String&gt;&gt;</code>. Includes a test

+        case by Niki Dokovski. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55404">55404</a>: Log warnings about using security roles in web.xml as

-        warnings. (markt)

+        Correctly handle WebSocket <code>Encoder</code>s, <code>Decoder</code>s

+        and <code>MessageHandler</code>s that use arrays of generic types.

+        (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55268">55268</a>: Added optional --service-start-wait-time

-        command-line option to change service start wait time from default

-        of 10 seconds. (schultz)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55681">55681</a>: Ensure that the WebSocket session is made available

+        to <code>MessageHandler</code> method calls. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Correctly associate the default resource bundle with the English locale

-        so that requests that specify an Accept-Language of English ahead of

-        French, Spanish or Japanese get the English messages they asked for.

-        (markt) 

+        Updated servlet spec version and documentation section-number reported

+        when JAR files are rejected for containing a trigger class

+        (e.g. javax.servlet.Servlet). (schultz)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Modify the WebSocket handshake process so that the user properties

+        <code>Map</code> exposed by the <code>ServerEndpointConfig</code> during

+        the call to <code>Configurator.modifyHandshake()</code> is unique to the

+        connection rather than shared by all connections associated with the

+        Endpoint. This allows for easier configuration of per connection

+        properties from within <code>modifyHandshake()</code>. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Add missing JavaEE 5 XML schema definitions. (markt)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55684">55684</a>: Log a warning but continue if the memory leak

+        detection code is unable to access all threads to check for possible

+        memory leaks when a web application is stopped. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Define the web-fragment.xml in tomcat7-websocket.jar as a Servlet 3.0

+        web fragment rather than as a Servlet 3.1 web fragment. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55715">55715</a>: Add a per web application executor to the WebSocket

+        implementation and use it for calling

+        <code>SendHandler.onResult()</code> when there is a chance that the

+        current thread also initiated the write. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Prevent file descriptors leak and ensure that files are closed when

+        configuring the web application. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fixed the name of the provider-configuration file located in

+        <code>tomcat7-websocket.jar!/META-INF/services</code> that exposes

+        information for

+        <code>javax.websocket.server.ServerEndpointConfig$Configurator</code>

+        implementation. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55760">55760</a>: Remove the unnecessary setting of the

+        <code>javax.security.auth.useSubjectCredsOnly</code> system property in

+        the <code>SpnegoAuthenticator</code> as in addition to it being

+        unnecessary, it causes problems with using SPNEGO with IBM JDKs. Patch

+        provided by Arunav Sanyal. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55772">55772</a>: Ensure that the request and response are recycled

+        after an error during asynchronous processing. Includes a test case

+        based on code contributed by Todd West. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55778">55778</a>: Add an option to the JNDI Realm to control the QOP

+        used for the connection to the LDAP server after authentication when

+        using SPNEGO with delegated credentials. This value is used to set the

+        <code>javax.security.sasl.qop</code> environment property for the LDAP

+        connection. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55798">55798</a>: Log an error if the MemoryUserDatabase is unable to

+        find the specified user database file. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55799">55799</a>: Correctly enforce the restriction in JSR356 that no

+        more than one data message may be sent to a remote WebSocket endpoint at

+        a time. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

         When Catalina parses TLD files, always use a namespace aware parser to

         be consistent with how Jasper parses TLD files. The

         <code>tldNamespaceAware</code> attribute of the Context is now ignored.

+        (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Deprecate the <code>tldNamespaceAware</code> Context attribute as TLDs

+        are always parsed with a namespace aware parser. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct a logic error that meant that unpackWARs was ignored and the WAR

+        was always expanded if a WAR failed to deploy. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add support for defining <code>copyXML</code> on a per Context basis.

         (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        As per section SRV.14.4.3 of the Servlet 2.5 specification, a namespace

-        aware, validating parser will be used when processing <code>*.tld</code>

-        and <code>web.xml</code> files if the system property

-        <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code> is set to

-        <code>true</code>. (markt)

+        Define the expected behaviour of the automatic deployment and align the

+        implementation to that definition. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        When running under a security manager, change the default value of the

+        Host's <code>deployXML</code> attribute to <code>false</code>.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        If a Host is configured with a value of <code>false</code> for

+        <code>deployXML</code>, a web application has an embedded

+        descriptor at <code>META-INF/context.xml</code> and no explicit

+        descriptor has been defined for this application, do not allow the

+        application to start. The reason for this is that the embedded

+        descriptor may contain configuration necessary for secure operation

+        such as a <code>RemoteAddrValve</code>. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix CVE-2014-0033:

-        Ensure that sessions IDs are not parsed from URLs for Contexts where

-        <code>disableURLRewriting</code> is <code>true</code>. (markt)

+        Prevent an NPE in the WebSocket <code>ServerContainer</code> when

+        processing an HTTP session end event. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55801">55801</a>: Add the ability to set a custom

+        <code>SSLContext</code> to use for client wss connections. Patch

+        provided by Maciej Lypik. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55804">55804</a>: If the GSSCredential for the cached Principal expires

+        when using SPNEGO authentication, force a re-authentication. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55811">55811</a>: If the main web.xml contains an empty

+        absolute-ordering element and validation of web.xml is not enabled, skip

+        parsing any web-fragment.xml files as the result is never used. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55839">55839</a>: Extend support for digest prefixes {MD5}, {SHA} and

+        {SSHA} to all Realms rather than just the JNDIRealm. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55842">55842</a>: Ensure that if a larger than default response buffer

+        is configured that the full buffer is used when a Servlet outputs via a

+        Writer. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55851">55851</a>: Further fixes to enable SPNEGO authentication to work

+        with IBM JDKs. Based on a patch by Arunav Sanyal. (markt)

       </td></tr>

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

         Fix CVE-2013-4590:

@@ -337,38 +5223,494 @@
         by default when a security manager is used. The block is implemented via

         a custom resolver to enable the logging of any blocked entities. (markt)

       </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.48 (violetagg)/Coyote"><!--()--></a><a name="Tomcat_7.0.48_(violetagg)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Implement a number of small refactorings to the APR/native handler for

+        upgraded HTTP connections. (markt)

+      </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=56016">56016</a>: When loading resources for XML schema validation, take

-        account of the possibility that servlet-api.jar and jsp-api.jar may not

-        be loaded by the same class loader. Patch by Juan Carlos Estibariz.

+        Fix an issue with upgraded HTTP connections over HTTPS (e.g. secure

+        WebSocket) when using the APR/native connector that resulted in the

+        unexpected closure of the connection. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that the application class loader is used when calling the

+        <code>ReadListener</code> and <code>WriteListener</code> methods when

+        using non-blocking IO. A side effect of not doing this was that JNDI was

+        not available when processing WebSocket events. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Make the time that the internal executor (if used) waits for request

+        processing threads to terminate before continuing with the connector

+        stop process configurable. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55749">55749</a>: Improve the error message when <code>SSLEngine</code>

+        is disabled in the <code>AprLifecycleListener</code> and SSL is

+        configured for an APR/native connector. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        If a request that includes an <code>Expect: 100-continue</code> header

+        receives anything other than a 2xx response, close the connection This

+        protects against misbehaving clients that may not sent the request body

+        in that case and send the next request instead. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve the parsing of trailing headers in HTTP requests. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.48 (violetagg)/Jasper"><!--()--></a><a name="Tomcat_7.0.48_(violetagg)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55735">55735</a>: Fix a regression caused by the fix to

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55198">55198</a>. When processing JSP documents, attributes in XML

+        elements that are template content should have their text xml-escaped,

+        but output of EL expressions in them should not be escaped. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55807">55807</a>: The JSP compiler used a last modified time of -1 for

+        TLDs in JARs expanded in to WEB-INF/classes (IDEs often do this

+        expansion) when creating the dependency list for JSPs that used that

+        TLD. This meant JSPs using that TLD were recompiled on every access.

         (markt)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.38 (markt)/Coyote"><!--()--></a><a name="Tomcat_6.0.38_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.48 (violetagg)/Cluster"><!--()--></a><a name="Tomcat_7.0.48_(violetagg)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add log message that initialization of

+        <code>AbstractReplicatedMap</code> has been completed. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        The logger of <code>AbstractReplicatedMap</code> should be non-static in

+        order to enable logging of each application. Side-effects of this change

+        is to throw <code>RuntimeException</code> in

+        <code>MapMessage#getKey()</code> and <code>getValue()</code> instead of

+        Null return and error log. (kfujino)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Simplify the code of <code>DeltaManager#startInternal()</code>. Reduce

+        unnecessary nesting for acquisition of cluster instance. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Remove unnecessary attributes of 

+        <code>stateTransferCreateSendTime</code> and <code>receiverQueue</code>

+        from cluster manager template. These attributes should not be defined as

+        a template. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix MBean attribute definition of <code>stateTransfered</code>. The

+        method name is not <code>isStateTransfered()</code> but

+        <code>getStateTransfered()</code>. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct stop failure log of cluster. Failure cause is not only Valve.

+        (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Remove unnecessary sleep when sending session blocks on session sync

+        phase. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Expose <code>stateTimestampDrop</code> of

+        <code>org.apache.catalina.ha.session.DeltaManager</code> via JMX.

+        (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When the ping timeouted, make sure that <code>memberDisappeared</code>

+        method is not called by specifying the members that has already been

+        removed. (kfujino)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add log message of session relocation when member disappeared. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        If ping message fails, prevent wrong timeout detection of normal member

+        that is no failure members. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.48 (violetagg)/Web applications"><!--()--></a><a name="Tomcat_7.0.48_(violetagg)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add some documentation on the SSL configuration options for WebSocket

+        clients. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add to cluster document a description of

+        <code>notifyLifecycleListenerOnFailure</code> and

+        <code>heartbeatBackgroundEnabled</code>. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Update the documentation with information for WebSocket 1.0 specification

+        and javadoc. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55703">55703</a>: Clarify the role of the singleton attribute for JNDI

+        resource factories. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55746">55746</a>: Add documentation on the <code>allRolesMode</code> to

+        the <code>CombinedRealm</code> and <code>LockOutRealm</code>. Patch by

+        C&eacute;dric Couralet. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Expand the information on web applications that ship as part of Tomcat

+        in the security how-to section of the documentation web application.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Expand the description of the WebSocket buffers in the documentation web

+        application to clarify their purpose. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Correct the documentation for Cluster manager. (kfujino)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add information on how to configure integrated Windows authentication

+        when Tomcat is running on a non-Windows host. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.48 (violetagg)/Extras"><!--()--></a><a name="Tomcat_7.0.48_(violetagg)/Extras"><strong>Extras</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update commons-logging to version 1.1.3. (rjung)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.48 (violetagg)/Other"><!--()--></a><a name="Tomcat_7.0.48_(violetagg)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52323">52323</a>: Add support for the Cobertura code coverage tool

+        when running the unit tests. Based on a patch by mhasko.

+        (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update sample Eclipse IDE project. Explicitly use a Java 6 SE JDK.

+        Exclude JSR356 WebSocket classes from build path, as they cannot be

+        compiled with Java 6. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update the Eclipse compiler to 4.3.1. (kkolinko/markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.47 (violetagg)"><!--()--></a><a name="Tomcat_7.0.47_(violetagg)"><strong>Tomcat 7.0.47 (violetagg)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2013-10-24</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.47 (violetagg)/Coyote"><!--()--></a><a name="Tomcat_7.0.47_(violetagg)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52811">52811</a>: Fix parsing of Content-Type header in

-        <code>HttpServletResponse.setContentType()</code>. Introduces a new HTTP

-        header parser that follows RFC2616. (markt)

+        Fix regression with legacy WebSocket implementation in NIO and APR

+        connectors. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.47 (violetagg)/Web applications"><!--()--></a><a name="Tomcat_7.0.47_(violetagg)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Avoid hang observed with Java 6 on Windows when stopping the Tomcat

+        process via CTRL-C. (markt) 

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.47 (violetagg)/Other"><!--()--></a><a name="Tomcat_7.0.47_(violetagg)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55663">55663</a>: NOTICE files are corrected according to

+        <a href="http://www.apache.org/legal/src-headers.html#notice">NOTICE files requirements</a>.

+        (violetagg)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.46 (violetagg)"><!--()--></a><a name="Tomcat_7.0.46_(violetagg)"><strong>Tomcat 7.0.46 (violetagg)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.46 (violetagg)/Catalina"><!--()--></a><a name="Tomcat_7.0.46_(violetagg)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Only send a WebSocket close message on an IOException if the client has

+        not yet received a close control message from the server as the

+        IOException may be in response to the client continuing to send a

+        message after the server sent a close control message. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54691">54691</a>: Add configuration attribute "sslEnabledProtocols"

-        to HTTP connector and document it. (Internally this attribute has

-        been already implemented but not documented, under names "protocols"

-        and "sslProtocols". Those names of this attribute are now deprecated).

-        (schultz)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49134">49134</a>: Ensure nested realms are correctly destroyed, when a

+        CombinedRealm is destroyed. This ensures that the associated MBeans are

+        deregistered. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.46 (violetagg)/Coyote"><!--()--></a><a name="Tomcat_7.0.46_(violetagg)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Refactor APR/native connector to reduce the scope of

+        <code>localAddList</code>. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54947">54947</a>: Fix the HTTP NIO connector that incorrectly rejected a

-        request if the CRLF terminating the request line was split across

-        multiple packets. Patch by Konstantin Prei&szlig;er. (markt)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55602">55602</a>: Ensure that sockets removed from the Poller and then

+        closed in the APR/native connector are removed and then closed in a

+        thread-safe manner. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55228">55228</a>: Allow web applications to set a HTTP Date header.

+        Update the APR/native connector to version 1.1.29. (violetagg)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.46 (violetagg)/Jasper"><!--()--></a><a name="Tomcat_7.0.46_(violetagg)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55642">55642</a>: Correct logic error in the JSP parser that was

+        incorrectly identifying EL expressions in jsp:param element values as a

+        literal string. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.46 (violetagg)/Cluster"><!--()--></a><a name="Tomcat_7.0.46_(violetagg)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add support for notify periodic event of cluster. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.46 (violetagg)/Web applications"><!--()--></a><a name="Tomcat_7.0.46_(violetagg)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct the javadoc for <code>org.apache.catalina.Lifecycle</code>.

+        (kfujino)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add document for sessionIdAttribute attribute in

+        <code>org.apache.catalina.ha.session.JvmRouteBinderValve</code>.

+        (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Handle the case when a user closes the browser whilst playing the

+        snake game in the JSR356 WebSocket examples. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure Javadoc comments are associated with the correct elements in

+        <code>org.apache.tomcat.jni.Poll</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Expand Context documentation for the use of

+        <code>sessionCookiePath="/"</code> to make the implications

+        for session fixation protection clearer. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55629">55629</a>: Ensure that the JMX notification listener added during

+        initialization of the servlet org.apache.catalina.manager.StatusManagerServlet

+        is removed in the destroy phase. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct the documentation for Deployment Organization in the App Dev

+        Guide. (violetagg)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55639">55639</a>: Add a Drawboard WebSocket example. (kpreisser)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.45 (violetagg)"><!--()--></a><a name="Tomcat_7.0.45_(violetagg)"><strong>Tomcat 7.0.45 (violetagg)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.45 (violetagg)/Catalina"><!--()--></a><a name="Tomcat_7.0.45_(violetagg)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55576">55576</a>: Preserve the order in which request parameters were

+        received when accessing them via the Servlet API. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.45 (violetagg)/Cluster"><!--()--></a><a name="Tomcat_7.0.45_(violetagg)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Logger instance of cluster session manager is changed to non-static in

+        order to enable logging of each application. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.44 (violetagg)"><!--()--></a><a name="Tomcat_7.0.44_(violetagg)"><strong>Tomcat 7.0.44 (violetagg)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.44 (violetagg)/Jasper"><!--()--></a><a name="Tomcat_7.0.44_(violetagg)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55582">55582</a>: Correct concurrency issue that can result in two

+        instances of JspServletWrapper being created for one tag Patch provided

+        by Sheldon Shao. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.43 (violetagg)"><!--()--></a><a name="Tomcat_7.0.43_(violetagg)"><strong>Tomcat 7.0.43 (violetagg)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.43 (violetagg)/Catalina"><!--()--></a><a name="Tomcat_7.0.43_(violetagg)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51526">51526</a>: <code>o.a.catalina.startup.Tomcat#addWebapp</code>

+        methods now process the web application's <code>META-INF/context.xml</code>

+        when it is available in the provided path. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55186">55186</a>: Ensure local name is recycled between requests so IP

+        virtual hosting works correctly. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55210">55210</a>: Correct the processing of the provider-configuration

+        file for <code>javax.servlet.ServletContainerInitializer</code> in the

+        resource directory <code>META-INF/services</code> when this file

+        contains comments and multiple SCIs. Patch provided by Nick Williams.

+        (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55230">55230</a>: Use the correct resource path when obtaining an

+        InputStream for resources served by a ProxyDirContext. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that the JAR scanning process scans the Apache Log4j version 2

+        JARs. Patch provided by Nick Williams. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55261">55261</a>: Fix failing unit test for file upload checks when

+        running on platform / JVM combinations that have large network buffers.

         (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55268">55268</a>: Added optional --service-start-wait-time

+        command-line option to change service start wait time from default of 10

+        seconds.

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        The <code>contextClass</code> attribute of <code>HostConfig</code>

+        refers to the value of the <code>contextClass</code> attribute of Host.

+        (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55331">55331</a>: Dispatching to an asynchronous servlet from

+        <code>AsyncListener.onTimeout()</code> should not trigger an

+        <code>IllegalStateException</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55333">55333</a>: Correct a regression in the fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55071">55071</a>.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When using a security manager, ensure that calls to the ServletContext

+        that are routed via an <code>AccessController.doPrivileged</code> block

+        do not result in a call to a different underlying method on the

+        ServletContext. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55354">55354</a>: Ensure that the naming context environment parameters

+        are restored after associating the Principle with the user name. Based

+        on patch provided by Richard Begg. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55357">55357</a>: Ensure the web application class loader is set as a

+        thread context class loader during session deserialization. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55404">55404</a>: Log warnings about using security roles in web.xml

+        without defining them as warnings. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55439">55439</a>: Don't try a forced stop when <code>stop

+        -force</code> is used if Tomcat has already been stopped. This avoids

+        error messages when the PID file has been cleared. If a forced stop is

+        required, improve handling of the case when the PID file can be read

+        from or written to but not deleted. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55454">55454</a>: Avoid NPE when parsing an incorrect content type.

+        (violetagg)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Back-port the JSR-356 Java WebSocket 1.0 implementation from Tomcat 8.

+        Note that use of this functionality requires Java 7. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Deprecate the Tomcat proprietary WebSocket API in favour of the new

+        JSR-356 implementation. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55494">55494</a>: Reduce severity of log message from warning to

+        information for JNDI Realm connection issues where the JNDI Realm

+        automatically re-tries the action that failed. Make clear in the log

+        message that the action is being re-tried. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct several incorrect formats of <code>JdkLoggerFormatter</code>.

+        (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55521">55521</a>: Ensure that calls to

+        <code>HttpSession.invalidate()</code> do not return until the session

+        has been invalidated. Also ensure that checks on the validity of a

+        session return a result consistent with any previous call to

+        <code>HttpSession.invalidate()</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55524">55524</a>: Refactor to avoid a possible deadlock when handling an

+        <code>IOException</code> during output when using Tomcat'

+        proprietary (and deprecated) WebSocket API. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        The loaded attribute never exists in <code>PersistentManager</code>.

+        isLoaded is defined as operation in mbeans-descriptors. (kfujino)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+          Added logging of logging.properties location when system property

+          <code>org.apache.juli.ClassLoaderLogManager.debug=true</code>

+          is set.

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55570">55570</a>: Correctly log exceptions for all error conditions in

+        the SPNEGO authenticator. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.43 (violetagg)/Coyote"><!--()--></a><a name="Tomcat_7.0.43_(violetagg)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55228">55228</a>: Allow web applications to set a HTTP Date header.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Expose the current connection count for each protocol handler via JMX.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55267">55267</a>: If an application configures a timeout for a Comet

+        connection ensure it is only used for read and not write operations.

+        This prevents a long timeout delaying the closing of the socket

+        associated with a Comet connection after an error occurs. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that <code>java.lang.VirtualMachineError</code>s are not

+        swallowed when using the HTTP or AJP NIO connectors. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55399">55399</a>: Use the response locale to select the language to use

+        for the status message in the HTTP response. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Refactor the connectors to support the new JSR-356 Java WebSocket

+        1.0 implementation. The most noticeable change is that the AJP

+        APR/native and HTTP APR/native connectors no longer support multiple

+        poller threads. Both connectors now use a single poller thread. (markt)  

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Internally, content length is managed as a <code>long</code>. Fix a few

+        places in the AJP connector where this was restricted to an

+        <code>int</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55453">55453</a>: Ensure that the AJP connector does not permit response

+        bodies to be included for responses with status codes and/or request

+        methods that are not permitted to have a response body. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55500">55500</a>: Don't ignore the value of an asynchronous context

+        timeout when using the AJP NIO connector. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

         Fix CVE-2013-4286:

         Better adherence to RFC2616 for content-length headers. (markt)

       </td></tr>

@@ -377,410 +5719,1537 @@
         when using chunked encoding. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55749">55749</a>: Improve the error message when SSLEngine is disabled

-        in the AprLifecycleListener and SSL is configured for an APR/native

-        connector. (markt)

+        Update the APR/native connector to version 1.1.28. Make this the minimum

+        acceptable version as the correct behaviour of the JSR-356 WebSocket

+        implementation when using the APR/native HTTP connector depends on a bug

+        fix in the 1.1.28 release. (markt) 

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.43 (violetagg)/Jasper"><!--()--></a><a name="Tomcat_7.0.43_(violetagg)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55198">55198</a>: Ensure attribute values in tagx files that include EL

+        and quoted XML characters are correctly quoted in the output. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Avoid possible NPE if a content type is specified without a character set.

+        Ensure that <code>javax.el.ELContext.getContext(Class)</code> will

+        throw <code>NullPointerException</code> when the provided class is

+        null. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that <code>FeatureDescriptor</code> objects returned by

+        <code>javax.el.MapELResolver.getFeatureDescriptors(ELContext,Object)</code>

+        will be created with a correct <code>shortDescription</code> - an empty string and

+        a named attribute <code>ELResolver.RESOLVABLE_AT_DESIGN_TIME</code> -

+        true. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that <code>FeatureDescriptor</code> objects returned by

+        <code>javax.el.ResourceBundleELResolver.getFeatureDescriptors(ELContext,Object)</code>

+        will be created with a correct <code>shortDescription</code> - an empty

+        string.

+        <code>javax.el.ResourceBundleELResolver.isReadOnly(ELContext,Object,Object)</code>

+        returns true if the base object is an instance of ResourceBundle.

+        (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55207">55207</a>: Enforce the restriction that a &lt;jsp:text&gt;

+        element may not contain any sub-elements from any namespace. Patch

+        provided by Jeremy Boynes. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that

+        <code>javax.el.ListELResolver.getFeatureDescriptors(ELContext,Object)</code>

+        will always return null.

+        <code>javax.el.ListELResolver.isReadOnly(ELContext,Object,Object)</code>

+        will return a result when the property cannot be coerced into an

+        integer. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that

+        <code>javax.el.ArrayELResolver.getFeatureDescriptors(ELContext,Object)</code>

+        will always return null.

+        <code>javax.el.ArrayELResolver.isReadOnly(ELContext,Object,Object)</code>

+        and

+        <code>javax.el.ArrayELResolver.getType(ELContext,Object,Object)</code>

+        will return a result when the property cannot be coerced into an

+        integer. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55309">55309</a>: Fix concurrency issue with JSP compilation and the

+        tag plug-in manager. Patch provided by Sheldon Shao. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that

+        <code>javax.el.BeanELResolver.getFeatureDescriptors(ELContext,Object)</code>

+        and

+        <code>javax.el.BeanELResolver.getCommonPropertyType(ELContext,Object)</code>

+        do not throw <code>NullPointerException</code> when the provided context

+        is null. (violetagg)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.43 (violetagg)/Cluster"><!--()--></a><a name="Tomcat_7.0.43_(violetagg)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add new attribute terminateOnStartFailure. Set to true if you wish to

+        terminate replication map when replication map fails to start.

+        If replication map is terminated, associated context will fail to start.

+        If you set this attribute to false, replication map does not end.

+        It will try to join the map membership in the heartbeat. Default value

+        is false. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Avoid ConcurrentModificationException when sending a heartbeat.

+        (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Avoid NPE when the channel fails to start. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55301">55301</a>: Fix <code>IllegalArgumentException</code> thrown by

+        simple test for McastService. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55332">55332</a>: Fix NPE in <code>FileMessageFactory.main</code> when

+        specify empty file as arguments. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        More definite thread name for <code>MessageDispatch15Interceptor</code>.

+        (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.43 (violetagg)/Web applications"><!--()--></a><a name="Tomcat_7.0.43_(violetagg)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Remove the experimental label from the AJP NIO connector documentation.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correctly associated the default resource bundle with the English locale

+        so that requests that specify an Accept-Language of English ahead of

+        French, Spanish or Japanese get the English messages they asked for.

+        (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55469">55469</a>: Fixed tags that were not properly closed. Based on a

+        patch provided by Larry Shatzer, jr. (violetagg)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        The WebSocket examples in the examples web application have been changed

+        to use the new JSR-356 Java WebSocket 1.0 implementation. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add document for

+        <code>org.apache.catalina.tribes.group.GroupChannel</code>. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct Realm Component page of Tomcat documentation. (violetagg)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.43 (violetagg)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.43_(violetagg)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54693">54693</a>: Add a validationQueryTimeout property. Patch provided

+        by Daniel Mikusa. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54693#c6">54693#c6</a>: Avoid NPE caused by <code>createConnection()</code>

+        method returns null. Patch provided by Daniel Mikusa. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55342">55342</a>: Remove unnecessary reset of interrupted flag. If

+        <code>InterruptedException</code> is thrown, the interrupted flag has

+        been cleared. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55343">55343</a>: Add flag to ignore exceptions of connection creation

+        while initializing the pool. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add undefined attributes and operations to mbeans-descriptor. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.43 (violetagg)/Other"><!--()--></a><a name="Tomcat_7.0.43_(violetagg)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=45428">45428</a>: Trigger a thread dump written to standard out if

+        Tomcat fails to stop in a timely manner to aid diagnostics. This is only

+        available on platforms that use <code>catalina.sh</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55204">55204</a>: Correct namespace used in Servlet 2.4 test web 

+        application. Patch provided by Jeremy Boynes. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55205">55205</a>: Reorder elements so web.xml complies with schema for

+        Servlet 3.0 test web application. Patch provided by Jeremy Boynes.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55211">55211</a>: Correct namespace in TLD files used in test web

+        applications. Rename elements <code>tagclass</code> to

+        <code>tag-class</code> so TLD files complies with DTD/schema. Patch

+        provided by Jeremy Boynes. (violetagg)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update package renamed version of Commons BCEL to the latest code from

+        Commons BCEL trunk. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update package renamed version of Commons FileUpload to the latest code

+        from Commons FileUpload trunk. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55297">55297</a>: When looking for the jsvc executable, if an explicit

+        path is not set and it is not found in $CATALINA_BASE, look in

+        $CATALINA_HOME as well. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55336">55336</a>: Correctly escape parameters passed to eval in the

+        catalina.sh script to ensure that Tomcat starts when installed on a path

+        that contains multiple consecutive spaces. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.42 (markt)"><!--()--></a><a name="Tomcat_7.0.42_(markt)"><strong>Tomcat 7.0.42 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2013-07-05</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.42 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.42_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Enforce the restriction described in section 4.4 of the Servlet 3.0

+        specification that requires the new pluggability methods only to be

+        available to <code>ServletContextListener</code>s defined in one of the

+        specified ways. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Better handle FORM authentication when requesting a resource as an

+        unauthenticated user that is only protected for a sub-set of HTTP

+        methods that does not include GET. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53777">53777</a>: Add support for a JAAS Realm instance to use a

+        dedicated configuration rather than the JVM global JAAS configuration.

+        This is most likely to be useful for per web application JAAS Realms.

+        Based on a patch by eolivelli. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54745">54745</a>: Fix JAR file scanning when Tomcat is deployed via Java

+        Web Start. Patch provided by Nick Williams. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55017">55017</a>: Add the ability to configure the RMI bind address when

+        using the JMX remote lifecycle listener. Patch provided by Alexey

+        Noskov. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55071">55071</a>: Ensure original exception is reported if JDBC Realm

+        fails to read a user's credentials. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55073">55073</a>, <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55108">55108</a>, <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55109">55109</a>, <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55110">55110</a>,

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55158">55158</a> &amp; <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55159">55159</a>: Small performance improvements.

+        Patches provided by Adrian Nistor. (markt/violetagg)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55102">55102</a>: Add support for time to first byte in the

+        AccessLogValve. Patch provided by Jeremy Boynes. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55125">55125</a>: If the Server container fails to start, don't allow

+        the Catalina wrapper to start (used when running from the command line

+        and when running as a service) since Tomcat will not be able to do any

+        useful work. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Update the <code>JreMemoryLeakPreventionListener</code> to take account

+        of changes in the behaviour of

+        <code>java.beans.Introspector.flushCaches()</code> and

+        <code>sun.awt.AppContext.getAppContext()</code> in Java 7. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Avoid WARNING log message of

+        <code>Users:type=UserDatabase,database=UserDatabase</code> at Tomcat

+        shutdown. (pero)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Avoid <code>ClassCastException</code> when an asynchronous dispatch is

+        invoked in an asynchronous cycle which is started by a call to

+        <code>ServletRequest.startAsync(ServletRequest,ServletResponse)</code>

+        where ServletRequest/ServletResponse are custom implementations.

+        (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct a regression introduced in 7.0.39 (refactoring of base 64

+        encoding and decoding) that broke the JNDI Realm when

+        <code>userPassword</code> was set and passwords were hashed with MD5 or

+        SHA1. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct the mechanism for the path calculation in

+        <code>AsyncContext.dispatch()</code>. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55155">55155</a>: Avoid constant focus grabbing when running the Tomcat

+        unit tests under Java 6 on OSX. Patch provided by Casey Lucas. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55160">55160</a>: Don't ignore connectionUploadTimeout setting when

+        using HTTP NIO connector. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55176">55176</a>: Correctly handle regular expressions within SSI

+        expressions that contain an equals character. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.42 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.42_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55177">55177</a>: Correctly handle infinite soTimeout for BIO HTTP

+        connector. Based on a patch by Nick Bunn. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55180">55180</a>: Correctly handle infinite soTimeout when

+        <code>disableUploadTimeout</code> is set to false. Patch provided by

+        Nick Bunn. (violetagg)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.42 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.42_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Delete leftover of war file from tempDir when removing invalid

+        <code>FileMessageFactory</code>. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that the keepAlive of NioSender works correctly when

+        <code>keepAliveCount</code>/<code>keepAliveTime</code> is set to a value

+        greater than 0. (kfujino)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add logging of when a member is unable to join the cluster. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Replace Tribes's <code>TaskQueue</code> as executor's

+        workQueue in order to ensure that executor's <code>maxThread</code>

+        works correctly. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54086">54086</a>: Fix an additional code path that could lead to

+        multiple threads attempting to modify the same selector key set. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.42 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.42_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Complete the document for <code>MessageDispatch15Interceptor</code>.

+        (kfujino)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53655">53655</a>: Document the circumstances under which Tomcat will add

+        a <code>javax.mail.Authenticator</code> to mail sessions created via a

+        JNDI resource. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55179">55179</a>: Correct the Javadoc for the remote IP valve so the

+        correct name is used to refer to the <code>proxiesHeader</code>

+        property. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.42 (markt)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.42_(markt)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55031">55031</a>: Fixed <code>Export-Package</code> header and

+        <code>uses</code> directives in MANIFEST.MF. Change the version for

+        package <code>org.apache.juli.logging</code> to "0" in

+        <code>Import-Package</code> header. Thus any version of that package

+        can be used. Patch provided by Martin Lichtin. (violetagg)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.42 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.42_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update Maven Central location used to download dependencies at build time

+        to be <code>repo.maven.apache.org</code>. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update JUnit to version 4.11. Configure separate download for Hamcrest

+        1.3 core library as its classes are no longer included in junit.jar.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54013">54013</a>: When using a forced stop, allow a short period of time

+        (5s) for the process to die before returning. Patch provided by

+        mukarram.baig. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55119">55119</a>: Ensure that the build process produces Javadoc that is

+        not vulnerable to CVE-2013-1571. Based on a patch by Uwe Schindler.

         (markt)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.38 (markt)/Jasper"><!--()--></a><a name="Tomcat_6.0.38_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.41 (markt)"><!--()--></a><a name="Tomcat_7.0.41_(markt)"><strong>Tomcat 7.0.41 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2013-06-10</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.41 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.41_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55198">55198</a>: Ensure attribute values in tagx files that include EL

-        and quoted XML characters are correctly quoted in the output. (markt)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54703">54703</a>: Make parsing of HTTP Content-Type headers tolerant of

+        any CR or LF characters that appear in the value passed by the

+        application. Also fix some whitespace parsing issues identified by the

+        additional test cases. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55671">55671</a>: Consistently use the configuration option name

-        <code>genStringAsCharArray</code> rather than a mixture of

-        <code>genStrAsCharArray</code> and <code>genStringAsCharArray</code> but

-        retain support for <code>genStrAsCharArray</code> as in initialisation

-        parameter for the JSP servlet to retain backwards compatibility with

-        existing configurations. (markt)

+        Prevent possible WAR file locking when reading a context.xml file from

+        an unexpanded WAR file. Note that in normal usage, the

+        <code>JreMemoryLeakPreventionListener</code> would protect against this.

+        (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55691">55691</a>: Fix <code>javax.el.ArrayELResolver</code> to correctly

-        handle the case where the base object is an array of primitives. (markt)

+        Ensure that when auto deployment runs for a Host, it uses the latest

+        values for copyXML, deployXML and unpackWARs. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55973">55973</a>: Fix processing of XML schemas when validation is

-        enabled in Jasper. (kkolinko)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54939">54939</a>: Provide logging (using a UserDataHelper) when HTTP

+        header parsing fails (e.g. when maxHeaderCount is exceeded). (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54944">54944</a>: Enhancements to the unit tests for FORM

+        authentication. Patch provided by Brian Burch. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54955">54955</a>: When a reload of the application is performed ensure

+        that a subsequent request to the context root does not result in a 404

+        response. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54971">54971</a>: Ensure that the correct location is used when writing

+        files via <code>javax.servlet.http.Part.write(String)</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54974">54974</a>: Ensure that 

+        <code>SessionCookieConfig#set&lt;methods&gt;</code>

+        will throw <code>IllegalStateException</code> if the

+        <code>ServletContext</code> from which this 

+        <code>SessionCookieConfig</code> was acquired has already been

+        initialized. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54981">54981</a>: Ensure that

+        <code>ServletContext#getJspConfigDescriptor()</code> will return

+        <code>null</code> when there is no jsp configuration provided by

+        web.xml/web-fragment.xml. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that when Tomcat's anti-resource locking features are used

+        that the temporary copy of the web application and not the original is

+        removed when the web application stops. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54984">54984</a>: Use the correct encoding when processing a form data

+        posted as multipart/form-data even when the request parameters are not

+        parsed. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54999">54999</a>: The old JSESSIONIDSSO needs to be removed when SSO is

+        being used and logout() and login() occur within a single request. Patch

+        provided by Keith Mashinter. (markt) 

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55035">55035</a>: Add support for the version attribute to the deploy

+        command of the Ant tasks for interfacing with the text based Manager

+        application. Patch provided by  Sergey Tcherednichenko. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55046">55046</a>: Add a Servlet Filter that implements

+        <a href="http://www.w3.org/TR/cors/" rel="nofollow">CORS</a>. Patch

+        provided by Mohit Soni. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=55052">55052</a>: JULI's LogManager now additionally looks for

+        logging properties without prefixes if the property cannot be found with

+        a prefix. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that only the first asynchronous dispatch operation for a given

+        asynchronous cycle will be performed. Any subsequent asynchronous

+        dispatch operation for the same asynchronous cycle will be ignored and

+        <code>IllegalStateException</code> will be thrown. (violetagg)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.38 (markt)/Web applications"><!--()--></a><a name="Tomcat_6.0.38_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.41 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.41_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54947">54947</a>: Fix the HTTP NIO connector that incorrectly rejected a

+        request if the CRLF terminating the request line was split across

+        multiple packets. Patch by Konstantin Prei&szlig;er. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.41 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.41_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54964">54964</a>: Allow tag plug-ins to be packaged with a web

+        application. Patch provided by Sheldon Shao. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54968">54968</a>: Return the correct version number (2.2) of the JSP

+        specification that is supported by the JSP engine when

+        <code>javax.servlet.jsp.JspEngineInfo#getSpecificationVersion()</code>

+        is invoked. (violetagg) 

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.41 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.41_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Add documentation for

-        <code>o.a.c.tribes.group.interceptors.TcpFailureDetector</code>.

+        Add <code>maxValidTime</code> attribute to prevent the leak of

+        <code>FileMessageFactory</code> in <code>FarmWarDeployer</code>.

+        (kfujino)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Simplify the code of <code>ReplicationValve</code>: Rather than get

+        cluster instance from container on every request, use instance variable.

         (kfujino)

       </td></tr>

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Complete the documentation for

-        <code>MessageDispatch15Interceptor</code>. (kfujino)

+        Add <code>maxWait</code> attribute that the senderPool will wait when

+        there are no available senders. (kfujino)

       </td></tr>

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Add to cluster document a description of

-        <code>notifyLifecycleListenerOnFailure</code> and

-        <code>heartbeatBackgroundEnabled</code>. (kfujino)

+        Improve error message by including specified timeout if failed to

+        retrieve a data sender. (kfujino)

       </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55746">55746</a>: Add documentation on the <code>allRolesMode</code> to

-        the <code>CombinedRealm</code> and <code>LockOutRealm</code>. Patch by

-        C&eacute;dric Couralet. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix the sample configuration of <code>StaticMembershipInterceptor</code>

-        in order to prevent warning log. uniqueId must be 16 bytes. (kfujino)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55119">55119</a>: Avoid CVE-2013-1571 when generating Javadoc. (markt)

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add <code>removeSuspectsTimeout</code> attribute in order to remove a

+        suspect node in TcpFailureDetector. (kfujino)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.38 (markt)/Other"><!--()--></a><a name="Tomcat_6.0.38_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.41 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.41_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update Maven Central location used to download dependencies at build

-        time to be <code>repo.maven.apache.org</code>. (kkolinko)

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54931">54931</a>: Add information to the Window Service how-to about

+        installing and running multiple instances. Based on a patch by Chris

+        Derham. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55663">55663</a>: Minor correction to the wording of the NOTICE files to

-        align them with the

-        <a href="http://www.apache.org/legal/src-headers.html#notice">requirements

-        for NOTICE files</a>. (violetagg)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54932">54932</a>: Correct the link to Tribes documentation. (violetagg)

       </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Add <code>@since</code> markers to the common annotations classes and

-        fix a few specification compliance issues. (markt)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update to Eclipse JDT Compiler 4.3.1. (markt)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update the Apache Jakarta JSTL implementation used by the exmaples web

-        application to 1.1.2. (markt)

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add document for

+        <code>o.a.c.tribes.group.interceptors.TcpFailureDetector</code>.

+        (kfujino)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.37 (jfclere)"><!--()--></a><a name="Tomcat_6.0.37_(jfclere)"><strong>Tomcat 6.0.37 (jfclere)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2013-05-03</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.37 (jfclere)/Catalina"><!--()--></a><a name="Tomcat_6.0.37_(jfclere)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.40 (markt)"><!--()--></a><a name="Tomcat_7.0.40_(markt)"><strong>Tomcat 7.0.40 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2013-05-09</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.40 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.40_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update Tomcat's internal copy of Commons FileUpload to FileUpload 1.3.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54178">54178</a>, CVE-2013-2071: Protect against

+        <code>AsyncListener</code> implementations that throw

+        <code>RuntimeException</code>s in response to an event. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54791">54791</a>: Restore <code>tools.jar</code> entry in

+        <code>jarsToSkip</code> property to prevent warnings when running Tomcat

+        from Eclipse. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54851">54851</a>: When scanning for web fragments, directories without

+        any web-fragment.xml should not impact the status of distributable

+        element. Patch provided by Trask Stalnaker. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When an error occurs during the sending of a WebSocket message, notify

+        the Inbound side (where all the events occur that the application reacts

+        to) that an error has occurred and that the connection is being closed.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54906">54906</a>: Better error message if a

+        <code>ConcurrentModificationException</code> occurs while checking for

+        memory leaks when a web application stops. Also ensure that the

+        exception does not cause remaining checks to be skipped. Based on a

+        patch by NateC.

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Allow 204 responses (no content) to include entity headers as required

+        by RFC2616. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.40 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.40_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52055">52055</a>: Ensure that filters are recycled. (markt/kkolinko)

+        Ensure write errors when using HTTP Upgrade with the APR/native

+        connector result in <code>IOException</code>s rather than errors being

+        silently swallowed. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.40 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.40_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54802">54802</a>: Provide location information for exceptions thrown

+        by JspDocumentParser. (kkolinko)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52184">52184</a>: Reduce log level for invalid cookies. (markt)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54801">54801</a>: Do not attempt to parse text that looks like an EL

+        expressions inside a scriptlet in a JSP document because EL expressions

+        are not permitted in scriptlets. (kkolinko/markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53481">53481</a>: Added support for SSLHonorCipherOrder to allow

-        the server to impose its cipher order on the client. Based on a patch

-        provided by Marcel &#352;ebek. (schultz)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54821">54821</a>: Do not attempt to parse text that looks like an EL

+        expressions in a JSP document if EL expressions have been disabled.

+        (kkolinko/markt)  

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54044">54044</a>: Correct bug in timestamp cache used by logging

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54888">54888</a>: Add support for CSV lists with the ForEach tag plugin.

+        Patch provided by Sheldon Shao. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.40 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.40_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add several improvements for FarmWarDeployer. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.40 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.40_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54872">54872</a>: Correct Cluster Receiver page of Tomcat

+        documentation. (violetagg)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.40 (markt)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.40_(markt)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Document <code>StatementCache</code> interceptor. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix minor threading issue in <code>ConnectionPool</code>.

+        (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54732">54732</a>: Fix leak of statements in <code>StatementCache</code>

+        interceptor. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix NPE in <code>SlowQueryReportJmx</code> when running

+        <code>TestSlowQueryReport</code> test. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.40 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.40_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update to Eclipse JDT Compiler 4.2.2. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54890">54890</a>: Update to Apache Commons Daemon 1.0.15. (mturk)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Convert remaining unit tests to JUnit 4 and enable Checkstyle rule

+        that forbids use of methods from JUnit 3. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Remove unneeded permissions for reading UserDataHelper properties

+        from <code>catalina.policy</code> file. The class that needed those

+        was moved in 7.0.26. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.39 (markt)"><!--()--></a><a name="Tomcat_7.0.39_(markt)"><strong>Tomcat 7.0.39 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2013-03-26</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.39 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.39_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure a log message is generated when a web application fails to start

+        due to an error processing a ServletContainerInitializer. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Prevent NPE in JAR scanning when running in an environment where the

+        bootstrap class loader is not an ancestor of the web application class

+        loader such as OSGi environments. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that, if a call to UEncoder#encodeURL is made, all internal

+        structures are properly cleaned. (violetagg)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54660">54660</a>: Enable the modification of an access log's

+        <code>fileDateFormat</code> attribute while the access log is in use.

+        The change will take effect when the next entry is made to the access

+        log. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update Tomcat's internal copy of Commons FileUpload to FileUpload trunk,

+        revision 1458500 and the associated extract from Commons IO to 2.4.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54702">54702</a>: Prevent file descriptors leak and ensure that files

+        are closed when parsing web application deployment descriptors.

+        (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54707">54707</a>: Further relax the parsing of DIGEST authentication

+        headers to allow for buggy clients that quote values that RFC2617 states

+        should not be quoted. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Enable support for MBeans with multiple operations with the same name

+        but different signatures. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Deprecate Tomcat's internal Base 64 encoder/decoder and switch to

+        using a package renamed copy of the Commons Codec implementation.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that StandardJarScanner#scan will use the provided class loader

+        when scanning the class loader hierarchy. (violetagg)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.39 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.39_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54690">54690</a>: Fix a regression caused by the previous fix for

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54406">54406</a>. If no values are specified for sslEnabledProtocols or

+        ciphers use the default values for server sockets rather than the

+        default values for client sockets. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.39 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.39_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Correct Deployer, Manager and Context pages of Tomcat documentation.

+        (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.39 (markt)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.39_(markt)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52318">52318</a>: Version for imported package

+        <code>org.apache.juli.logging</code> is extended to include also 7.0.x

+        versions. The fix is applicable only when running in OSGi environment.

+        Patch provided by Martin Lichtin. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54599">54599</a>: Do not print connection password in

+        <code>PoolProperties.toString()</code>. Based on a patch by

+        Daniel Mikusa. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54684">54684</a>: Add <code>javax.naming.spi</code> to 

+        <code>Import-Package</code> header in MANIFEST.MF in order to resolve

+        <code>ClassNotFoundException</code> when running in OSGi environment.

+        (violetagg)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.39 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.39_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Update to Apache Commons Daemon 1.0.14 to resolve <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54609">54609</a>

+        which meant that installation of Windows service could fail

+        producing incorrect service launch command. (mturk)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure HEAD requests return the correct content length when the

+        requested resource uses a Writer. Patch by Nick Williams. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.38 (markt)"><!--()--></a><a name="Tomcat_7.0.38_(markt)"><strong>Tomcat 7.0.38 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.38 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.38_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that the request start time (used by the access log valve to

+        calculate request processing time) is correctly recorded for the HTTP

+        NIO connector. In some cases the request processing time may have been

+        longer than that recorded. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Add one more library from JDK 7 to the value of <code>jarsToSkip</code>

+        property in the <code>catalina.properties</code> file. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53871">53871</a>: If annotation scanning results in a

+        <code>StackOverflowError</code> due to broken class dependencies, add

+        the class hierarchy that triggered the exception to the error message.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add a new option to the standard JarScanner implementation

+        (<code>scanBootstrapClassPath</code>) to control if the bootstrap

+        classpath is scanned or not. By default, it will not be scanned. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Provide more consolidated servlet MBean data in the webapp MBean.

+        (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54584">54584</a>: Take account of the delegate attribute when building

+        the web application class path to pass to the JSP compiler. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Copy the updated and re-packaged UTF-8 decoder from Tomcat 8.0.x and use

+        this improved decoder for WebSocket connections. Remove the WebSocket

+        specific UTF-8 decoder. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54602">54602</a>: Recycle the byte to character converter used for URIs

+        between requests to ensure an error in one request does not trigger a

+        failure in the next request. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Use the newly added improved UTF-8 decoder for decoding UTF-8 encoded

+        URIs and UTF-8 encoded request bodies. Invalid UTF-8 URIs will not

+        cause an error but will make use of the replacement character when an

+        error is detected. This will allow web applications to handle the URI

+        which will most likely result in a 404 response. The fall-back to

+        decoding with ISO-8859-1 if UTF-8 decoding fails has been removed.

+        Invalid UTF-8 sequences in a request body will trigger an IOException.

+        The way the decoder is used has also been improved. The notable change

+        is that invalid sequences at the end of the input now trigger an error

+        rather than being silently swallowed. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54624">54624</a>: Ensure that the correct request body length is used

+        when swallowing a request body after FORM authentication prior to

+        restoring the original request preventing possible hanging when

+        restoring POST requests submitted over AJP. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54628">54628</a>: When writing binary WebSocket messages write from

+        start position in array rather than the start of the array. Patch

+        provided by blee. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.38 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.38_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Refactor char encoding/decoding using NIO APIs. (remm)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.38 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.38_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54203">54203</a>: Complete the Javadoc for

+        <code>javax.servlet.http.Part</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54638">54638</a>: Fix display of "Used" memory value for memory pools

+        on the status page in Manager web application when the page is rendered

+        as XML. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct typos in configuration samples on SSL Configuration page

+        of Tomcat documentation. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Disable support for comments on Changelog page of Tomcat

+        documentation. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix several issues with <code>status.xsd</code> schema in Manager web

+        application, testing it against actual output of StatusTransformer

+        class. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Clarify the documentation on how context paths may be configured for web

+        applications. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.38 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.38_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54601">54601</a>: Change <code>catalina.sh</code> to consistently use

+        <code>LOGGING_MANAGER</code> variable to configure logging,

+        instead of modifying <code>JAVA_OPTS</code> one. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.37 (markt)"><!--()--></a><a name="Tomcat_7.0.37_(markt)"><strong>Tomcat 7.0.37 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2013-02-18</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.37 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.37_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54521">54521</a>: Ensure that concurrent requests that require a DIGEST

+        authentication challenge receive different nonce values. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54534">54534</a>: Ensure that, if a call to

+        <code>StandardWrapper#isSingleThreadModel()</code> triggers the loading

+        of a Servlet, the correct class loader is used. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54536">54536</a>: Ensure the default error page is displayed if a custom

+        HTTP status code is used when calling

+        <code>HttpServletResponse#sendError(int, String)</code>. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.37 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.37_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54456">54456</a>: Ensure that if a client aborts a request when sending

+        a chunked request body that this is communicated correctly to the client

+        reading the request body. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update the native component of the APR/native connector to 1.1.27 and

+        make that version the recommended minimum version. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.37 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.37_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54239">54239</a>: Enable web applications to provide their own

+        Expression Language interpreter to enable them to optimise processing of

+        expressions. Based on a patch by Sheldon Shao. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.37 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.37_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54505">54505</a>: Create clearer links from the JNDI How-To to the

+        Tomcat specific options for configuring JNDI resources. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.37 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.37_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update to Apache Commons Daemon 1.0.13. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.36 (markt)"><!--()--></a><a name="Tomcat_7.0.36_(markt)"><strong>Tomcat 7.0.36 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.36 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.36_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Make additional allowances for buggy client implementations of HTTP

+        DIGEST authentication. This is a follow-on to <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54060">54060</a>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54438">54438</a>: Fix a regression in the fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52953">52953</a> that

+        triggered a NPE when digested passwords were used and an authentication

+        attempt was made for a user that did not exist in the realm. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54448">54448</a>: Correctly handle <code>@Resource</code> annotations on

+        primitives. Patch provided by Violeta Georgieva. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54450">54450</a>: Correctly handle resource injection when part of the

+        servlet properties uses <code>@Resource</code> and the other uses

+        <code>injection-target</code>. Patch provided by  Violeta Georgieva.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54458">54458</a>: Include exception when logging errors in the

+        DataSourceRealm. Patch provided by  Violeta Georgieva. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54483">54483</a>: Correct one of the Spanish translations. Based on a

+        suggestion from adinamita. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Prevent the SSO deregister when web application is stopped or reloaded.

+        When StandardManager(pathname="") or DeltaManager stops normally, all

+        sessions in the context are expired.

+        In this case, because most sessions is not time-out, SSO deregister was

+        triggered. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Include the exception in the log message if the parsing of the

+        context.xml file fails. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54497">54497</a>: Make memory leak detection code more robust so a

+        failure in the leak detection code does not prevent the Context from

+        stopping unless the error is fatal to the JVM. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54507">54507</a>: Do not start the background thread that is used for

+        expiring sessions (amongst other things) until the web application is

+        fully started. Stop the background thread as soon as the web application

+        is stopped. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Allow WebSocket Ping/Pong messages to be sent between fragments of a

+        fragmented message. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54612">54612</a>: Check if the socket is closed before trying to write a

+        WebSocket message to it. Also, flush any partial buffered data before

+        closing the socket. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.36 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.36_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54324">54324</a>: Allow APR connector to disable TLS compression

+        if OpenSSL supports it. (schultz)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54406">54406</a>: Fix NIO HTTPS connector to prune specified <code>

+        ciphers</code> and <code>sslEnableProtocols</code> options to those

+        supported by the SSL implementation, sharing logic with the BIO

+        connector. Modified ciphers and sslEnabledProtocols option pruning to

+        not silently revert to JVM defaults when none of the options specified

+        are supported - new behaviour is to warn and explicitly enable no

+        options. (timw)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Align NIO HTTP connector with other HTTP connectors and include leading

+        blank lines when determining the size of the HTTP headers. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.36 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.36_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53869">53869</a>: Performance improvement for pages with lots of heavily

+        nested tags. Retain a reference to the root JSP context rather than

+        traversing the hierarchy on every call. Based on a patch suggested by

+        Sheldon Shao. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54440">54440</a>: Correct a regression caused by the changes for

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54240">54240</a> that broke compilation of JSPs with JspC. Patch

+        provided by Sheldon Shao. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54466">54466</a>: Improve error message by including the name of the

+        file when the java file generated from a tag file cannot be compiled.

+        Based on a patch by Sheldon Shao. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.36 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.36_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix incorrect increment of <code>counterSend_EVT_SESSION_EXPIRED</code>

+        and <code>counterSend_EVT_CHANGE_SESSION_ID</code>. These values are not

+        incremented if no members active in cluster group. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54476">54476</a>: Correct error in Javadoc of GroupChannel send methods

+        to maker clear that the minimum length of the destination member array

+        is one, not two. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Prevent SSO deregister when node shutdown normally in cluster

+        environment. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Check cluster member before sending replicate message in

+        ClusterSingleSignOn. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.36 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.36_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54461">54461</a>: Improve the documentation for the compiler attribute

+        in the Jasper how-to. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add Jespa to the list of third-party Windows authentication providers

+        and make external links in the documentation for those providers

+        <code>no-follow</code>. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.36 (markt)/Tribes"><!--()--></a><a name="Tomcat_7.0.36_(markt)/Tribes"><strong>Tribes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54496">54496</a>: Don't use a hard-coded class name in

+        <code>MemberImpl.toString()</code>. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.36 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.36_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update to Apache Commons Daemon 1.0.12. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.35 (markt)"><!--()--></a><a name="Tomcat_7.0.35_(markt)"><strong>Tomcat 7.0.35 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2013-01-16</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.35 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.35_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54247">54247</a>: Prevent <code>ClassNotFoundException</code>s on stop

+        when running as a service. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54249">54249</a>: Ensure resource properties are available when the

+        context path contains encoded characters such as a space. This triggered

+        compilation issues in Jasper. Patch provided by Polina Genova. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54256">54256</a>: Improve error reporting when a JAR file fails

+        extension validation by including the name of the JAR file in the

+        exception. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Allow web applications to be stopped cleanly even if filters throw

+        exceptions when their destroy() method is called. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix memory leak of servlet instances when running with a

+        SecurityManager and either init() or destroy() methods fail

+        or the servlet is a SingleThreadModel one. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Cleanup method cache lookup code in <code>SecurityUtil</code> class.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Make the Tomcat 7 non-JSR356 WebSocket implementation non-blocking

+        (where supported by the connector) between the HTTP upgrade and the

+        first WebSocket message from the client to the server. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54262">54262</a>: Ensure that an empty

+        <code>&lt;absolute-ordering /&gt;</code> element in the main web.xml

+        file disables scanning for web fragments. Based on a patch by  Violeta

+        Georgieva. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54284">54284</a>: As per clarification from the Servlet EG, anonymous

+        Filters and Servlets are not permitted. Patch by Violeta Georgieva.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54371">54371</a>: Prevent exceptions when processing web fragments for

+        unexpanded WAR files when the context path contains characters that

+        need to be encoded in URLs such as spaces. Based on a patch by Polina

+        Genova. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54372">54372</a>: Make HTTP Digest authentication header parsing

+        tolerant of invalid headers sent by known buggy clients. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54377">54377</a>: Correctly set request attributes for AccessLog in

+        RemoteIpFilter. Patch by Violeta Georgieva. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54379">54379</a>: Implement support for post-construct and pre-destroy

+        elements in web.xml. Patch by Violeta Georgieva. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54380">54380</a>: Do not try to register servlets or contexts into the

+        mapper too early (which just caused a warning to be logged). (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix NPE in <code>WebappLoader.stopInternal</code> when stop is called

+        after a failed start. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54381">54381</a>: Add support for receiving WebSocket pong messages.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54382">54382</a>: Fix NPE when SSI processing is enabled and an empty

+        SSI directive is present. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix <code>ArrayIndexOutOfBoundsException</code> in

+        <code>HttpParser</code> when parsing incorrect HTTP headers. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54387">54387</a>: Deployment must fail when multiple servlets are mapped

+        to the same url-pattern. (markt)  

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54391">54391</a>: Provide a value for the

+        <code>javax.servlet.context.orderedLibs</code> attribute. (markt) 

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.35 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.35_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54248">54248</a>: Ensure that byte order marks are swallowed when using

+        a Reader to read a request body with a BOM for those encodings that

+        require byte order marks. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix release of processors in <code>AjpNioProtocol</code>. Wrong object

+        was used as a key in the connections map. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.35 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.35_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54240">54240</a>: Add support for auto-detection and configuration of

+        JARs on the classpath that provide tag plug-in implementations. Based on

+        a patch by Sheldon Shao. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54241">54241</a>: Revert the fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=35410">35410</a> as it was not

+        compliant with the JSP specification, specifically that

+        <code>&lt;%= obj %&gt;</code> must be translated to

+        <code>out.print(obj)</code> which in turn becomes

+        <code>out.write(String.valueOf(obj))</code>. This will trigger a

+        <code>NullPointerException</code> if <code>obj.toString()</code> returns

+        <code>null</code>. The fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=35410">35410</a> incorrectly suppressed

+        the <code>NullPointerException</code> in this case. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54242">54242</a>: Correct handle null iterations with in the JSTL

+        ForEach tag plug-in implementation. Patch provided by Sheldon Shao.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54260">54260</a>: Avoid <code>NullPointerException</code> when using

+        JSP unloading and tag files. (markt)  

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54370">54370</a>: Improve handling of nulls when trying to match sets of

+        parameters to a method in EL. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54338">54338</a>: Correctly coerce the value to the expected type when

+        using the tag plug-in for the JSTL set tag. Patch provided by Sheldon

+        Shao. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.35 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.35_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54244">54244</a>: Clarify the documentation for the BIO and NIO SSL

+        configuration attributes <code>sslEnabledProtocols</code> and

+        <code>sslProtocol</code> within the documentation web application.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Integrate documentation of Tomcat 7 with Apache Comments System.

+        People can leave their comments when reading documentation online

+        at the <a href="http://tomcat.apache.org/">tomcat.apache.org</a>

+        site. (rjung)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.35 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.35_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54390">54390</a>: Use 'java_home' on Mac OS X to auto-detect JAVA_HOME.

+        (schultz)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.34 (markt)"><!--()--></a><a name="Tomcat_7.0.34_(markt)"><strong>Tomcat 7.0.34 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2012-12-12</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.34 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.34_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53871">53871</a>: Improve error message if annotation scanning fails

+        during web application start due to poor configuration or illegal

+        cyclic inheritance with the application's classes. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix unit test for AccessLogValve when using non-GMT time zone. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54170">54170</a>: Ensure correct registration of Filters and Servlets in

+        the JMX registry if the Filter or Servlet name includes a character that

+        must be quoted if used in an ObjectName value. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add new attribute <code>renameOnRotate</code> to the AccessLogValve.

+        (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54190">54190</a>: Correct unit tests for BASIC authentication so that

+        session timeout is correctly tested. Also refactor unit test to make it

+        easier to add additional tests. Patch by Brian Burch. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54220">54220</a>: Ensure the ErrorReportValve only generates an error

+        report if the error flag on the response has been set. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Simplify time zone handling in the access log valve and correctly handle

+        various edge cases for non-standard DST changes. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.34 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.34_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54198">54198</a>: Clarify that

+        <code>HttpServletResponse.sendError(int)</code> results in an HTML

+        response by default. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54207">54207</a>: Correct JNDI factory package name in Javadoc for

+        <code>org.apache.naming.java.javaURLContextFactory</code>. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.34 (markt)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.34_(markt)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Fix a handful of Eclipse warnings in the JDBC pool source code including

+        the warnings reported in <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53565">53565</a>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54150">54150</a>: Make sure that SlowQueryReportJmx mbean deregistered

+        during webapp shutdown. Reported by Alex Franken. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54194">54194</a>: Make sure that connection pool mbean is not registered

+        when jmxEnabled is false. Patch provided by tobias.gierke. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.34 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.34_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update to Eclipse JDT Compiler 4.2.1. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.33 (markt)"><!--()--></a><a name="Tomcat_7.0.33_(markt)"><strong>Tomcat 7.0.33 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2012-11-21</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.33 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.33_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53960">53960</a>, <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54115">54115</a>: Extensions to HttpClient test

+        helper class. Patches by Brian Burch. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53993">53993</a>: Avoid a possible NPE in the AccessLogValve when the

+        session ID is logged and a session is invalidated. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add support for LAST_ACCESS_AT_START system property to

+        PersistentManager. (kfujino)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Update MIME type mapping with additional / updated mime.types from the

+        Apache web server. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54007">54007</a>: Fix a memory leak that prevented deletion of a

+        context.xml file associated with a Context that had failed to deploy.

+        Also fix the problems uncovered with undeploying such a Context once the

+        leak had been fixed and the file could be deleted. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54044">54044</a>: Correct bug in timestamp cache used by logging

         (including the access log valve) that meant entries could be made with

         an earlier timestamp than the true timestamp. (markt) 

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54054">54054</a>: Do not share shell environment variables between

+        multiple instances of the CGI servlet. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54060">54060</a>: Use a simple parser rather than a regular expression

+        to parse HTTP Digest authentication headers so the header is correctly

+        parsed. The new approach is also faster and generates less garbage.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54068">54068</a>: Rewrite the web fragment ordering algorithm to resolve

+        multiple issues that resulted in incorrect ordering or failure to find

+        a correct, valid order. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        The HTTP header parser added to address <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52811">52811</a> has been

+        removed and replaced with the light-weight HTTP header parser created to

+        address <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54060">54060</a>. The new parser includes a work-around for a

+        bug in the Adobe Acrobat Reader 9.x plug-in for Microsoft Internet

+        Explorer that was identified when the old parser was introduced

+        (<a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53814">53814</a>).  

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54076">54076</a>: Add an alternative work-around for clients that use

+        SPNEGO authentication and expect the authenticated user to be cached

+        per connection (Tomcat only does this if an HTTP session is available).

+        (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54087">54087</a>: Correctly handle (ignore) invalid If-Modified-Since

+        header rather than throwing an exception. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54096">54096</a>: In web.xml, &lt;env-entry&gt; should accept any type

+        that has a constructor that takes a single String or char. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54127">54127</a>: Add support for sending a WebSocket Ping. Patch

+        provided by Sean Winterberger. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

         Fix CVE-2013-2067:

         In FormAuthenticator: If it is configured to change Session IDs,

         do the change before displaying the login form. (kkolinko)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54054">54054</a>: Do not share shell environment variables between

-        multiple instances of the CGI servlet. (markt)

+        Ensure <code>AsyncListener.timeout()</code> and

+        <code>AsyncListener.complete()</code> are called with the correct

+        thread context class loader. (fhanik)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54087">54087</a>: Correctly handle (ignore) invalid If-Modified-Since

-        header rather than throwing an exception. (markt/kkolinko)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54123">54123</a>: If an asynchronous request times out without any

+        <code>AsyncListener</code>s defined, a 500 error will be triggered.

+        (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54220">54220</a>: Ensure the ErrorReportValve only generates an error

-        report if the error flag on the response has been set. (markt)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54124">54124</a>: Correct provided value of request attribute

+        <code>javax.servlet.async.request_uri</code> and add missing request

+        attribute <code>javax.servlet.async.path_info</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add <code>denyStatus</code> initialization parameter to

+        <code>CsrfPreventionFilter</code>, allowing to customize the HTTP

+        status code used for denied requests. (kkolinko)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix memory leak of servlet instances when running with a

-        SecurityManager and either init() or destroy() methods fail

-        or the servlet is a SingleThreadModel one, and of filter instances

-        if their destroy() method fails with an Error. (kkolinko)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54141">54141</a>: Increase the permitted number of nested Realm levels

+        from 2 to 3 by default and make the limit configurable via a system

+        property. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54382">54382</a>: Fix NPE when SSI processing is enabled and an empty

-        SSI directive is present. (markt)

+        Revert occasional API change in <code>BaseDirContext</code> class that

+        was done in 7.0.32. Methods should not be <code>final</code>. (kkolinko)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54483">54483</a>: Correct one of the Spanish translations. Based on a

-        suggestion from adinamita. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54527">54527</a>: Synchronize conf/web.xml mime mapping with Tomcat 7.

+        Prevent failures in the AccessLogValve when running under a

+        SecurityManager and the first request received is an asynchronous one.

         (markt)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.37 (jfclere)/Coyote"><!--()--></a><a name="Tomcat_6.0.37_(jfclere)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.33 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.33_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54248">54248</a>: Ensure that byte order marks are swallowed when using

-        a Reader to read a request body with a BOM for those encodings that

-        require byte order marks. (markt)

+        Correct an issue that prevented WebSockets from being used over SSL when

+        using the HTTP NIO connector. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54324">54324</a>: Allow APR connector to disable TLS compression

-        if OpenSSL supports it. (schultz)

+       <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54022">54022</a>: Ensure the Comet END event is triggered on client

+       disconnect with APR/native on Windows Vista/2k8 or later. Patch provided

+       by Douglas Beachy. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54456">54456</a>: Ensure that if a client aborts a request when sending

-        a chunked request body that this is communicated correctly to the client

-        reading the request body. (markt)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update the native component of the APR/native connector to 1.1.27 and

-        make that version the recommended minimum version. (kkolinko)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54067">54067</a>: Ensure responses with 1xx response codes are correctly

+        marked as not containing an entity body. This caused an issue for some

+        WebSocket clients when an Transfer-Encoding header was sent with the

+        101 (HTTP upgrade) response. (markt)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.37 (jfclere)/Jasper"><!--()--></a><a name="Tomcat_6.0.37_(jfclere)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.33 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.33_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53867">53867</a>: Optimise the XML escaping provided by the PageContext

+        implementation. Based on a patch by Sheldon Shao. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53896">53896</a>: Use an optimised CompositeELResolver for Jasper that

+        skips resolvers that are known to be unable to resolve the value. Patch

+        by Jarek Gawor. (markt)

+      </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54615">54615</a>:  Tomcat 6 doesn't build against ecj 4.x (kkolinko)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53986">53986</a>: Correct a regression introduced by the fix for

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53713">53713</a>. JSP comments that ended with the sequence ---%&gt; (or

+        any similar sequence with a odd number of - characters) was not

+        correctly parsed. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54011">54011</a>: Fix a bug in the tag plug-in for

+        <code>&lt;c:out&gt;</code> that triggered a JSP compilation error if the

+        <code>escapeXml</code> attribute was used. Patch provided by Sheldon

+        Shao. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Follow up to <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54011">54011</a>. Simplify generated code for

+        <code>&lt;c:out&gt;</code>. Based on a patch by Sheldon Shao. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54012">54012</a>: Fix a bug in the tag plug-in infrastructure that meant

+        the <code>&lt;c:set&gt;</code> triggered a JSP compilation error when

+        used in a tag file. Based on a patch provided by Sheldon Shao. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54017">54017</a>: Simplify coercion of <code>String</code> instances to

+        <code>Object</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54144">54144</a>: Fix a bug in the tag plug-in for

+        <code>&lt;c:out&gt;</code> that meant that if the value of the tag

+        evaluated to a <code>java.io.Reader</code> object then it was not

+        correctly handled. (markt)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.37 (jfclere)/Cluster"><!--()--></a><a name="Tomcat_6.0.37_(jfclere)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.33 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.33_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54045">54045</a>: Make sure getMembers() returns available member when

+        Add getSessionIdsFull operation to mbeans-descriptor. listSessionIdsFull

+        no longer exist. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54086">54086</a>: Fix threading issue when stopping an 

+        <code>NioReceiver</code>. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.33 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.33_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54143">54143</a>: Add display of the memory pools usage (including

+        PermGen) to the Status page of the Manager web application. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.33 (markt)/Tribes"><!--()--></a><a name="Tomcat_7.0.33_(markt)/Tribes"><strong>Tribes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=54045">54045</a>: Make sure getMembers() returns available member when

         TcpFailureDetector works in static cluster. (kfujino)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.37 (jfclere)/Web applications"><!--()--></a><a name="Tomcat_6.0.37_(jfclere)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.32 (markt)"><!--()--></a><a name="Tomcat_7.0.32_(markt)"><strong>Tomcat 7.0.32 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2012-10-09</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.32 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.32_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=22278">22278</a>: Add a commented out sample configuration of

-        <code>RemoteAddrValve</code> to <code>META-INF/context.xml</code>

-        files of the Manager and Host Manager applications. (kkolinko)

-      </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54080">54080</a>: Clarify documentation for initial value of

-        <code>internalProxies</code> attribute of <code>RemoteIpValve</code>.

-        (schultz/kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54198">54198</a>: Clarify that

-        <code>HttpServletResponse.sendError(int)</code> results in an HTML

-        response by default. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54207">54207</a>: Correct JNDI factory package name in Javadoc for

-        <code>org.apache.naming.java.javaURLContextFactory</code>. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.37 (jfclere)/Other"><!--()--></a><a name="Tomcat_6.0.37_(jfclere)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-       Add sample Apache Commons Daemon JSVC wrapper script bin/daemon.sh that

-       can be used with /etc/init.d. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        In the build configuration: introduce property "tomcat.output" that is

-        used to specify location of the build output directory. This simplifies

-        configuration if someone wants to move the <code>output</code> directory

-        elsewhere (e.g. out of the source tree). (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54390">54390</a>: Use 'java_home' on Mac OS X to auto-detect JAVA_HOME.

-        (schultz)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54601">54601</a>: Change catalina.sh to consistently use LOGGING_MANAGER

-          variable to configure logging, instead of modifying JAVA_OPTS one.

-          (kkolinko) 

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54890">54890</a>: Update to Apache Commons Daemon 1.0.15. (mturk)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.36 (jfclere)"><!--()--></a><a name="Tomcat_6.0.36_(jfclere)"><strong>Tomcat 6.0.36 (jfclere)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2012-10-19</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.36 (jfclere)/Catalina"><!--()--></a><a name="Tomcat_6.0.36_(jfclere)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48692">48692</a>: Provide option to parse

-        <code>application/x-www-form-urlencoded</code> PUT requests. (schultz)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50306">50306</a>: New StuckThreadDetectionValve to detect requests that

-        take a long time to process, which might indicate that their processing

-        threads are stuck. Based on a patch provided by TomLu. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50570">50570</a>: Enable FIPS mode to be set in AprLifecycleListener.

-        Based upon a patch from Chris Beckey. Note that this mode requires

-        tomcat-native 1.1.23 or later linked to a FIPS-capable OpenSSL library,

-        which one has to build by themselves. (schultz/kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Improve synchronization and error handling in AprLifecycleListener.

-        Do not allow to change SSL options if SSL has already been initialized.

-        (schultz/kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52225">52225</a>: Fix ClassCastException when adding an alias for an

-        existing host via JMX. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52293">52293</a>: Correctly handle the case when

-        <code>antiResourceLocking</code> is enabled at the Context level when

-        <code>unpackWARs</code> is disabled at the Host level. Correctly

-        handle multi-level contexts when <code>antiResourceLocking</code>

-        is enabled. Patch by Justin Miller. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Do not throw IllegalArgumentException from parseParameters() call

-        when chunked POST request is too large, but treat it like an IO error.

-        The <code>FailedRequestFilter</code> filter can be used to detect this

-        condition. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52384">52384</a>: Do not fail with parameter parsing when debug logging

-        is enabled. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Do not flag extra '&amp;' characters in parameters as parse errors.

-        (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52488">52488</a>: Correct typos: exipre -&gt; expire. Based on a patch by

-        prockter. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Reduce log level for the message about hitting

-        <code>maxParameterCount</code> limit from WARN to INFO.

-        Fix limit comparison to allow exactly <code>maxParameterCount</code>

-        parameters, as documentation says, instead of

-        <code>(maxParameterCount-1)</code>. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Slightly improve performance of UDecoder.convert(). Align

-        <code>%2f</code> handling between implementations. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Add <code>denyStatus</code> attribute to <code>RequestFilterValve</code>

-        (<code>RemoteAddrValve</code>, <code>RemoteHostValve</code> valves).

-        It allows to use different HTTP response code when rejecting denied

-        request. E.g. 404 instead of 403. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Add <code>SetCharacterEncodingFilter</code> (similar to the one

-        contained in the examples web application) to the

-        <code>org.apache.catalina.filters</code> package so that it is

-        available for all web applications. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52500">52500</a>: Added configurable mechanism to retrieve user names

-        from X509 client certificates. Based on a patch provided by

-        Michael Furman. (schultz/kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52719">52719</a>: Fix a theoretical resource leak in the JAR validation

-        that checks for non-permitted classes in web application JARs. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52830">52830</a>: Correct JNDI lookups when using

-        <code>javax.naming.Name</code> to identify the resource rather than a

-        <code>java.lang.String</code>. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52850">52850</a>: Extend memory leak prevention and detection code to

-        work with IBM as well as Oracle JVMs. Based on a patch provided by

-        Rohit Kelapure. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52996">52996</a>: In <code>StandardThreadExecutor</code>:

-        Add the ability to configure a job queue size

-        (<code>maxQueueSize</code> attribute).

-        Add a variant of execute method that allows to specify a timeout for

-        how long we want to try to add something to the queue.

-        Based on a patch by R&uuml;diger Pl&uuml;m. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53047">53047</a>: If a JDBCRealm or DataSourceRealm is configured for

-        an all roles mode that only requires authorization (and no roles) and no

-        role table or column is defined, don't populate the Principal's roles.

-        (markt/kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53050">53050</a>: Fix handling of entropy value when initializing

-        session id generator in session manager. Based on proposal by

-        Andras Rozsa. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53056">53056</a>: Add APR version number to tcnative version INFO log

-        message. (schultz)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53057">53057</a>: Add OpenSSL version number INFO log message when

-        initializing. (schultz)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53071">53071</a>: Use the message from the Throwable for the error

-        report generated by the <code>ErrorReportValve</code> if none was

-        specified via <code>sendError()</code>. Use the standard text for HTTP

-        error codes. (markt/rjung)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53230">53230</a>: Change session managers to throw

-        TooManyActiveSessionsException instead of IllegalStateException

-        when the maximum number of sessions has been exceeded and a new

-        session will not be created. (schultz/kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53267">53267</a>: Ensure that using the GC Daemon Protection feature of

-        the <code>JreMemoryLeakPreventionListener</code> does not trigger a

-        full GC every hour. (markt/kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53531">53531</a>: Fix ExpandWar.expand to check the return value of

-        File.mkdir and File.mkdirs. (schultz)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Make the CSRF nonce cache in <code>CsrfPreventionFilter</code>

-        serializable so that it can be replicated across a cluster and/or

-        persisted across Tomcat restarts. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53584">53584</a>: Ignore path parameters when comparing URIs for FORM

-        authentication. This prevents users being prompted twice for passwords

-        when logging in when session IDs are being encoded as path parameters.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        CVE-2012-3439:

-        Various improvements to the DIGEST authenticator including

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52954">52954</a>, the disabling caching of an authenticated user in the

-        session by default, tracking server rather than client nonces and better

-        handling of stale nonce values. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        CVE-2012-3546: Fix bypass of security constraint checks with FORM

-        authentication. Remove unneeded processing in <code>RealmBase</code>.

-        (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53800">53800</a>: <code>FileDirContext.list()</code> did not provide

-        correct paths for subdirectories. Patch provided by Kevin Wooten.

-        (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53830">53830</a>: Better handling of <code>Manager.randomFile</code>

-        default value on Windows. (kkolinko)

+        Revert multiple operation support for the <code>JMXProxyServlet</code>

+        pending further discussion. (schultz)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

         CVE-2012-4431: Fix bypass of <code>CsrfPreventionFilter</code> when

@@ -789,39 +7258,798 @@
       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.36 (jfclere)/Coyote"><!--()--></a><a name="Tomcat_6.0.36_(jfclere)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.32 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.32_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42181">42181</a>: Better handling of edge conditions in chunk header

-        processing. (kkolinko)

+        Correct the couple of broken links in the Tomcat Javadoc. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.32 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.32_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update optional Checkstyle library to 5.6. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.31 (markt)"><!--()--></a><a name="Tomcat_7.0.31_(markt)"><strong>Tomcat 7.0.31 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.31 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.31_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Add one library from JDK 7 to the value of <code>jarsToSkip</code>

+        property in the <code>catalina.properties</code> file. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52777">52777</a>: Add an option to automatically remove old, unused

+        versions (ones where there are no longer any active sessions) of

+        applications deployed using parallel deployment. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53828">53828</a>: Use correct status code when closing a WebSocket

+        connection normally in response to a close frame from a client. (markt)

       </td></tr>

       <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51477">51477</a>: Support all SSL protocol combinations in the APR/native

-        connector. This only works when using the native library version 1.1.21

-        or later. (rjung)

+        <code>JMXProxyServlet</code> now allows multiple operation commands like

+        <code>invokeAndSet</code>, <code>invokeAndGet</code>,

+        etc. (schultz) <em>Note</em>: reverted in 7.0.32.

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52055">52055</a> (comment 14): Correctly reset

-        <code>ChunkedInputFilter.needCRLFParse</code> flag when the filter

-        is recycled. (kkolinko)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53843">53843</a>: <code>request.isAsyncStarted()</code> must continue to

+        return true until the dispatch actually happens (which at the earliest

+        isn't until the thread where <code>startAsync()</code> was called

+        returns to the container). (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52606">52606</a>: Ensure replayed POST bodies are available when using

-        AJP. (markt)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53863">53863</a>: Ensure that the implicit servlets (JSP and default) are

+        marked as override-able when using embedded mode. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52858">52858</a>, CVE-2012-4534: Fix high CPU load with SSL, NIO and

-        sendfile when client breaks the connection before reading all the

-        requested data.

-        (fhanik/kkolinko)

+        When the <code>DefaultServlet</code> is under heavy load, the HTTP

+        header parser added to address <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52811">52811</a> generates large amounts

+        of garbage and uses significant CPU time. A cache has been added that

+        significantly reduces the overhead of this parser. (markt) 

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53119">53119</a>: Prevent buffer overflow errors being reported when a

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53854">53854</a>: Make directory listings work correctly when aliases

+        are used. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.31 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.31_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53713">53713</a>: Performance improvement of up to four times faster

+        parsing of JSP pages. Patch provided by Sheldon Shao. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.31 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.31_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Make the cluster members and the cluster deployer associated with the

+        cluster accessible via JMX. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix a behavior of TcpPingInterceptor#useThread. If set to false, ping

+        thread is never started. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.31 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.31_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Improve the documentation web application to clarify the difference

+        between the tag and version parameters when using text interface of the

+        Manager web application. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Make sessions saved in the <code>Store</code> associated with a

+        <code>Manager</code> that extends <code>PersistentManager</code>

+        optionally visible (via the showProxySessions Servlet initialisation

+        parameter in web.xml) to the Manager web application. (markt) 

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.30 (markt)"><!--()--></a><a name="Tomcat_7.0.30_(markt)"><strong>Tomcat 7.0.30 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2012-09-06</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.30 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.30_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Automatically delete temporary files used by Servlet 3.0 file

+        upload (for parts which size is greater than

+        <code>file-size-threshold</code> option in web.xml)

+        when request processing completes. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53071">53071</a>: This additional fix for this issue improves the

+        formatting of Jasper errors (or any exceptions that use a multi-line

+        message) with the <code>ErrorReportValve</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53469">53469</a>: If a URL passed to

+        <code>javax.servlet.http.HttpServletResponse.encodeURL()</code> cannot

+        be made absolute, never encode it and return it unchanged. Previously,

+        the fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53062">53062</a> meant than an

+        <code>IllegalArgumentException</code> was thrown. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53481">53481</a>: Added support for SSLHonorCipherOrder to allow

+        the server to impose its cipher order on the client. Based on a patch

+        provided by Marcel &#352;ebek. This feature requires

+        Tomcat Native 1.1.25 or later. (schultz)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53498">53498</a>: Fix atomicity bugs in use of concurrent collections.

+        Based on a patch by Yu Lin. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct a regression in the previous fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53062">53062</a> that did

+        not always correctly normalize redirect URLs when the redirect URL

+        included a query string or fragment component. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add missing getter and setter for <code>roleSearchAsUser</code> option

+        on JNDI Realm. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Add some HTTP status codes registered at IANA. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53531">53531</a>: Fix ExpandWar.expand to check the return value of

+        File.mkdir and File.mkdirs. (schultz)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53535">53535</a>: Reduce memory footprint when performing class scanning

+        on Context start. Patch provided by Cedomir Igaly. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53541">53541</a>: Fix JAR scanning when WEB-INF/lib is provided via

+        VirtualDirContext. Patch provided by Philip Zuev. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53574">53574</a>: Ensure Servlets defined using jsp-file are available

+        when metadata-complete is true. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53584">53584</a>: Ignore path parameters when comparing URIs for FORM

+        authentication. This prevents users being prompted twice for passwords

+        when logging in when session IDs are being encoded as path parameters.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53623">53623</a>: When performing a asynchronous dispatch after series

+        of forwards, ensure that the request properties are correct for the

+        request at each stage. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53624">53624</a>: Ensure that

+        <code>HttpServletResponse.sendRedirect()</code> works when called after

+        a dispatch from an <code>AsyncContext</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53641">53641</a>: Correct name of HTTP header used in WebSocket

+        handshake for listing the preferred protocols. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Document the constants that were added to the

+        <code>RequestDispatcher</code> interface in Servlet 3.0. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure custom error pages are not truncated if the page that triggered

+        the error set a content length header. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53677">53677</a>: Ensure that a 500 response rather than no response is

+        returned if the HTTP headers exceed the size limit. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53702">53702</a>: When merging web.xml fragments, allow for

+        <code>&lt;jsp-property-group&gt;</code> elements having multiple

+        <code>&lt;url-pattern&gt;</code> elements. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Always make the resulting web.xml available even if metadata-complete is

+        true. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53714">53714</a>: Provide separate system properties to control which

+        JARs are excluded from which scans when using the JarScanner. This

+        allows JARs to be excluded from all scans or only from TLD scanning

+        and/or Servlet 3.0 pluggability scanning. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Add several JDK libraries to the value of <code>jarsToSkip</code>

+        property in the <code>catalina.properties</code> file. (markt, kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix typos etc. in the code that logs merged web.xml (as enabled by

+        <code>logEffectiveWebXml</code> option on Context). (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53758">53758</a>: When adding filters via

+        <code>FilterRegistration.Dynamic</code> the filters were added at the

+        wrong point because the <code>isMatchAfter </code> logic was inverted.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53783">53783</a>: Correctly handle JARs generated by tools that do not

+        create specific entries for directories. Patch provided by Violeta

+        Georgieva. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improvements to DIGEST authenticator including the disabling caching of

+        authenticated user in session by default, tracking server rather than

+        client nonces and better handling of stale nonce values. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve performance of DIGEST authenticator for concurrent requests.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        CVE-2012-3546: Fix bypass of security constraint checks with FORM

+        authentication. Remove unneeded processing in <code>RealmBase</code>.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53800">53800</a>: <code>FileDirContext.list()</code> did not provide

+        correct paths for subdirectories. Patch provided by Kevin Wooten.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53801">53801</a>: Overlapping URL patterns were sometimes merged

+        incorrectly in security constraints leading to incorrect 401 responses.

+        Note: it was possible for access to be denied when it should have been

+        granted but it was not possible for access to be granted when it should

+        have been denied. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.30 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.30_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Remove the <code>socket.soTrafficClass</code> from the BIO and NIO

+        HTTP and AJP connectors because any use of the option is either ignored

+        or in some cases (Java 7 with NIO) throws an Exception. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Prevent possible NPE when processing Comet requests during Connector

+        shutdown. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=42181">42181</a>: Better handling of edge conditions in chunk header

+        processing. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53697">53697</a>: Correct a regression in the fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51881">51881</a>

+        that mean that in some circumstances the <code>comet</code> flag was not

+        reset on <code>HttpAprProcessor</code> instances. This caused problems

+        when the Processor was re-used for a new connection that would trigger a

+        <code>NullPointerException</code> and could result in a JVM crash.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53725">53725</a>: Fix possible corruption of GZIP'd output.

+        (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Better parsing of line-terminators for requests using chunked encoding.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Further improvements to handling of Comet END events when the connector

+        is stopped. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.30 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.30_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53545">53545</a>: Ensure buffered data is cleared when using a

+        jsp:forward action inside a classic custom tag. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53654">53654</a>: Support <code>file://</code> URLs for JSP

+        dependencies. Patch provided by Viola Lu. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53792">53792</a>: Support <code>MethodExpression</code>s that include a

+        method invocation that is not at the end of the expression. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.30 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.30_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix an issue when running under Java 7 which throws exceptions when

+        trying to set an invalid option whereas Java 6 silently swallowed them.

+        The option using the problem was <code>soTrafficClass</code>.

+        Investigations showed that this option had no effect for Cluster Channel

+        Receivers so it was removed. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53513">53513</a>: Fix race condition between the processing of session

+        sync message and transfer complete message. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.30 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.30_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Update JSTL version information in the JNDI section of the documentation

+        web application. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53524">53524</a>: Correct a typo in the cluster how-to section of the

+        documentation web application. Also fix a handful of spelling errors.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53601">53601</a>: Clarify in documentation that building Apache Tomcat 7

+        from sources requires a Java 6 JDK. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53653">53653</a>: Allow for wrapped source code example in

+        config/context.html. Patch provided by Terence Bandoian. (schultz)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53793">53793</a>: Change links on the list of applications in the

+        Manager to point to '/appname/' instead of '/appname'. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.30 (markt)/Tribes"><!--()--></a><a name="Tomcat_7.0.30_(markt)/Tribes"><strong>Tribes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Avoid potential NPE identified by Find Bugs in

+        <code>org.apache.catalina.tribes.io.ReplicationStream</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53606">53606</a>: Fix potential NPE in <code>TcpPingInterceptor</code>.

+        Based on a patch by F. Arnoud. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53607">53607</a>: To avoid NPE, set TCP PING data to ChannelMessage.

+        Patch provided by F.Arnoud (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.30 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.30_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53701">53701</a>: Javadoc fixes. Patch provided by sebb. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Remove some unused code from Tomcat's package renamed, cut-down

+        copy of Commons BCEL used for annotation scanning. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53735">53735</a>: Add support for Java 7 byte code to Tomcat's

+        package renamed, cut-down copy of Commons BCEL used for annotation

+        scanning. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.29 (markt)"><!--()--></a><a name="Tomcat_7.0.29_(markt)"><strong>Tomcat 7.0.29 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2012-07-08</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.29 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.29_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add support for searching for roles in JNDI/LDAP

+        using another value than the actual DN or username specified.

+        Rather it will use a value from the users directory entry.

+        The new attribute introduced to the JNDIRealm is userRoleAttribute

+        (fhanik)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix checking of recommended tcnative library version when using the APR

+        connector. (rjung)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50306">50306</a>: Improve StuckThreadDetectionValve: add

+        stuckThreadNames property as a pair for the stuckThreadIds one,

+        add thread ids to the log messages. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52135">52135</a>: Add support for a default error page to be defined in

+        web.xml by defining an error page with just a nested location element.

+        It appears this feature was intended to be included in the Servlet 3.0

+        specification but was accidently left out. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53450">53450</a>: Correct regression in fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52999">52999</a> that

+        could easily trigger a deadlock when deploying a ROOT web application.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        As per section 1.6.2 of the Servlet 3.0 specification and clarification

+        from the Servlet Expert Group, the servlet specification version

+        declared in web.xml no longer controls if Tomcat scans for annotations.

+        Annotation scanning is now always performed - regardless of the version

+        declared in web.xml - unless metadata complete is set to true. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53619">53619</a>: As per clarification from the Servlet Expert Group,

+        JARs will always be scanned for ServletContainerInitializers regardless

+        of the setting of metadata complete. However, if an absolute ordering is

+        specified and a JAR is excluded from that ordering it will not be

+        scanned for ServletContainerInitializers nor will it be scanned for

+        matches to any HandleTypes annotations. (markt) 

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53465">53465</a>: Populate mapped-name property for resources defined in

+        web.xml. Based on a patch by Violeta Georgieva. (markt) 

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Make the request available when establishing a WebSocket connection.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53467">53467</a>: Correct a regression in the fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53257">53257</a>

+        that introduced problems for JSPs that used characters that must be

+        encoded if used in a URI. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.29 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.29_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53430">53430</a>: Avoid a JVM crash when a connector that requires the

+        APR/native library is explicitly specified and the library, or a recent 

+        enough  version of it, is not available. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.29 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.29_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53421">53421</a>: Provide a more helpful error message if a getter or

+        setter cannot be found for a bean property when using expression

+        language. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+       <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53460">53460</a>: Allow container to handle errors if the creation of the

+       PageContext fails rather than swallowing the error. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.29 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.29_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Update the WebSocket examples in the examples web application so that

+        they work with secure connections (wss) as well as non-secure (ws)

+        connections. (markt)  

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53456">53456</a>: Minor corrections and improvements to the HTTP

+        connector configuration reference. Patch provided by sebb. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53459">53459</a>: Correction and clarifications to the SSL Connector

+        configuration examples in the SSL how-to. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53464">53464</a>: Correct reference to sample init.d script for use with

+        jsvc in the documentation web application. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53473">53473</a>: Correct the allowed values for the SSI option

+        <code>isVirtualWebappRelative</code> which are <code>true</code> or

+        <code>false</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Document <code>roleNested</code> property of <code>JNDIRealm</code>

+        in Configuration Reference. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.29 (markt)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.29_(markt)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53445">53445</a> (<a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1354173">r1354173</a>):

+        Allow configurable name for SlowQueryReportJmx (fhanik)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53416">53416</a> (<a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1354641">r1354641</a>):

+        Multiple pools with the same name should register under JMX (fhanik)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.29 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.29_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix cleanup of temporary files in <code>TestNamingContext</code> test.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Remove a few files from the source distribution that are not required

+        since they are copied / generated during the build. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add manifest files to the set of files for which the line-ending is

+        changed to match the OS defaults in the source distributions. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Align Jk Ant tasks definitions between antlib.xml and catalina.tasks

+        files, introducing <code>jkupdate</code> as synonym for

+        <code>jkstatus</code>. The latter one is deprecated.

+        Simplify <code>bin/catalina-tasks.xml</code>, replacing

+        <code>taskdef</code> with <code>typedef</code> and adding Ant condition

+        implementations used with JMX to <code>jmxaccessor.tasks</code> file.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53454">53454</a>: Return correct content-length header for HEAD requests

+        when content length is greater than 2GB. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.28 (markt)"><!--()--></a><a name="Tomcat_7.0.28_(markt)"><strong>Tomcat 7.0.28 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2012-06-19</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.28 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.28_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52055">52055</a>: An additional fix to ensure that the

+        ChunkedInputFilter is correctly recycled. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52954">52954</a>: Make DIGEST authentication tolerant of clients (mainly

+        older Android implementations) that do not follow RFC 2617 exactly.

+        (markt) 

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52955">52955</a>: Implement custom thread factory for container

+        start-stop thread pool. It allows to use daemon threads and give

+        them more distinct names. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52999">52999</a>: Remove synchronization bottleneck from the firing of

+        <code>Container</code> events. (markt)  

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53008">53008</a>: Additional test cases for BASIC authentication and

+        RFC2617 compliance. Patch provided by Brian Burch. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53021">53021</a>: Correct WebSocket protocol version detection. (pero)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add new attributes of <code>allow</code> and <code>deny</code> to

+        UserConfig. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53024">53024</a>: Fix context reloading so requests received during the

+        reload are paused and processed when reloading completes rather than

+        receiving 404 responses. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Improve the handling of watched resources so that changes trigger a

+        reload rather than a stop followed by a start which allows requests

+        received to be paused and processed when reloading completes rather than

+        receiving 404 responses. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Remove potential bottleneck on creation of new WebSocket connections.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53047">53047</a>: If a JDBC Realm or DataSource Realm is configured for

+        an all roles mode that only requires authorization (and no roles) and no

+        role table or column is defined, don't populate the Principal's roles.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53056">53056</a>: Add APR version number to tcnative version INFO log

+        message. (schultz)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53057">53057</a>: Add OpenSSL version number INFO log message when

+        initializing. (schultz)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Save a bit of memory in annotations cache in

+        <code>DefaultInstanceManager</code> by trimming annotation lists

+        to their size. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correctly configure the parser used to process server.xml so that

+        external entities may be used to include the content of external files

+        into server.xml. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Make sure ContextMBean#findFilterDefs returns correct filter

+        definitions. (kfujino)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Ensure that <code>maxParameterCount</code> applies to multi-part

+        requests handled via the Servlet 3 file upload API. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53062">53062</a>: When constructing absolute URLs for redirects from

+        relative URLs ensure that the resulting URLs are normalized. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53067">53067</a>: Ensure the WebSocket Servlet continues to work when

+        requests are wrapped. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Enable host's xmlBase attribute in ContextConfig. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53071">53071</a>: Use the message from the throwable (if there is one)

+        when generating the report in the <code>ErrorReportValve</code> and no

+        message has been specified via <code>sendError()</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53074">53074</a>: Switch to an infinite socket timeout by default for

+        WebSocket connections. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53081">53081</a>: Do not always cache resources loaded by the web

+        application class loader since they may be very large which in turn

+        could trigger a memory leak. Calls to the web application class

+        loader's <code>getResourceAsStream()</code> method will now access

+        the resource directly rather than via the cache in most cases. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53090">53090</a>: Include superclasses when considering injection

+        targets. Patch provided by Borislav Kapukaranov. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53161">53161</a>: Provide a better error message if a

+        <code>ClassFormatException</code> occurs during annotation scanning and

+        do not prevent the web application from starting in this case. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53180">53180</a>: Improve check for setter method when processing

+        annotations. Patch provided by Violeta Georgieva. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53225">53225</a>: Fix an IllegalStateException due to the JAR file being

+        closed when accessing static resources in a JAR file when

+        <code>urlCacheProtection="false"</code> in the

+        <code>JreMemoryLeakPreventionListener</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53230">53230</a>: Changed ManagerBase to throw

+        TooManyActiveSessionsException instead of IllegalStateException

+        when the maximum number of sessions has been exceeded and a new

+        session will not be created. (schultz)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53257">53257</a>: Ensure that resources, including JSP files, that have

+        names that include characters with special meanings in URLs (such as

+        ampersand, semicolon, plus, hash and percent) are correctly handled.

+        This bug is partially a regression caused by the original fix for

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51584">51584</a> and partially an existing issue that had not previously

+        been identified. This fix reverts the original fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51584">51584</a>,

+        correctly fixes that issue and fixes the additional issues identified by

+        the test cases that were also added as part of this fix.

+        (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53266">53266</a>: If a class specified in a <code>@HandlesTypes</code>

+        annotation on a <code>ServletContainerInitializer</code> is missing

+        log a more helpful message and do not prevent the web application from

+        starting. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53267">53267</a>: Ensure that using the GC Daemon Protection feature of

+        the <code>JreMemoryLeakPreventionListener</code> does not trigger a

+        full GC every hour. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53285">53285</a>: Do not require <code>security-role-ref</code> elements

+        to contain a <code>role-link</code> element. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53301">53301</a>: Prevent double initialization of pre-created Servlet

+        instances when used in embedded mode. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53322">53322</a>: When processing resource injection, correctly infer

+        property name from its setter method if the name starts with several

+        uppercase characters. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53333">53333</a>: When processing JNDI resources, take account of the

+        types of any specified injection targets to ensure that the resource

+        definition and the injection target types are consistent. Based on a

+        patch provided by Violeta Georgieva. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53337">53337</a>: Forwarding via a <code>RequestDispatcher</code> to an

+        asynchronous Servlet always failed. Includes a test case based on code

+        by Rossen Stoyanchev. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53339">53339</a>: Ensure WebSocket call backs (<code>onOpen</code> etc.)

+        are called using the web application's class loader. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53342">53342</a>: To avoid BindException, make startStopThreads into a

+        demon thread. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53353">53353</a>: Make the internal HTTP header parser more tolerant of

+        Content-Type values that contain invalid parameters by ignoring the

+        invalid parameters. It is a followup to bug <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52811">52811</a>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53354">53354</a>: Correctly handle <code>@WebFilter</code> annotations

+        that do not include a mapping. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53356">53356</a>: Add support for servlets mapped explicitly to the

+        context root of a web application. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53366">53366</a>: Ensure new HTTP header parser works correctly when

+        running Tomcat under a security manager. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53368">53368</a>: Configure the default security policy to allow web

+        applications to use WebSocket when running under a security manager.

+        (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53373">53373</a>: Allow whitespace around delimiters in &lt;Context&gt;

+        aliases for readability. (schultz)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.28 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.28_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52858">52858</a>, CVE-2012-4534: Correct fix for high CPU load.

+        (fhanik)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53138">53138</a>: Broken Sendfile on SSL introduced in 7.0.27

+        (fhanik)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52055">52055</a>: Additional fix required to ensure that

+        <code>InputFilter</code>s are recycled between requests. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53061">53061</a>: Fix a problem in the NIO connector whereby if the

+        poller was under low but consistent load (&gt;1 request/per second and

+        always less than 1 second between requests) timeouts never took place.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53063">53063</a>: When using an Executor with BIO, use the

+        executor's maxThreads as the default for maxConnections. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53119">53119</a>: Prevent buffer overflow errors being reported when a

         client disconnects before the response has been fully written from an

-        AJP connection using the APR/native connector. (kkolinko)

+        AJP connection using the APR/native connector. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53169">53169</a>: Allow developers to avoid chunked encoding for a

+        response of unknown length by setting the <code>Connection: close</code>

+        header. Based on a patch suggested by Philippe Marschall. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        CVE-2012-2733:

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53173">53173</a>: Properly count down maxConnections (fhanik)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update default value of pollerThreadCount for the NIO connector.

+        The new default value will never go above 2 regardless of 

+        available processors. (fhanik)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Allow to retrieve the current <code>connectionCount</code>

+        via getter from the endpoint and as JMX attribute of the ThreadPool

+        mbean. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct an edge case where Comet END events were not send to connected

+        clients when the Tomcat connector was stopped. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53406">53406</a>: Fix possible stack overflow on connection close when

+        using Comet. (fhanik)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

         Improve <code>InternalNioInputBuffer.parseHeaders()</code>. (kkolinko)

       </td></tr>

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

@@ -830,172 +8058,619 @@
         <a href="http://httpd.apache.org/">Apache HTTPD</a>.

         Default value is 100. (kkolinko)

       </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        In JkCoyoteHandler connector for AJP/1.3 protocol

-        (in <code>JkMain.setProperty()</code>):

-        Fix setting of properties when connector has already started for

-        properties that have aliases. E.g. it now allows to change

-        <code>maxHeaderCount</code> attribute on Connector MBean via JMX.

-        (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53725">53725</a>: Fix possible corruption of GZIP'd output. (kkolinko)

-      </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.36 (jfclere)/Jasper"><!--()--></a><a name="Tomcat_6.0.36_(jfclere)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.28 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.28_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48097">48097</a> (comment 7), <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53366">53366</a> (comment 1):

-        If JSP page unexpectedly fails to initialize PageContext instance,

-        write exception to the logs instead of silent swallowing. (kkolinko)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=48097#c7">48097#c7</a>, <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53366#c1">53366#c1</a>: If JSP page unexpectedly

+        fails to initialize PageContext instance, write exception to the logs

+        instead of silent swallowing. (kkolinko)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52335">52335</a>: Only handle <code>&lt;\%</code> and not

-        <code>\%</code> as escaped in template text. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52666">52666</a>: Correct coercion order in EL when processing the

-        equality and inequality operators. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53001">53001</a>: Revert the fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46915">46915</a> since the use case

-        described in the bug is invalid since it breaks the EL specification.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53032">53032</a>: Modify <code>JspC</code> so it extends

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53032">53032</a>: Modify <code>JspC</code> so it extends

         <code>org.apache.tools.ant.Task</code> enabling it to work with features

         such as namespaces within build.xml files. (markt)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.36 (jfclere)/Cluster"><!--()--></a><a name="Tomcat_6.0.36_(jfclere)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.28 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.28_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Replicate principal in ClusterSingleSignOn. (kfujino)

+        Avoid NPE when reload if a state of a BackupManager is FAILED. (kfujino)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53513">53513</a>: Fix race condition between the processing of session

-        sync message and transfer complete message. (kfujino)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53087">53087</a>: In order to avoid that a backup node expire a session,

+        replicate session access time in BackupManager. (kfujino)

       </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53606">53606</a>: Fix potential NPE in <code>TcpPingInterceptor</code>.

-        Based on a patch by F. Arnoud. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53607">53607</a>: To avoid NPE, set TCP PING data to ChannelMessage.

-        Patch provided by F.Arnoud (kfujino)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix a behavior of TcpPingInterceptor#useThread.

-        Do not start a ping thread when useThread is set to false. (kfujino)

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add support for SecureRandom to cluster manager template. (kfujino)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.36 (jfclere)/Web applications"><!--()--></a><a name="Tomcat_6.0.36_(jfclere)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.28 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.28_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52243">52243</a>: Improve windows service documentation to clarify how

-        to include <code>#</code> and/or <code>;</code> in the value of an

-        environment variable that is passed to the service. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52515">52515</a>: Make it clear in the Realm how-to in the documentation

-        web application that digested password storage when using DIGEST

-        authentication requires that MD5 digests are used. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52641">52641</a>: Remove mentioning of ldap.jar from docs.

-        Patch provided by Felix Schumacher. (rjung)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Remove obsolete bug warning from windows service

+        Remove obsolete bug warning from Windows service

         documentation page. (rjung)

       </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52983">52983</a>: Remove unnecessary code that makes switching to

-        other authentication methods difficult. (markt)

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50182">50182</a>: Various improvements to the Compression Filter. Patch

+        provided by David Becker. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53158">53158</a>: Fix documented defaults for DBCP.

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52853">52853</a>: Clarify how Jar Scanner handles directories. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53158">53158</a>: Fix documented defaults for DBCP.

         Patch provided by ph.dezanneau at gmail.com. (rjung)

       </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update JavaSE documentation links to point to the current

-        docs.oracle.com site, instead of obsolete ones (download.oracle.com,

-        java.sun.com). (kkolinko)

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53203">53203</a>: Correct documentation for the default value

+        of <code>connectionTimeout</code> attribute for AJP protocol

+        connectors. (kkolinko)

       </td></tr>

       <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53289">53289</a>: Clarify <code>ResourceLink</code> example that

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53289">53289</a>: Clarify <code>ResourceLink</code> example that

         uses DataSource.getConnection(username, password) method. Not all

         data source implementations support it. (kkolinko)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Prevent the custom error pages for the Manager and Host Manager

-        applications from being accessed directly. Configure custom

-        pages for error codes 401 and 403 in Host Manager application.

-        (markt/kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Correct documentation for <code>enableLookups</code> attribute

-        of a Connector. By default DNS lookups are disabled. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

         Fix several HTML markup errors in servlets of examples web application.

         (kkolinko)

       </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Change the index page of ROOT webapp to mention "manager-gui" role

-        instead of "manager" one. (kkolinko)

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53398">53398</a>: Correct spelling of "received" in the

+        Manager application's XML output. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53473">53473</a>: Correct the allowed values for the SSI option

-        <code>isVirtualWebappRelative</code> which are <code>true</code> or

-        <code>false</code>. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53664">53664</a>: Minor JNDI Howto document enhancement concerning mail

-        properties. Patch provided by Mark Eggers. (schultz)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53601">53601</a>: Clarify that to build Apache Tomcat 6 from sources

-        a Java 5 JDK is recommended. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53793">53793</a>: Change links on the list of applications in the

-        Manager to point to <code>/appname/</code> instead of

-        <code>/appname</code>. (kkolinko)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53403">53403</a>: Update a reference to the Servlet specification in the

+        first web application section of the documentation web application to

+        include newer versions of the specification. (markt)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.36 (jfclere)/Other"><!--()--></a><a name="Tomcat_6.0.36_(jfclere)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.28 (markt)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.28_(markt)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49402">49402</a>, <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52124">52124</a>: Fix Maven publishing script:

-        make sure it finds tomcat-juli.jar and use later version of

-        wagon-ssh. (jfclere)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50864">50864</a> (<a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1311844">r1311844</a>):

+        JMX enable most pool properties (fhanik)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53254">53254</a> (<a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1340160">r1340160</a>):

+        Add in the ability to purge connections from the pool (fhanik)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53367">53367</a> (<a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1346691">r1346691</a>):

+        Prevent pool from hanging during database failure (fhanik)

+      </td></tr>  

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+         When a connection is reconnected due to failed validation

+         make sure the ConnectionState is reset or it will assume

+         incorrect values (fhanik)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Update Apache Commons Daemon to 1.0.10. It resolves <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52548">52548</a>

-        which meant that services created with service.bat did not set the

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53374">53374</a> (<a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1348056">r1348056</a>):

+        Add support for the following properties in DataSourceFactory:

+        <code>commitOnReturn</code>, <code>rollbackOnReturn</code>,

+        <code>useDisposableConnectionFacade</code>,

+        <code>logValidationErrors</code> and

+        <code>propagateInterruptState</code>.

+        Based on patch proposed by Suresh Avadhanula. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.28 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.28_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update to Eclipse JDT Compiler 3.7.2 at maven tomcat-jasper.pom. (pero)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update the native component of the Tomcat APR/native connector to

+        1.1.24. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add missing dependencies in pom files. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53034">53034</a>: Add <code>project.url</code> and

+        <code>project.licenses</code> sections to the POMs for the Maven

+        artifacts. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Properly mention <code>jsp_2_2.xsd</code> in the main LICENSE and

+        INSTALLLICENSE files. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53115">53115</a>: Fix using the command "<code>catalina.bat run</code>"

+        when the value of <code>%TEMP%</code> contains spaces. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Add dependencies and description to "validate" target in

+        <code>build.xml</code>, so that it could be run separately.

+        Improve <code>BUILDING.txt</code> and <code>RUNNING.txt</code>.

+        (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.27 (markt)"><!--()--></a><a name="Tomcat_7.0.27_(markt)"><strong>Tomcat 7.0.27 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2012-04-05</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.27 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.27_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Explicitly ignore empty path values in <code>virtualClasspath</code>

+        attribute of <code>VirtualWebappLoader</code> class. Document that

+        whitespace around the values is trimmed. Reformat documentation

+        examples to make them more readable. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Further improve fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51197">51197</a> to allow an error reporting

+        Valve to write a response body if <code>sendError()</code> is called

+        during an asynchronous request on a container thread. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51741">51741</a> (<a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1307600">r1307600</a>):

+        If <code>VirtualDirContext</code> class is configured with non-empty

+        value of <code>extraResourcePaths</code> option (a feature added

+        in 7.0.24), do not implicitly set <code>allowLinking</code> option to

+        the value of <code>true</code>. If it is really needed, it should be

+        set explicitly. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52500">52500</a>: Added configurable mechanism to retrieve user names

+        from X509 client certificates. Based on a patch provided by

+        Michael Furman. (schultz)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52719">52719</a>: Fix a theoretical resource leak in the JAR validation

+        that checks for non-permitted classes in web application JARs. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Code clean-up identified by <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52723">52723</a>, <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52724">52724</a>,

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52726">52726</a>, <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52727">52727</a>, <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52729">52729</a>, <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52731">52731</a>

+        and <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52732">52732</a>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52792">52792</a>: Improve error message when a JNDI resource can not be

+        found. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52811">52811</a>: Fix parsing of Content-Type header in

+        <code>HttpServletResponse.setContentType()</code>. Introduces

+        a new HTTP header parser that follows RFC2616. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52830">52830</a>: Correct JNDI lookups when using

+        <code>javax.naming.Name</code> to identify the resource rather than a

+        <code>java.lang.String</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52833">52833</a>: Handle the case where the parent class loader for the

+        Catalina object does not have the system class loader in its hierarchy.

+        This may happen when embedding. Patch provided by olamy. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52839">52839</a>: Add a unit test for DigestAuthenticator and

+        SingleSignOn. Patch provide by Brian Burch. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52846">52846</a>: Make sure NonLoginAuthenticator registers not 

+        MemoryUser but GenericPrincipal into a session when UserDatabaseRealm 

+        is used. (kfujino)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52850">52850</a>: Extend memory leak prevention and detection code to

+        work with IBM as well as Oracle JVMs. Extend unit tests to check direct

+        and indirect ThreadLocal memory leak detection. Based on a patch

+        provided by Rohit Kelapure. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add support for the WebSocket protocol (RFC6455). Both streaming and

+        message based APIs are provided and the implementation currently fully

+        passes the Autobahn test suite. Also included are several examples.

+        A significant contribution to this new functionality was provided by

+        Johno Crawford &mdash; particularly the examples. Contributions were

+        also provided by Petr Praus, Jonathan Drake &amp; Sl&aacute;vka. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When stopping a Context, ensure that any Servlets registered with JMX

+        are unregistered. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Make the implementation of <code>Catalina.getParentClassLoader</code>

+        consistent with similar methods across the code base and have it return

+        the system class loader if no parent class loader is set. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52953">52953</a>: Ensure users can authenticate when using DIGEST

+        authentication with digested passwords if the digested password is

+        stored using upper case hexadecimal characters since DIGEST

+        authentication expects digests to use lower case characters. Based on a

+        patch provided by Neale Rudd. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52957">52957</a>: Ensure that a Valve implements Lifecycle before

+        calling any Lifecycle methods on that Valve. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52958">52958</a>: Fix MBean descriptors for

+        <code>org.apache.catalina.realm</code> package. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52974">52974</a>: Fix <code>NameNotFoundException</code> when

+        field/method is annotated with <code>@Resource</code> annotation. Patch

+        provided by Violet Agg. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add support for multi-thread deployment in UserConfig. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.27 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.27_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correctly register NIO sockets with poller after processing Comet events

+        to ensure that no read events are missed. This fixes an intermittent

+        issue observed in the unit tests. (fhanik/markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52770">52770</a>: Fix a bug in the highly unlikely circumstance that

+        an infinite timeout was specified for writing data to a client when

+        using NIO. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52858">52858</a>: Fix high CPU load with SSL, NIO and sendfile when

+        client breaks the connection before reading all the requested data.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52926">52926</a>: Avoid NPE when an NIO Comet connection times out on

+        one thread at the same time as it is closed on another thread. (markt)  

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Include port number when known in connector name when logging messages

+        from connectors that use automatic free port allocation. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Don't try an unlock the acceptor thread if it is not locked. This is

+        unlikely to impact normal usage but it does fix some unit test issues.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When using the APR connector ensure that any connections in a keep-alive

+        state are closed when the connector is stopped rather than when the

+        connector is destroyed. This is important when stop() followed by

+        start() is called on the connector. (markt) 

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.27 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.27_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52725">52725</a>: Use configurable package name for tags rather than

+        hard-coded value so configuration actually works. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52758">52758</a>: Implement additional interface methods in Eclipse JDT

+        integration required for Jasper to correctly with the latest Eclipse

+        development code. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52772">52772</a>: Ensure uriRoot is fully validated before it is used.

+        Patch based on a suggestion by Eugene Chung. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52776">52776</a>: Refactor the code so JspFragment.invoke cleans up

+        after itself. Patch provided by Karl von Randow. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52970">52970</a>: Take account of coercion rules when invoking methods

+        via EL. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52998">52998</a>: Partial fix. Remove static references to the EL

+        expression factory and use per web application references instead.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52998">52998</a>: Remainder of fix. Cache the class to use for the EL

+        expression factory per class loader. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=53001">53001</a>: Revert the fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=46915">46915</a> since the use case

+        described in the bug is invalid since it breaks the EL specification.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.27 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.27_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Replicate principal in ClusterSingleSignOn. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.27 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.27_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52760">52760</a>: Fix expires filter mime type in javascript examples.

+        (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52842">52842</a>: Exception in MBeanDumper when dumping MBean for

+        StandardThreadExecutor. (rjung)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Bring built-in mime types for embedded Tomcat more in line with the

+        ones defined in the default web.xml configuration file. (rjung)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add support to the JMXProxyServlet which is part of the Manager

+        application for fetching a specific key from a

+        <code>CompositeData</code> value. Updated documentation, so that

+        the entire 'get' command for the JMX proxy servlet is documented,

+        including the new optional 'key' parameter. (schultz/markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.27 (markt)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.27_(markt)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Pool cleaner thread should be created using the classloader

+        that loaded the pool, not the context loader (fhanik)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52804">52804</a>: Make pool properties serializable and cloneable.

+        (fhanik)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51237">51237</a> (<a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1302902">r1302902</a>):

+        Slow Query Report should log using WARN level when queries are slow

+        and within the threshold of caching it. (fhanik)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52002">52002</a> (<a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1302948">r1302948</a>):

+        Add in configuration option to disallow connection reuse. 

+        (<a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1305862">r1305862</a>):

+        useDisposableConnectionFacade is by default enabled (fhanik)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52493">52493</a> (<a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1302969">r1302969</a>):

+        Java 7 DataSource method addition. (fhanik)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51893">51893</a> (<a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1302990">r1302990</a>):

+        Throw an error and notification when pool is exhausted. (fhanik)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50860">50860</a> (<a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1303031">r1303031</a>):

+        Add in option to configure logging for validation errors. (fhanik)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52066">52066</a> (<a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1305931">r1305931</a>):

+        Add in configuration option, progagateInterruptState, to allow threads to 

+        retain the interrupt state. (fhanik)

+      </td></tr>  

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.27 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.27_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52750">52750</a>: Fix the way how daemon.sh parses command options so

+        that more then one can be provided. (mturk)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Rearrange <code>validate-eoln</code> target in <code>build.xml</code>

+        so that it could be run ahead of compilation. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update Apache Commons Daemon to 1.0.10. (mturk)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update the native component of the Tomcat APR/native connector to

+        1.1.23 and take advantage of the simplified distribution. (mturk)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update to Eclipse JDT Compiler 3.7.2. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.26 (markt)"><!--()--></a><a name="Tomcat_7.0.26_(markt)"><strong>Tomcat 7.0.26 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2012-02-21</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.26 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.26_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Provide constants for commonly used <code>Charset</code> objects and use

+        these constants where appropriate. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Refactor the fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52184">52184</a> to correct two issues (a missing

+        class and incorrect class/method names) when using the extras logging

+        packages. (markt)  

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52444">52444</a>: Only load classes during HandlesTypes processing if

+        the class is a match. Previously, every class in the web application was

+        loaded regardless of whether it was a match or not. (markt)  

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52488">52488</a>: Correct typo: exipre -&gt; expire. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add a unit test for SSO authentication. Patch provided by Brian Burch.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52511">52511</a>: Correct regression in the fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51741">51741</a>

+        that caused a harmless exception to be logged when scanning for

+        annotations and <code>WEB-INF/classes</code> did not exist. (markt) 

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Refactor to remove a circular dependency between

+        <code>org.apache.catalina</code> and <code>org.apache.naming</code>.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Remove some initialisation code from the standard start process (i.e.

+        via the scripts) that was intended for embedding but is not required

+        when performing a standard start.(markt) 

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add new method to <code>MBeanFactory</code> that allows any Valve to be

+        created and deprecate the methods to create specific Valves. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Partial sync of MIME type mapping with mime.types from the Apache web

+        server. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52577">52577</a>: Fix a regression in the fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52328">52328</a>.

+        Prevent output truncation when <code>reset()</code> is called on a

+        response. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52586">52586</a>: Remove an old and now unnecessary hack that modified

+        the path info reported via the

+        <code>javax.servlet.forward.path_info</code> request attribute when

+        forwarding to an error page. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52587">52587</a>: Ensure that if it is necessary to fall back to the

+        default NullRealm, the NullRealm instance is created early enough for it

+        to be correctly initialised. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix millisecond output in AccessLogValve when using a

+        SimpleDateFormat based time pattern. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52591">52591</a>: When dumping MBean data, skip attributes where getters

+        throw <code>UnsupportedOperationException</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52607">52607</a>: Ensure that the extension validator checks the JARs in

+        the shared and common class loaders for extensions. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct a threading issue in the generation of the list of standard

+        authenticators during Context initialization that could lead to a web

+        application failing to start if Contexts were started in parallel.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52669">52669</a>: Correct regression that broke annotation processing in

+        <code>/WEB-INF/classes</code> for web applications deployed as WARs,

+        packageless classes and some embedding scenarios. The regression was

+        introduced by the invalid assumptions made in the fix for

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51741">51741</a>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52671">52671</a>: When dumping MBean data, skip attributes where getters

+        throw <code>NullPointerException</code>. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.26 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.26_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51543">51543</a>: Provide a meaningful error message when writing more

+        response headers than permitted. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52547">52547</a>: Ensure that bytes written (which is used by the access

+        log) is correctly reset after an HTTP 1.0 request has been processed.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Minor refactoring to reduce code duplication in the HTTP connectors.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52606">52606</a>: Ensure that POST bodies are available for reply after

+        FORM authentication when using the AJP connectors. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.26 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.26_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52474">52474</a>: Ensure that leading and trailing white space is

+        removed from listener class names when parsing TLD files. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52480">52480</a>: When converting class path entries from URLs to

+        files/directories, ensure that any URL encoded characters are converted.

+        Fixes JSP compilation with javac when Tomcat is installed at a path that

+        includes spaces. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52666">52666</a>: Correct coercion order in EL when processing the

+        equality and inequality operators. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.26 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.26_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Improve <code>BUILDING.txt</code>. Update instructions for

+        building. Add instructions for using Checkstyle and running the

+        tests. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=38216">38216</a>: Improve handling of <code>null</code> return values in

+        the JMX proxy servlet which is part of the Manager application.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52515">52515</a>: Make it clear in the Realm how-to in the documentation

+        web application that digested password storage when using DIGEST

+        authentication requires that MD5 digests are used. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52634">52634</a>: Fix typos in JSP examples. Patch provided by

+        Felix Schumacher. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52641">52641</a>: Remove mentioning of ldap.jar from docs.

+        Patch provided by Felix Schumacher. (rjung)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.26 (markt)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.26_(markt)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix code style issues and enable Checkstyle checks for jdbc-pool when

+        it is built within Tomcat. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51582">51582</a> Correct set and reset the query cache to avoid NPE   (fhanik)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.26 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.26_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Update Commons Daemon to 1.0.9 to resolve <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52548">52548</a> which meant

+        that services created with service.bat did not set the

         <code>catalina.home</code> and <code>catalina.base</code> system

-        properties. (markt, kkolinko)

+        properties. (markt)

       </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update Apache Commons Pool to 1.5.7. (kkolinko)

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Implement check for correct end-of-line characters in the source

+        files. It is run as separate target in <code>build.xml</code>.

+        (kkolinko)

       </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52579">52579</a>: Add a note about Sun's Charset.decode() bug to the

-        RELEASE-NOTES file. (kkolinko)

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.25 (markt)"><!--()--></a><a name="Tomcat_7.0.25_(markt)"><strong>Tomcat 7.0.25 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2012-01-21</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.25 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.25_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Restore format of the first line of error message for JMX proxy

+        servlet in case scripts were depending on it. (markt)

       </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52805">52805</a>: Update to Eclipse JDT Compiler 3.7.2. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update the native component of the APR/native connectors to 1.1.23

-        and take advantage of the simplified distribution. (kkolinko) 

-      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.25 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.25_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

         When building a Windows installer do not copy whole "res" folder to

         output/dist, but only the files that we need. Apply fixcrlf filter

@@ -1007,112 +8682,390 @@
         by the Windows installer is <code>res/INSTALLLICENSE</code>.

         (kkolinko)

       </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Improve <code>RUNNING.txt</code>. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Align the script that deploys Maven jars for Tomcat

-        (<code>res/maven/mvn-pub.xml</code>) with the Tomcat 7 version,

-        making full use of Nexus. (markt)

-      </td></tr>

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53034">53034</a>: Add <code>project.url</code> and

-        <code>project.licenses</code> sections to the POMs for the Maven

-        artifacts. (kkolinko)

+        Automate the OpenPGP signature generation for the release process.

+        (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53454">53454</a>: Return correct content-length header for HEAD requests

-        when content length is greater than 2GB. (markt)

+        Don't exclude directories named target from the build process.

+        (rjung)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.35 (jfclere)"><!--()--></a><a name="Tomcat_6.0.35_(jfclere)"><strong>Tomcat 6.0.35 (jfclere)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2011-12-05</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.35 (jfclere)/Catalina"><!--()--></a><a name="Tomcat_6.0.35_(jfclere)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.24 (markt)"><!--()--></a><a name="Tomcat_7.0.24_(markt)"><strong>Tomcat 7.0.24 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.24 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.24_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix regression in decoding of parameters that contain spaces.

-        Patch by Willem Fibbe. (kkolinko)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.34 (jfclere)"><!--()--></a><a name="Tomcat_6.0.34_(jfclere)"><strong>Tomcat 6.0.34 (jfclere)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.34 (jfclere)/Catalina"><!--()--></a><a name="Tomcat_6.0.34_(jfclere)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51550">51550</a>: Display an error page rather than an empty response

-        for an IllegalStateException caused by too many active sessions. (markt)

-      </td></tr>

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51640">51640</a>: Improve the memory leak prevention for leaks

-        triggered by java.sql.DriverManager. (markt/kkolinko)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52184">52184</a>: Provide greater control over the logging of errors

+        triggered by invalid input data (i.e. data over which Tomcat has no

+        control). (markt/kkolinko) 

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51688">51688</a>: JreMemoryLeakPreventionListener now protects against

-        AWT thread creation. (schultz)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52225">52225</a>: Fix ClassCastException in an Alias added to

+        existing host through JMX. (kkolinko)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51758">51758</a>: The digester (used for processing XML files) used the

-        logger name <code>org.apache.commons.digester.Digester</code> rather

-        than the expected <code>org.apache.tomcat.util.digester.Digester</code>.

-        The digester has been changed to use the expected logger name.

+        Do not throw IllegalArgumentException from parseParameters() call

+        when chunked POST request is too large, but treat it like an IO error.

+        The <code>FailedRequestFilter</code> filter can be used to detect this

+        condition. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52245">52245</a>: Don't allow web applications to package classes from

+        the <code>javax.el</code> package. Patch provided by pid. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52259">52259</a>: Fix regression caused by the addition of the threaded

+        component start (<a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=46264">46264</a>) that triggered a deadlock on startup

+        if no Realm was configured. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52293">52293</a>: Correctly handle the case when

+        <code>antiResourceLocking</code> is enabled at the Context level when

+        <code>unpackWARs</code> is disabled at the Host level. Based on a patch

+        by Justin Miller. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        In <code>ExtendedAccessLogValve</code> when printing %-encoded value of

+        a parameter, use UTF-8 encoding to convert parameter value to bytes

+        instead of platform default encoding. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52303">52303</a>: Allow web applications that do not have a login

+        configuration to participate in a SSO session. Patch provided by Brian

+        Burch. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52316">52316</a>: When using sendfile, use the number of bytes requested

+        to be written to the response in the access log valve for bytes written

+        rather than recording a value of zero. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52326">52326</a>: Reduce log level for class loading errors during

+        <code>@HandlesTypes</code> processing to debug. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52328">52328</a>: Improve performance when large numbers of single

+        characters and/or small strings are written to the response via a

+        Writer. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52384">52384</a>: Do not fail with parameter parsing when debug logging

+        is enabled. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Do not flag extra '&amp;' characters in parameters as parse errors.

         (kkolinko)

       </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51862">51862</a>: Added a <code>classesToInitialize</code> attribute to 

-        <code>JreMemoryLeakPreventionListener</code> to allow pre-loading of configurable

-        classes to avoid some classloader leaks. (slaurent)

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Reduce log level for the message about hitting

+        <code>maxParameterCount</code> limit from WARN to INFO. (kkolinko)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51872">51872</a>: Ensure that the access log always uses the correct

-        value for the remote IP address associated with the request and that

-        requests with multiple errors do not result in multiple entries in

-        the access log. (markt)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52387">52387</a>: Ensure that the correct host is used when configuring

+        logging when Tomcat is embedded. Patch provided by David Calavera.

+        (markt)

       </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Allow to overwrite the check for distributability

-        of session attributes by session implementations. (rjung)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Provide the log format "OneLineFormatter" for JULI that provides the same

-        information as the default plus thread name but on a single line.

-        (markt/rjung)

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52405">52405</a>: Align the Servlet 3.0 implementation with the changes

+        defined in the first maintenance release (also know as Rev. A). See the

+        <a href="http://jcp.org/aboutJava/communityprocess/maintenance/jsr315/servlet3-mr-reva.html" rel="nofollow">JCP documentation</a> for a detailed list of changes

+        (markt) 

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Ensure the the memory leak protection for the HttpClient keep-alive

+        Improve JMX names for objects related to Connectors that have the

+        address attribute set. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Remove some stale attributes from MBeans. (rjung)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+         Move destruction of <code>ContainerBase</code> objects to

+         <code>ContainerBase</code> to ensure that they are destroyed. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52443">52443</a>: Change the behaviour of the default Realm in the

+        embedded use case so it is set once on the Engine rather than on every

+        Context thereby avoiding the Lifecycle issues with having the same Realm

+        set on multiple Contexts. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Provide a new Realm implementation, the NullRealm, that does not contain

+        any users and is used as the default Realm implementation (rather than

+        the JAAS Realm which was used prior to this change) if no Realm is

+        specified. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52461">52461</a>: Don't assume file based URLs when checking last

+        modified times for global and host level web.xml files. Patch provided

+        by violetagg. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add test cases for the BASIC and NonLogin Authenticators when not using

+        SSO. Patch provided by Brian Burch. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.24 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.24_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52028">52028</a>: Add support for automatic binding to a free port by a

+        connector if the special value of zero is used for the port. This is

+        mainly useful in embedded and testing scenarios. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Remove obsolete <code>emptySessionPath</code> JMX attribute. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct error in fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49683">49683</a>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that the process of unlocking the acceptor thread does not

+        trigger processing of the connection as if it were a valid request.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.24 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.24_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52450">52450</a>: Add setter for entityResolver in ParserUtils.

+        This is mainly useful when jasper and dtds are in different

+        class loaders. (mturk)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52321">52321</a>: Ensure that the order of multiple prelude/coda values

+        for JSP pages is respected. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52335">52335</a>: Only handle <code>&lt;\%</code> and not

+        <code>\%</code> as escaped in template text. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52440">52440</a>: Ensure that when using

+        <code>ValueExpression.getValueReference()</code> if the expression is an

+        EL variable that the value returned is the <code>ValueReference</code>

+        for the <code>ValueExpression</code> associated with the EL variable.

+        (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52445">52445</a>: Don't assume that EL method expressions have

+        exactly three components (identifier, method name, parameters). (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.24 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.24_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=38216">38216</a>: Add the ability to invoke MBean operations to the JMX

+        proxy servlet in the Manager application. Based on a patch by

+        Christopher Hlubek. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Further clarify the relation between values used by

+        <code>RemoteIpValve</code> and <code>RemoteIpFilter</code>

+        and their use by <code>AccessLogValve</code>. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52243">52243</a>: Improve windows service documentation to clarify how

+        to include <code>#</code> and/or <code>;</code> in the value of an

+        environment variable that is passed to the service. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52366">52366</a>: Fix typo in VirtualWebappLoader documentation

+        (configuration example). (rjung)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Replace Bugzilla search link on <code>ROOT/index.jsp</code> page with

+        one pointing to the bug reporting page of Tomcat site. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Move MBean dump code from JMXProxyServlet into a utility class. (rjung)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.24 (markt)/Tribes"><!--()--></a><a name="Tomcat_7.0.24_(markt)/Tribes"><strong>Tribes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52208">52208</a>: Fix threading issue that may lead to harmless NPE

+        during shutdown that has occasionally been observed when running the

+        unit tests. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52213">52213</a>, <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52354">52354</a>, <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52355">52355</a> and

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52356">52356</a>: Fix some potential concurrency issues in

+        <code>FastQueue</code>. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.24 (markt)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.24_(markt)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1207712">r1207712</a>: Pool cleaner should be a global thread, not spawn

+        one thread per connection pool. (fhanik)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.24 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.24_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update Apache Commons Daemon to 1.0.8. (mturk)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update Apache Commons Pool to 1.5.7. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix line ends in <code>.gitignore</code> files contained in source

+        distributions. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Run Mapper performance test twice if the first run took too long,

+        to ignore occasional failures. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Align <code>.gitignore</code> and <code>build.xml</code>

+        exclude patterns with <code>svn:ignore</code>. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Configure <code>defaultexcludes</code> for Ant 1.8.1/1.8.2.

+        The <code>.git</code> and <code>.gitignore</code> patterns are

+        in since Ant 1.8.2, but we include <code>.gitignore</code> in

+        src distributions. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52237">52237</a>: Allow JUnit logs to be generated in formats other than

+        plain text. Patch provided by M Hasko. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix build condition for tomcat-dbcp to always rebuild when a new version

+        of commons-pool or commons-dbcp is downloaded. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Add example of configuration for <code>SetCharacterEncodingFilter</code>

+        to the default <code>web.xml</code> file. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Switch unit tests to bind Connectors to localhost rather than all

+        available IP addresses. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update to Eclipse JDT Compiler 3.7.1. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Add Netbeans <code>nbproject</code> folder to <code>svn:ignore</code>

+        and <code>.gitignore</code>. (rjung)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Align <code>.gitignore</code> with trunk. (rjung)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.23 (markt)"><!--()--></a><a name="Tomcat_7.0.23_(markt)"><strong>Tomcat 7.0.23 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2011-11-25</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.23 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.23_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=46264">46264</a>: Add the ability to start and stop containers

+        (primarily Contexts) using a thread pool rather than a single thread.

+        This can significantly improve start and stop time. Based on patches

+        by Joe Kislo and Felix Schumacher. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50570">50570</a>: Enable FIPS mode to be set in AprLifecycleListener.

+        Based upon a patch from Chris Beckey. (schultz/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51744">51744</a>: Throw the correct exception if an application attempts

+        to modify the associated JNDI context. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51744">51744</a>: Add an option to the StandardContext that allows

+        exception throwing when an application attempts to modify the associated

+        JNDI context to be disabled. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51910">51910</a>: Prevent NPE on connector stop if Comet applications

+        are being used without the CometConnectionManagerValve. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51940">51940</a>: Do not limit saving of request bodies during FORM

+        authentication to POST requests since any HTTP method may include a

+        request body. Based on a patch by Nicholas Sushkin. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51956">51956</a>: RemoteAddrFilter used getRemoteHost instead of

+        getRemoteAddr when filtering Comet events. (schultz)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51952">51952</a>: Make the inclusion of a response body with a redirect

+        response introduced to address <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=41718">41718</a> optional and disabled by

+        default due to the side-effects of including a body with the response in

+        this case. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51972">51972</a>: Correctly handle protocol relative URLs when used with

+        <code>sendRedirect()</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Simplify the deployment code and use full paths in log messages to

+        remove any ambiguity in where a context is being deployed from. (markt)  

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52009">52009</a>: Fix a NPE during access log entry recording when an

+        error occurred during the processing of a Comet request. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        In <code>OneLineFormatter</code> log formatter in JULI always use

+        the US locale to format the date (esp. the month names). (rjung)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Cache the results of parsing the global and host level web.xml files to

+        improve web application start time. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52042">52042</a>: Correct threading issue in annotation caching that

+        could lead to an NPE if multiple threads were processing the same class

+        hierarchy for annotations. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct additional threading and premature clearance issues with the

+        annotation cache. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct a regression in the fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49779">49779</a> that

+        parameters POSTed by an unauthenticated user to a page that required

+        FORM authentication were lost during the authentication process.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52055">52055</a>: Ensure that the input and output buffers are correctly

+        reset between keep-alive requests when using Servlet 3.0 asynchronous

+        request processing. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure changes to the configuration of the RemoteHostValve and the

+        RemoteAddrValve via JMX are thread-safe. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that the memory leak protection for the HttpClient keep-alive

         always operates even if the thread has already stopped. (markt)

       </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51940">51940</a>: Do not limit saving of request bodies during FORM

-        authentication to POST requests since any HTTP method may include a

-        request body. Based on a patch by Nicholas Sushkin. (kkolinko)

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Remove the Java 1.2 specific error handling around the adding of the

+        shutdown hook. (markt) 

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52091">52091</a>: Address performance issues related to lock contention

-        in StandardWrapper. Based on patch provided by Taiki Sugawara.

-        (kkolinko)

+        Correct errors in i18n resources and resource usage that meant some

+        messages were either not used or were incorrectly formatted. (markt)

       </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        In GenericPrincipal, SerializablePrincipal: Do not sort lists of roles

-        that have only one element. (kkolinko)

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Replace the use of deprecated auth method names from

+        <code>authenticator.Constants</code> with the auth method names from

+        <code>HttpServletRequest</code>. (kkolinko)

       </td></tr>

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Make configuration issue for CsrfPreventionFilter result in the

-        failure of the filter rather than just a warning message. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Ensure changes to the configuration of RemoteAddrValve and

-        RemoteHostValve via JMX are thread-safe. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Make configuration issue for RemoteAddrValve and

-        RemoteHostValve result in the failure of the valve rather than

-        just a warning message. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        In <code>RequestFilterValve</code> (<code>RemoteAddrValve</code>,

-        <code>RemoteHostValve</code>): refactor value matching logic into

-        separate method and expose this new method <code>isAllowed</code>

-        through JMX. (kkolinko)

+        Make configuration issues for security related Valves and Filters result

+        in the failure of the valve or filter rather than just a warning

+        message. (markt)

       </td></tr>

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

         Improve performance of parameter processing for GET and POST requests.

@@ -1121,80 +9074,146 @@
         Note that <code>FailedRequestFilter</code> can be used to reject the

         request if some parameters were ignored. (markt/kkolinko)

       </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52091">52091</a>: Address performance issues related to lock contention

+        in StandardWrapper. Patch provided by Taiki Sugawara. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Switch to using Collections.enumeration() rather than custom code that

+        does the same thing. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52113">52113</a>: Don't assume presence of context.xml file with JMX

+        deployment. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        In <code>RequestFilterValve</code> (<code>RemoteAddrValve</code>,

+        <code>RemoteHostValve</code>): refactor value matching logic into

+        separate method and expose this new method <code>isAllowed</code>

+        through JMX. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52156">52156</a>: Ensure that

+        <code>getServletContext().getResource(path)</code> returns the correct

+        resource when path contains <code>/../</code> sequences or any other

+        sequences that require normalization. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Report existence of HTTP request parameter parsing errors via new

+        special ServletRequest attribute,

+        <code>org.apache.catalina.parameter_parse_failed</code>. (kkolinko)

+      </td></tr>

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

         New filter <code>FailedRequestFilter</code> that will reject a request

         if there were errors during HTTP parameter parsing. (kkolinko)

       </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.34 (jfclere)/Coyote"><!--()--></a><a name="Tomcat_6.0.34_(jfclere)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50394">50394</a>: Return -1 from read operation instead of throwing an

-        exception when encountering an EOF with the HTTP APR connector.

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Improve special attributes handling in Request object by using hash

+        table lookup instead of series of string comparisons. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Deprecate unused methods in <code>IntrospectionUtils</code> class.

         (kkolinko)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51698">51698</a>: Fix CVE-2011-3190. Prevent AJP message injection.

-        (markt)

+        Improve processing of errors that are wrapped in

+        <code>InvocationTargetException</code>. Rethrow fatal errors that must

+        be rethrown. (kkolinko)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Detect incomplete AJP messages and reject the associated request if one

-        is found. (markt)

+        Improve handling of failed web application deployments during automatic

+        deployment. Once deployment of a web application fails in one form (e.g.

+        WAR), no further attempt (e.g. directory) will be made to deploy that

+        web application. The base Lifecycle implementation has been improved to

+        allow failed web applications to be started once the configuration

+        issues have been resolved. Any changes to a context.xml file (global,

+        per host or web application specific) will now result in a redeploy

+        of the affected web application(s) that ensures that any changes are

+        correctly applied rather than a reload which ignores changes in

+        context.xml files. (markt/kkolinko) 

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51794">51794</a>: Fix race condition in NioEndpoint selector. Patch

-        provided by dlord. (fhanik)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52173">52173</a>: Improve Javadoc for <code>delegate</code> attribute

+        of WebappClassLoader. Based on a patch by bmargulies. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add <code>denyStatus</code> attribute to <code>RequestFilterValve</code>

+        (<code>RemoteAddrValve</code>, <code>RemoteHostValve</code> valves) and

+        <code>RequestFilter</code> (<code>RemoteAddrFilter</code>,

+        <code>RemoteHostFilter</code> filters). It allows to use different

+        HTTP response code when rejecting denied request. E.g. 404 instead

+        of 403. (kkolinko)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51905">51905</a>: Fix infinite loop in AprEndpoint shutdown if

+        Slightly improve performance of UDecoder.convert(). Align

+        <code>%2f</code> handling between implementations. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.23 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.23_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51881">51881</a>: Correctly complete Comet requests when the Comet END

+        event is triggered asynchronously. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51905">51905</a>: Fix infinite loop in AprEndpoint shutdown if

         acceptor unlock fails. Reduce timeout before forcefully closing

         the socket from 30s to 10s. (kkolinko)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52121">52121</a>: Fix possible output corruption when compression is

-        enabled for a connector and the response is flushed. Test

-        case provided by David Marcks. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Replace unneeded call that iterated events queue in NioEndpoint.Poller.

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51912">51912</a>: Fix HTTP header processing in NIO HTTP connector.

         (kkolinko)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

         Improve MimeHeaders.toString(). (kkolinko)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Allow the BIO HTTP connector to be used with SSL when running under Java

-        7. (markt) 

+        Fix threading issue in NIO connectors during shutdown that meant Comet

+        connections were not always shut down cleanly. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        In HTTP connectors: self-guard against using a non-recycled input

+        buffer. Requests will be rejected with response status 400. (kkolinko)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Improve multi-byte character handling in all connectors. (rjung)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52121">52121</a>: Fix possible output corruption when compression is

+        enabled for a connector and the response is flushed. Includes a test

+        case provided by David Marcks. (kkolinko/markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve multi-byte character handling in Coyote output for HTTP

+        and AJP. (rjung)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Refactor acceptor unlock code to reduce waiting time during connector

+        pause and stop. (markt)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.34 (jfclere)/Jasper"><!--()--></a><a name="Tomcat_6.0.34_(jfclere)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.23 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.23_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51220">51220</a>: Correct copy/paste error in original commit for this

-        issue. (markt)

+        Correct possible (but very small) memory leak when using maxLoadedJsps

+        to limit the number of JSPs loaded at any one time. (markt) 

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52091">52091</a>: Address performance issues related to log creation

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52051">52051</a>: Better handling of missing resource problems with

+        non-standard Servlet mappings so that a 404 response is returned to the

+        client rather than a 500 response. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52091">52091</a>: Address performance issues related to log creation

         in TagHandlerPool. Patch provided by Taiki Sugawara. (markt)

       </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Switch to using Collections.enumeration() rather than custom code that

+        does the same thing. (markt)

+      </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.34 (jfclere)/Cluster"><!--()--></a><a name="Tomcat_6.0.34_(jfclere)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.23 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.23_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51736">51736</a>: Make rpcTimeout configurable in BackupManager. 

-        (kfujino)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        New cluster manager attribute <code>sessionAttributeFilter</code>

-        allows to filter which session attributes are replicated using a

-        regular expression applied to the attribute name. (rjung)

-      </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

         Avoid an unnecessary session ID change notice. 

         Notice of changed session ID by JvmRouteBinderValve is unnecessary to 

@@ -1202,175 +9221,771 @@
         the call of a setId() method. (kfujino)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix unneeded duplicate <code>resetDeltaRequest()</code> call in

+        Fix duplicate <code>resetDeltaRequest()</code> call in

         <code>DeltaSession.setId(String)</code>. (kkolinko)

       </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Work around a <a href="http://bugs.sun.com/view_bug.do?bug_id=6427854" rel="nofollow">known JVM bug</a> that is fixed in 1.7.0_01 but still

+        present in 1.6.0_29 and was triggering intermittent unit test failure

+        for <code>org.apache.catalina.tribes.group.

+        TestGroupChannelMemberArrival.testMemberArrival</code>.

+        The bug affects any components that use NIO although it was more likely

+        to be observed in the clustering module than the HTTP or AJP NIO

+        connector. (markt) 

+      </td></tr>

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

         When Context manager does not exist, no context manager message is 

-        replied in order to avoid timeout (default 60 sec) of 

+        replied in order to avoid timeout (default 60sec) of 

         GET_ALL_SESSIONS sync phase. (kfujino)

       </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix setting maxInactiveInterval, sessionIdLength and

+        processExpiresFrequency for cluster managers. Use setter

+        when setting maxActiveSessions. (rjung)

+      </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.34 (jfclere)/Web applications"><!--()--></a><a name="Tomcat_6.0.34_(jfclere)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.23 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.23_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50923">50923</a>: Use distinct background color for <code>code</code>

+        tag in Tomcat documentation, for better readability. (kkolinko)

+      </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Correct the documentation for the connectionLinger attribute of the HTTP

-        connector. (markt)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51630">51630</a>: Fix bug in async0 example that triggered an

+        IllegalStateException in the application log. (markt)

       </td></tr>

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Show build date and version in the header on every documentation

-        page. (kkolinko)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52025">52025</a>: Add additional information regarding DriverManager,

+        the service provider mechanism and memory leaks. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52049">52049</a>: Improve setup instructions for running as a Windows

-        service: correct information on how a JRE is identified and selected.

-        (markt)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52049">52049</a>: Improve setup instructions for running as a Windows

+        service: remove references to specific Windows operating systems - it

+        easily becomes dated; correct information on how a JRE is identified and

+        selected. (markt)

       </td></tr>

       <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52172">52172</a>: Clarify Tomcat build instructions. Patch provided

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52172">52172</a>: Clarify Tomcat build instructions. Patch provided

         by bmargulies. (kkolinko)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.34 (jfclere)/Other"><!--()--></a><a name="Tomcat_6.0.34_(jfclere)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.23 (markt)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.23_(markt)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update the native component of the APR/native connectors to 1.1.22.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update the recommended version of the native component of the APR/native

-        connectors to 1.1.22. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update the Eclipse compiler (used for JSPs) to 3.7. (markt)

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52015">52015</a>: In jdbc-pool: JdbcInterceptor passes not 'this' but 

+        'proxy' to <code>getNext().invoke</code>. (kfujino)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Correct two typos in the Windows installer. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52059">52059</a>: In Windows uninstaller: Do not forget to remove

-        Tomcat keys from 32-bit registry on deinstallation. (kkolinko)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.33 (jfclere)"><!--()--></a><a name="Tomcat_6.0.33_(jfclere)"><strong>Tomcat 6.0.33 (jfclere)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2011-08-18</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.33 (jfclere)/Catalina"><!--()--></a><a name="Tomcat_6.0.33_(jfclere)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Allow to search the virtual paths before the webapp or after it. (rjung)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=27988">27988</a>: Improve reporting of missing files. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=28852">28852</a>: Add URL encoding where missing to parameters in URLs

-        presented by Ant tasks to the Manager application. Based on a patch by

-        Stephane Bailliez. (markt) 

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46252">46252</a>: Allow to specify character set to be used to write

-        the access log in AccessLogValve. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48863">48863</a>: Provide an warning if there is a problem with a class

-        path entry but use debug level logging if it is expected due to catalina

-        home/base split. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49180">49180</a>: Add an option to disable file rotation in JULI

-        FileHandler. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50189">50189</a>: Once the application has finished writing to the

-        response, prevent further reads from the request since this causes

-        various problems in the connectors which do not expect this. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50700">50700</a>: Ensure that the override attribute of context

-        parameters is correctly followed. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50734">50734</a>: Return 404 rather than 400 for requests to the ROOT

-        context when no ROOT context is deployed. Patch provided by Violeta

-        Georgieva. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50751">50751</a>: When authenticating with the JNDI Realm, only attempt

-        to read user attributes from the directory if attributes are required.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50752">50752</a>: Fix typo in debug message in

-        <code>org.apache.catalina.startup.Embedded</code>. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50855">50855</a>: Fix NPE on AuthenticatorBase.register() when debug

-        logging is enabled. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Correctly format the timestamp reported by version.[sh|bat]. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Remove unnecessary whitespace from MIME mapping entries in global

-        web.xml file. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51042">51042</a>: Don't trigger session creation listeners when a

-        session ID is changed as part of the authentication process. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51119">51119</a>: Add JAAS authentication support to the

-        JMXRemoteLifecycleListener. Patch provided by Neil Laurance. (markt) 

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Implement display of multiple request headers in AccessLogValve:

-        print not just the value of the first header, but of the all of them,

-        separated by commas. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Correct the SSLValve so it returns the SSL key size as an Integer rather

-        than as a String. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51162">51162</a>: Prevent possible NPE when removing a web application.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51249">51249</a>: Improve system property replacement code

-        in ClassLoaderLogManager of Tomcat JULI to cover some corner cases.

+        In jdbc-pool: Improve handling of Errors that originate from methods

+        invoked through reflection. In <code>TrapException</code> interceptor:

+        rethrow Error as is, without wrapping it in a RuntimeException.

         (kkolinko)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51315">51315</a>: Fix IAE when removing an authenticator valve from a

-        container. Patch provided by Violeta Georgieva. (markt)

+        In jdbc-pool: Unwrap InvocationTargetException if it is caught in

+        <code>ResultSetProxy</code>, like we do it elsewhere. (kkolinko)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51324">51324</a>: Improve handling of exceptions when flushing the

-        response buffer to ensure that the doFlush flag does not get stuck in

-        the enabled state. Patch provided by Jeremy Norris. (kkolinko)

+        When building jdbc-pool from within Tomcat, use Tomcat's

+        <code>output</code> directory location. This allows to move all build

+        output away from the source tree. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.23 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.23_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update the package re-named copy of Commons BCEL (formerly Jakarta BCEL)

+        to the latest code from Commons BCEL trunk. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Remove some unused code from the packaged renamed Commons BCEL. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51348">51348</a>: Fix possible NPE when processing WebDAV locks. (markt)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52059">52059</a>: In Windows uninstaller: Do not forget to remove

+        Tomcat keys from 32-bit registry on deinstallation. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Start the process of deprecating unused and unnecessary code that will

+        be removed in the next major release (8.0.x). (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Ignore <code>.git</code> directory when building the source

+        distributive. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Remove trailing whitespace from the default configuration files.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Improve <code>RUNNING.txt</code>. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update optional Checkstyle library to 5.5. (kkolinko)

       </td></tr>

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Add a container event that is fired when a session's ID is changed,

-        e.g. on authentication. (markt)

+        In test suite: add <code>LoggingBaseTest</code> class to allow

+        use of Tomcat logging configuration in tests that do not start Tomcat.

+        (kkolinko)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix CVE-2011-2204. Prevent user passwords appearing in log files if a

-        runtime exception (e.g. OOME) occurs while creating a new user for a

-        MemoryUserDatabase via JMX. (markt)

+        In test suite: speed up <code>TestGroupChannelSenderConnections</code>.

+        Remove 48 seconds worth of waits. (kkolinko)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51400">51400</a>: Avoid jvm bottleneck on String/byte[] conversion

-        triggered by a JVM bug. Based on patches by Dave Engberg and Konstantin

-        Prei&szlig;er. (markt)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=52148">52148</a>: Add tomcat-coyote.jar to catalina-tasks.xml as this

+        JAR is now required by the Ant tasks. Patch provided by Volker Krebs.

+        (markt)

       </td></tr>

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51403">51403</a>: Avoid NPE in JULI FileHandler if formatter is

-        misconfigured. (kkolinko)

+        Add sample Apache Commons Daemon JSVC wrapper script

+        <code>bin/daemon.sh</code> that can be used with <code>/etc/init.d</code>.

+        (mturk)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.22 (markt)"><!--()--></a><a name="Tomcat_7.0.22_(markt)"><strong>Tomcat 7.0.22 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2011-10-01</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.22 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.22_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51550">51550</a>: An additional change that ensures any exceptions

+        thrown by an Authenticator (or any other Valve configured for the

+        Context) will be handled by the custom error pages for the Context if an

+        appropriate error page is configured. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51580">51580</a>: Added a nicer error message when a WAR file contains

+        filenames not properly encoded in UTF-8. (schultz)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51687">51687</a>: Added (optional) protection against

+        sun.java2d.Disposer thread pinning a WebappClassLoader into memory

+        in the JreMemoryLeakPreventionListener. (schultz)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51741">51741</a>: Fixes a problem with Eclipse WTP "Serve modules

+        without publishing" feature where applications failed to access

+        resources when using getResource() on the classloader. (slaurent)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51744">51744</a>: Prevent application code from closing the associated

+        JNDI context while the application is running. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct a regression with the fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51653">51653</a> that broke custom

+        error pages for 4xx responses from the Authenticators. Error handling

+        and request listeners are now handled in the StandardHostValve to ensure

+        they wrap all Context level activity. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51758">51758</a>: The digester (used for processing XML files) used the

+        logger name <code>org.apache.commons.digester.Digester</code> rather

+        than the expected <code>org.apache.tomcat.util.digester.Digester</code>.

+        The digester has been changed to use the expected logger name.

+        (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51774">51774</a>: Fix incorrect cached method signature that prevented

+        session tracking modes from being defined in web.xml when running under

+        a security manager. (markt) 

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add an annotation cache to the <code>DefaultInstanceManager</code> that

+        improves performance for applications that make use of a lot of

+        non-poolable objects (e.g. tag files) that need to be scanned for

+        annotations when created. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Use the specification compliant request attribute of

+        <code>javax.servlet.request.ssl_session_id</code> to access the SSL

+        session ID and deprecated the Tomcat specific request attribute. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Allow to overwrite the check for distributability

+        of session attributes by session implementations. (rjung)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Add Java 7 sunec.jar and zipfs.jar to the list of JARs

+        to skip when scanning for TLDs and web fragments. (rjung)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51862">51862</a>: Added a <code>classesToInitialize</code> attribute to 

+        <code>JreMemoryLeakPreventionListener</code> to allow pre-loading of configurable

+        classes to avoid some classloader leaks. (slaurent)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Reduce visibility of static field <code>ManagerBase.name</code> and

+        make it final. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Add thread name to juli OneLineFormatter. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure Servlets that implement ContainerServlet always get treated as

+        restricted. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51872">51872</a>: Ensure that the access log always uses the correct

+        value for the remote IP address associated with the request and that

+        requests with multiple errors do not result in multiple entries in

+        the access log. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.22 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.22_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Remove unused and undocumented socketCloseDelay attribute from NIO

+        connector. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49683">49683</a>: Support separate connection and keep-alive timeouts

+        for the APR/native connector HTTP and AJP connectors. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Further re-factoring of the HTTP connectors to align the BIO, NIO and

+        APR implementations. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51794">51794</a>: Fix race condition in NioEndpoint. (fhanik)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51811">51811</a>: Correct SSL configuration property name from

+        sslImplemenationName to sslImplementationName. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix a timing issue in NIO connector that meant that stopping a connector

+        did not trigger a Comet END event if the associated processor was

+        processing a READ event when the connector was stopped. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Replace unneeded call that iterated events queue in NioEndpoint.Poller.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51860">51860</a>: Fix issues if using NIO with a custom

+        SSLImplementation. Based on a suggestion by Roman Tsirulnikov. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Allow the BIO HTTP connector to be used with SSL when running under Java

+        7. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Don't send AJP CPONG if endpoint is already paused. (rjung)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Align APR AJP connector with NIO one. Send 503 if endpoint is paused.

+        (rjung)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Accept AJP request even if endpoint is paused, if CPING was successful.

+        (rjung)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.22 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.22_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When unloading JSPs due to configuration of the

+        <code>maxLoadedJsps</code> initialisation parameter, the unloading code

+        was retaining a reference to the unloaded JSP preventing the

+        associated class from being unloaded until the JSP that replaced it was

+        itself unloaded. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51852">51852</a>: Correct two problems in the handling of varargs

+        methods with the BeanELResolver. The first meant the wrong method was

+        sometimes called and the second that an ArrayIndexOutOfBoundsExceptions

+        could be thrown. Patch (including a test case) provided by Matt Benson.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.22 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.22_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Refactor cluster manager configuration: move handling of common

+        attributes to base class. (kfujino, rjung)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        New cluster manager attribute <code>sessionAttributeFilter</code>

+        allows to filter which session attributes are replicated using a

+        regular expression applied to the attribute name. (rjung)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.22 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.22_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct the documentation for <code>connectionLinger</code> attribute

+        for the AJP and HTTP connectors. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Document caveat of using <code>RemoteAddrValve</code> with IPv6

+        addresses. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.22 (markt)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.22_(markt)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        In jdbc-pool: Avoid IllegalArgumentException when setting maxActive 

+        less than or equal to 0.

+        ArrayBlockingQueue doesn't allow capacity of 0 or less. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=48392">48392</a> (<a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1169796">r1169796</a>): Fix typo in

+        <code>StatementDecoratorInterceptor</code>. (fhanik) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51139">51139</a>:

+        In jdbc-pool: validatorClassName and suspectTimeout are ignored. 

+        In order to support them correctly, validatorClassName and 

+        suspectTimeout are added to a property list. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51786">51786</a>:

+        In jdbc-pool: Discarded connection is not active in a pool any longer. 

+        It removes from the active connection list. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51871">51871</a>: Fix dependency in Maven POM file of

+        tomcat-jbdc. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.22 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.22_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update the "test" target in the default build file to report a test

+        failure only after all available connector variants (bio, nio, apr)

+        have been tested. Do not stop after first connector that fails.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51887">51887</a>: When running the unit tests, use a fast but insecure

+        random number source for session ID generation to reduce the delays

+        caused by waiting for entropy. (kkolinko/markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Code clean-up to further reduce the number of warnings reported by

+        Eclipse, FindBugs and CheckStyle. (markt/kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>  

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.21 (markt)"><!--()--></a><a name="Tomcat_7.0.21_(markt)"><strong>Tomcat 7.0.21 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2011-09-01</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.21 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.21_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=41718">41718</a>: Include a response body when sending a redirect.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51640">51640</a>: Improve the memory leak prevention for leaks triggered

+        by java.sql.DriverManager. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51644">51644</a>: Fix annotation scanning for contexts with a

+        multi-level context path such as /a/b. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Unregisters MBean of DataSource when web application stops. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51650">51650</a>: Code clean-up. Patch provided by Felix Schumacher.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51653">51653</a>: Move application level error page handling from the

+        Host to the Context. This ensures that application error page handling

+        is completed before the requestDestroyed event of any

+        ServletRequestListener is fired. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51654">51654</a>: Improve handling of invalid appBase settings for Host

+        elements. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51658">51658</a>: Fix possible NPE when logging a failed request. Based

+        on a suggestion by Felix Schumacher. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51688">51688</a>: JreMemoryLeakPreventionListener now protects against

+        AWT thread creation. (schultz)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51712">51712</a>: Ensure cache control headers are sent when appropriate

+        even if the request is secure. Patch provided by Michael Zampani.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51713">51713</a>: Improve message that is logged if there is an error

+        in the value of <code>protocol</code> in a <code>Connector</code>.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51739">51739</a>: When using a landing page with FORM authentication

+        ensure that the request has a valid HTTP method. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.21 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.21_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51641">51641</a>: Use correct key when removing processor instances from

+        the connections map during clean-up. Patch provided by zhh. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        More changes to align the code between the different HTTP connectors.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure AjpMessage headers are correct for the direction of the message.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Code clean-up and re-factoring to reduce duplicate code in the AJP

+        processor implementations. (markt) 

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Detect incomplete AJP messages and reject the associated request if one

+        is found. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51698">51698</a>: Fix CVE-2011-3190. Prevent AJP message injection.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.21 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.21_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=41673">41673</a>: Use platform line-endings when reporting compilation

+        errors. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.21 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.21_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51736">51736</a>: Make rpcTimeout configurable in BackupManager. 

+        (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.21 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.21_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51649">51649</a>: Update the documentation web application to include

+        the ThreadLocal leak prevention listener. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.21 (markt)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.21_(markt)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51583">51583</a> (<a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1157874">r1157874</a>, <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1162102">r1162102</a>): Fix

+        shutdown delay in jdbc-pool. (fhanik/kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.21 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.21_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51558">51558</a>: Don't force the use of StandardManager when using

+        any of the <code>Tomcat#addWebapp()</code> methods. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51704">51704</a>: Make use of <code>File#mkdirs()</code> more robust.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>  

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.20 (markt)"><!--()--></a><a name="Tomcat_7.0.20_(markt)"><strong>Tomcat 7.0.20 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2011-08-11</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.20 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.20_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Corrected missing comma in the value of <code>jarsToSkip</code>

+        property in <code>conf/catalina.properties</code> file, which

+        caused tomcat-jdbc.jar and commons-beanutils*.jar to be not

+        ignored when scanning jars for tag libraries. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=41709">41709</a>: Provide exception messages where no message is

+        provided currently for IllegalStateExcpetions triggered by calling

+        HttpServletResponse methods when the response is committed. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51509">51509</a>: Fix potential concurrency issue in CSRF prevention

+        filter that may lead to some requests failing that should not. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51518">51518</a>: Correct error in web.xml parsing rules for the

+        &lt;others/&gt; tag when using absolute ordering. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Move the SetCharacterEncoding filter from the examples web application

+        to the <code>org.apache.catalina.filters</code> package so it is

+        available for all web applications. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51550">51550</a>: Internal errors in Tomcat components that process

+        requests before they are passed to a web application, such as

+        Authenticators, now return a 500 response rather than a 200 response.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51555">51555</a>: Allow destroy() to be called on Lifecycle components

+        that are in the initialized state. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add x-threadname pattern format token to ExtendedAccessLogValve to log

+        the current request thread name. Based on a patch from Felix Schumacher.

+        (timw)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51584">51584</a>: Ensure file paths are encoded/decoded when translated

+        to/from URLs when working with resources from a Context so special

+        characters don't cause issues. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51586">51586</a>: Expand error handling to cover anything that is

+        recoverable (or might be recoverable) when loading classes during

+        HandlesTypes processing. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51588">51588</a>: Make it easier to extend the AccessLogValve to add

+        support for custom elements. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that calls to StandardWrapper methods() that may trigger creation

+        of a Servlet instance always do so in way that correctly instantiates a

+        Servlet instance. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        In JDBCStore: Committing connection if autoCommit is false.

+        Make sure committed connection is returned to the pool if datasource is 

+        enabled. (kfujino)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Split <code>condition</code> attribute of AccessLogValve into two,

+        <code>conditionIf</code> and <code>conditionUnless</code>. Implement

+        conditional logging that logs only if a request attribute is present.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Allow to have several AccessLogValve instances in the same scope (e.g.

+        in the same Context). (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51610">51610</a>: If an unchecked exception occurs during a lifecycle

+        transition (e.g. web application start) ensure that the component is

+        put into the failed state. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51614">51614</a>: Avoid calling store.load() and  session.expire()

+        twice in PersistentManager when expiring sessions. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Prevent spurious log warnings on container stop if a child component has

+        previously failed. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add missing getter and setter for the alwaysUseSession attribute of the

+        authenticators. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.20 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.20_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49595">49595</a>: Prevent JVM crash with the AJP APR connector when

+        flushing a closed socket. (jfclere)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50394">50394</a>: Return -1 instead of throwing an exception when

+        encountering an EOF while processing an input stream with the HTTP APR

+        connector. (jfclere)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correctly handle a connectionTimeout value of -1 (no timeout) for the

+        HTTP NIO and AJP NIO connectors. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51503">51503</a>: Add additional validation that prevents a connector

+        from starting if it does not have a port &gt; 0. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51557">51557</a>: Ignore HTTP headers that do not comply with RFC 2616

+        and use header names that are not tokens. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Improve error handling for HTTP APR if an error occurs while using

+        sendfile. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that when using sendfile, HTTP APR sockets are not added to

+        multiple pollers. This may cause errors during shutdown. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Set <code>reuse</code> flag of final AJP <code>END_RESPONSE</code>

+        packet to <code>0</code> if we plan to close the connection. (rjung)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Correctly indicate if socket is closing when calling recycle for the AJP

+        NIO processor. Note since the flag is unused in this case there were no

+        bugs triggered by the re-factoring error. (rjung)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.20 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.20_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51532">51532</a>: JSP files with dependencies in JARs were recompiled on

+        every access leading to poor performance. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51544">51544</a>: Correctly resolve bean methods in EL so accessible

+        methods that are overridden by inaccessible methods do not cause an

+        IllegalAccessException. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.20 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.20_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=41498">41498</a>: Add the allRolesMode attribute to the Realm

+        configuration page in the documentation web application. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=48997">48997</a>: Fixed some typos and correct cross-referencing to the

+        HTTP Connector documentation with the SSL How-To page of the

+        documentation web application. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49122">49122</a>: Improvements and fixes for index page for ROOT web

+        application. Based on a patch provided by pidster. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51516">51516</a>: Correct documentation web application to show correct

+        system property name for changing the name of the SSO session cookie.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Configure the Manager and Host Manager web applications with the Set

+        Character Encoding Filter to make the default request character encoding

+        UTF-8 to improve i18n support. Note that best results will be obtained

+        if the connector is also configured with

+        <code>URIEncoding="UTF-8"</code>.(markt)  

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update the documentation web application to be even more explicit about

+        the implications of setting the path attribute on a Context element in

+        server.xml. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51561">51561</a>: Update the Realm page within the documentation web

+        application to recommend the use of digest.[bat|sh] to generate digests

+        rather than calling RealmBase directly. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51567">51567</a>: Update the class loading page of the documentation

+        web application to include information on the search order for the

+        common class loader when separate values are used for $CATALINA_HOME and

+        $CATALINA_BASE. (markt) 

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Improve class loading documentation and logging documentation.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add information to the security page of the documentation web

+        application for the ciphers attribute of the Connector element. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.20 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.20_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51503">51503</a>: Add additional validation to Windows installer that

+        ensure that the shutdown port, HTTP port and AJP port are all specified

+        during the install process. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51531">51531</a>: Update sample Eclipse classpath file to reflect

+        updated ECJ jar. Patch provided by Ian Brandt. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Convert Tomcat unit tests to JUnit 4. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update optional CheckStyle library to 5.4. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Remove <code>resolveHosts</code> attribute from AccessLogValve

+        configuration in the default <code>server.xml</code>. It was documented

+        in 7.0.19 that it has no effect. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Simplify mapping for <code>jsp</code> servlet in the default

+        <code>web.xml</code>. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correctly handle uninstall with the Windows installer if the service is

+        installed with a name that contains a '-' character. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51598">51598</a>: Prevent direct invocation of the Windows uninstaller

+        without a service name from executing since the uninstall will not be

+        complete. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Use Tomcat icon (cat) instead of Apache Commons Daemon (feather) one

+        in the list of uninstallable programs on Windows. (kkolinko) 

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update to Apache Commons Daemon 1.0.7. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51621">51621</a>: Add additional required JARs to the deployer

+        distribution. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix a small number of warnings reported by FindBugs. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update to version 1.1.22 of the native component for the AJP APR/native

+        and HTTP APR/native connectors. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.19 (markt)"><!--()--></a><a name="Tomcat_7.0.19_(markt)"><strong>Tomcat 7.0.19 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2011-07-19</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.19 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.19_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add option to activate access log for unit tests. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix regression in year number formatting for AccessLogValve. (rjung)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=46252">46252</a>: Allow to specify character set to be used to write

+        the access log in AccessLogValve. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51494">51494</a>: Prevent an NPE when a long running request completes

+        if the associated web application was destroyed while the request was

+        processing. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Allow choosing a locale for timestamp formatting in AccessLogValve.

+        (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When generating access logs for errors, log at the Context/Host level if

+        a Context or Host can be identified for the failed request. (markt)

       </td></tr>

       <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

         Create a directory for access log or error log (in AccessLogValve and

@@ -1380,64 +9995,42 @@
         attribute. (kkolinko)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Log a failure if access log file cannot be opened. Improve i18n

-        of messages. (kkolinko)

+        Log a failure if access log file cannot be opened. (kkolinko)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Improve handling of URLs with path parameters and prevent incorrect 404

-        responses that could occur when path parameters were present. (kkolinko)

+        Use en_US as locale for timestamps in ExtendedAccessLogValve.

+        (rjung)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51473">51473</a>: Fix concatenation of values in

-        <code>SecurityConfig.setSecurityProperty()</code>. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51509">51509</a>: Fix potential concurrency issue in CSRF prevention

-        filter that may lead to some requests failing that should not. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51588">51588</a>: Make it easier to extend the AccessLogValve to add

-        support for custom elements. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Unregister DataSource MBeans when web application stops. (kfujino)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        CVE-2011-1184: Add additional configuration options to the DIGEST

-        authenticator. (markt)

+        Use en_US as locale for creationdate in WebdavServlet. (rjung)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.33 (jfclere)/Coyote"><!--()--></a><a name="Tomcat_6.0.33_(jfclere)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.19 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.19_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Reduce level of log message for invalid URL parameters from WARNING to

-        INFO. (kkolinko) 

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51477">51477</a>: Support all SSL protocol combinations in the

+        APR/native connector. This only works when using the native library

+        version 1.1.21 or later, which is not yet released. (rjung)

       </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48208">48208</a>: Provide an option to specify a custom trust manager

-        for BIO and NIO HTTP connectors using SSL. Based on a patch by Luciana

-        Moreira. (markt)

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Various refactorings to reduce code duplication and unnecessary code in

+        the connectors. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49595">49595</a>: Protect against crashes when using the APR/native

-        connector. (jfclere)

+        Correct regression introduced in 7.0.17 that triggered 400 entries in

+        the AccessLog when using the AJP/BIO connector. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49929">49929</a>: Make sure flush packet is not send after END_RESPONSE

-        packet. (mturk/markt) 

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50887">50887</a>: Enable the provider to be configured when generating

-        SSL certs. Based on a patch by pknopp. (markt)

+        Fix regression producing invalid MBean names when using IPV6

+        addresses for connectors. (rjung)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51073">51073</a>: Throw an exception and do not start the APR connector

-        if it is configured for SSL and an invalid value is provided for

-        SSLProtocol. (markt)

+        Add missing thread name in RequestProcessor when Servlet 3 Async

+        is used. Fixes null thread name in access log and JMX MBean. (rjung)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix CVE 2011-2526. Protect against infinite loops (HTTP NIO) and crashes

+        Fix CVE-2011-2526. Protect against infinite loops (HTTP NIO) and crashes

         (HTTP APR) if sendfile is configured to send more data than is available

         in the file. (markt)

       </td></tr>

@@ -1445,214 +10038,1466 @@
         Prevent NPEs when a socket is closed in non-error conditions after

         sendfile processing when using the HTTP NIO connector. (markt) 

       </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51515">51515</a>: Prevent immediate socket close when comet is used over

-        HTTPS. (markt)

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.19 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.19_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Remove unnecessary server.xml parsing code for old cluster

+        implementation that does not ship as part of Tomcat 7. (markt)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.33 (jfclere)/Jasper"><!--()--></a><a name="Tomcat_6.0.33_(jfclere)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.19 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.19_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add additional information to the documentation web application on the

+        benefits and remaining risks when running under a security manager.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51490">51490</a>: Correct broken HTML in JSP tag plugin examples and

+        improve the &lt;c:if&gt; example to make failures more obvious. Based on

+        suggestions by Charles. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Document ExtendedAccessLogValve. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct default value of <code>enableLookups</code> for connectors

+        and mention, that <code>resolveHosts</code> for the AccessLogValve

+        is replaced by <code>enableLookups</code>. (rjung)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.19 (markt)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.19_(markt)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Include jdbc-pool into Tomcat release. (fhanik)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.19 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.19_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update to Apache Commons Daemon 1.0.6. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update to Eclipse JDT Compiler 3.7. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.18 (markt)"><!--()--></a><a name="Tomcat_7.0.18_(markt)"><strong>Tomcat 7.0.18 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.18 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.18_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=36362">36362</a>: Handle the case where tag file attributes (which can

+        Correct regression introduced in 7.0.17 that triggered an NPE if a

+        CrawlerSessionManagerValve was used without setting crawlerUserAgents.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51466">51466</a>: Correct comment typos in HostManagerServlet. Patch

+        provided by Felix Schumacher. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51467">51467</a>: Invoke Thread.start() rather than Thread.run() so that

+        listeners and filters are stopped in a separate thread rather than the

+        current thread. Patch provided by Felix Schumacher. (markt)  

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51473">51473</a>: Fix concatenation of values in

+        <code>SecurityConfig.setSecurityProperty()</code>. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix response.encodeURL() for the special case of an absolute URL

+        with no path segment (http://name). (rjung)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.18 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.18_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct regression caused by connector re-factoring that made AJP

+        APR/native connector very unstable on Windows platforms. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct regression caused by connector re-factoring that meant that

+        sendfile data was not reset between pipe-lined HTTP requests. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.18 (markt)/Tribes"><!--()--></a><a name="Tomcat_7.0.18_(markt)/Tribes"><strong>Tribes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Re-factor tests to align packages for tests with the classes under test.

+        Start to convert non-JUnit tests to JUnit. Remove unnecessary code.

+        (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add synchronization to receiver socket binding to prevent test failures

+        on Linux. (markt) 

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.18 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.18_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        More code clean-up to remove unused code and reduce IDE warnings.

+        (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Further improvements to the Windows installer. (markt/kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.17 (markt)"><!--()--></a><a name="Tomcat_7.0.17_(markt)"><strong>Tomcat 7.0.17 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.17 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.17_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=48956">48956</a>: Add regular expression support for SSI. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49165">49165</a>: Allow any time stamp formats supported by

+        SimpleDateFormat in AccessLogValve. Support logging begin and/or end of

+        request. (rjung)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50677">50677</a>: Allow system property variables to be used in the

+        values of "common.loader" and other "*.loader" properties in the

+        <code>catalina.properties</code> file. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51376">51376</a>: When adding a Servlet via

+        ServletContext#addServlet(String, Servlet), the Servlet was not

+        initialized when the web application started and a load on startup value

+        was set. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51386">51386</a>: Correct code for processing @HandlesTypes annotations

+        so only types of interest are reported to a ServletContainerInitializer.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Add the Tomcat extras, ant-junit and Java Help Jars to the list of JARs

+        to skip when scanning for TLDs and web fragments. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        The fix for bug <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51310">51310</a> caused a regression that re-introduced

+        bug <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49957">49957</a> and deleted the contents of the work directory

+        when Tomcat was shutdown. This fix ensures that that work directory for

+        an application is not deleted when Tomcat is shutdown. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct issues with JULI's OneLineFormatter including: correctly

+        re-using formatted timestamps when possible; thread-safety issues in

+        timestamp formatting; correcting the output of any milliseconds to

+        include leading zeros and formatting any parameters present.

+        (kkolinko/markt/rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51395">51395</a>: Fix memory leak triggered when an application that

+        includes a SAXParserFactory is the first web application to be loaded.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51396">51396</a>: Correctly handle jsp-file entries in web.xml when the

+        JSP servlet has been configured via code when embedding Tomcat. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51400">51400</a>: Avoid known bottleneck in JVM when converting between

+        Strings and bytes by always providing a Charset rather than an encoding

+        name. Based on a patch by Dave Engberg. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51401">51401</a>: Correctly initialise shared WebRuleSet instance used

+        by the digesters that parse web.xml and prevent incorrect warnings about

+        multiple occurrences of elements that are only allowed to appear once in

+        web.xml and web-fragment.xml. (kfujino)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51403">51403</a>: Avoid NPE in JULI FileHandler if formatter is

+        misconfigured. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Previous improvements in JAR scanning performance introduced a start-up

+        performance penalty for some use cases. This fix addresses those

+        performance penalties while retaining the original improvements. (markt) 

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51418">51418</a>: Provide more control over Context creation when

+        embedding Tomcat. Based on a patch by Benson Margulies. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Remove redundant copy of catalina.properties from o.a.c.startup.

+        Generate this copy for inclusion in bin and src jars during the

+        ant "compile" task. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Use system properties loaded from catalina.properties via the class

+        path in unit tests. (rjung)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Improve JMX unit test. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix IllegalStateException for JavaScript files when switching from

+        Writer to OutputStream. The special handling of this case in the

+        DefaultServlet was broken due to a MIME type change for JavaScript.

+        (funkman)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix CVE-2011-2204. Prevent user passwords appearing in log files if a

+        runtime exception (e.g. OOME) occurs while creating a new user for a

+        MemoryUserDatabase via JMX. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix an issue with the CrawlerSessionManagerValve that meant sessions

+        were not always correctly tracked. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51436">51436</a>: Send 100 (Continue) response earlier to enable

+        ServletRequestListener implementations to read the request body. Based

+        on a patch by Simon Olofsson. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure an access log entry is made if an error occurs during

+        asynchronous request processing and the socket is immediately closed.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that if asyncDispatch() is called during an onTimeout event and

+        the target Servlet does not call startAsync() or complete() that Tomcat

+        calls complete() once the target Servlet exits. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve the handling for Servlets that implement the deprecated

+        SingleThreadModel when embedding Tomcat. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51445">51445</a>: Correctly initialise all instances of Servlets that

+        implement SingleThreadModel. Based on a patch by Felix Schumacher.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51453">51453</a>: Fix a regression in the preemptive authentication

+        support (enhancement <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=12428">12428</a>) that could trigger authentication

+        even if preemptive authentication was disabled. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Prevent possible NPE when serving Servlets that implement the

+        SingleThreadModel interface. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        In launcher for embedded Tomcat: do not change <code>catalina.home</code>

+        system property if it had a value. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When using Servlets that implement the SingleThreadModel interface, add

+        the single instance created to the pool when it is determined that a

+        pool of servlets is required rather than throwing it away. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.17 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.17_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix unit test for bindOnInit which was failing for APR on some

+        platforms. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Remove superfluous quotes from thread names for connection pools.

+        (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix crash observed during pausing the connector when using APR.

+        Only add socket to poller if we are sure we don't close it later.

+        (rjung)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Various refactorings to reduce code duplication and unnecessary code in

+        the connectors. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct a regression introduced in Apache Tomcat 7.0.11 that broke

+        certificate revocation list handling. (markt) 

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.17 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.17_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Improve the message printed by TldLocationsCache and add configuration

+        example to the <code>logging.properties</code> file. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=33453">33453</a>: Recompile JSPs if last modified time of the source or

+        any of its dependencies changes either forwards or backwards. Note that

+        this introduces an incompatible change to the code generated for JSPs.

+        Tomcat will automatically re-compile any JSPs and tag files found in the

+        work directory when upgrading from 7.0.16 or earlier to 7.0.17 or later.

+        If you later downgrade from 7.0.17 or later to 7.0.16 or earlier, you

+        must empty the work directory as part of the downgrade process. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=36362">36362</a>: Handle the case where tag file attributes (which can

         use any valid XML name) have a name which is not a Java identifier.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47371">47371</a>: Correctly coerce the empty string to zero when used as

-        an operand in EL arithmetic. Patch provided by gbt. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50726">50726</a>: Ensure that the use of the genStringAsCharArray does

-        not result in String constants that are too long for valid Java code.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50895">50895</a>: Don't initialize classes created during the

-        compilation stage. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51124">51124</a>: Make Tomcat more robust if an OOME occurs. Usually

-        after an OOME all bets are off but this change appears to help some

-        users and the description of a 'recoverable' OOME in the bug

-        is a plausible one. Based on a patch by Ramiro. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51177">51177</a>: Ensure Tomcat's MapELResolver and ListELResolver

-        always return <code>Object.class</code> for <code>getType()</code> as

-        required by the EL specification. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Correct possible threading issue in JSP compilation when development

-        mode is used. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51220">51220</a>: Add a system property to enable tag pooling with JSPs

-        that use a custom base class. Based on a patch by Dan Mikusa. (markt)

+        (markt/kkolinko)

       </td></tr>

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

         Broaden the exception handling in the EL Parser so that more failures to

         parse an expression include the failed expression in the exception

         message. Hopefully, this will help track down the cause of

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51088">51088</a>. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Improve error reporting of Jasper compilation. (schultz)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51088">51088</a>. (markt)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.33 (jfclere)/Cluster"><!--()--></a><a name="Tomcat_6.0.33_(jfclere)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.17 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.17_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50646">50646</a>: Fix cluster message data corruption if message size

-        exceeds the underlying buffer size. Patch provided by Olivier Costet.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50771">50771</a>: Ensure HttpServletRequest#getAuthType() returns the 

-        name of the authentication scheme if request has already been 

-        authenticated. (kfujino)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50950">50950</a>: Correct possible NotSerializableException for an

-        authenticated session when running with a security manager. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51306">51306</a>: Avoid NPE when handleSESSION_EXPIRED is processed 

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51306">51306</a>: Avoid NPE when handleSESSION_EXPIRED is processed 

         while handleSESSION_CREATED is being processed. (kfujino)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Notifications of changes in session ID to other nodes in the cluster

+        should be controlled by notifySessionListenersOnReplication rather than

+        notifyListenersOnReplication. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

         The change in session ID is notified to the container event listener on 

-        the backup node in cluster. This notification is controlled by 

-        notifyContainerListenersOnReplication. (kfujino)

+        the backup node in cluster. 

+        This notification is controlled by 

+        notifyContainerListenersOnReplication.(kfujino)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.33 (jfclere)/Web applications"><!--()--></a><a name="Tomcat_6.0.33_(jfclere)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.17 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.17_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41498">41498</a>: Add the allRolesMode attribute to the Realm

-        configuration page in the documentation web application. (markt)

+        Update Maven repository information in the documentation to reflect

+        current usage. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=43538">43538</a>: Add host name and IP address to the HTML Manager

+        application. Patch by Dennis Lundberg. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48997">48997</a>: Fixed some typos and improve cross-referencing to the

-        HTTP Connector and APR documentation with the SSL How-To page of the

-        documentation web application. (markt)

+        Add <code>session="false"</code> directive to the index page of the

+        ROOT web application. (kkolinko)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50804">50804</a>: Update links for Servlet 2.5 and JSP 2.1 Javadoc.

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51443">51443</a>: Document the notifySessionListenersOnReplication

+        attribute for the DeltaManager. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51447">51447</a>: Viewing a back up session in the HTML Manager web

+        application no longer changes the session to a primary session. Based on

+        a patch provided by Eiji Takahashi. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.17 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.17_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=33262">33262</a>: Install monitor to auto-start for current user only

+        rather than all users to be consistent with menu item creation. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=40510">40510</a>: Provide an option to install shortcuts for the current

+        user or all users. Also ensure registry is correctly cleaned on

+        uninstall for 64-bit platforms. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50949">50949</a>: Provide the ability to specify the AJP port and

+        service name when installing Tomcat using the Windows installer. This

+        permits multiple instances of the same Tomcat version to be installed

+        side-by-side. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Clean up shell and batch scripts (improve consistency,

+        clarify comments, add <code>configtest</code> command support for

+        Windows). (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51206">51206</a>: Make CATALINA_BASE visible for setenv.sh. (rjung)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Remove unnecessary variable BASEDIR from scripts. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51425">51425</a>, <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51450">51450</a>: Update Spanish translations. Based

+        on patches provided by Jesus Marin. (markt) 

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.16 (markt)"><!--()--></a><a name="Tomcat_7.0.16_(markt)"><strong>Tomcat 7.0.16 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2011-06-17</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.16 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.16_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51249">51249</a>: Further improve system property replacement code

+        in ClassLoaderLogManager of Tomcat JULI to cover some corner cases.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51264">51264</a>: Improve the previous fix for this issue by returning

+        the connection to the pool when not in use so it does not appear to be

+        an abandoned connection. Patch provided by Felix Schumacher. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51324">51324</a>: Improve handling of exceptions when flushing the

+        response buffer to ensure that the doFlush flag does not get stuck in

+        the enabled state. Patch provided by Jeremy Norris. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct a regression in the fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51278">51278</a> that prevented any

+        web application from being marked as distributable. (kfujino/markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct a regression in the fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51278">51278</a> that prevented a

+        web application from overriding the default welcome files. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Enable remaining valves for Servlet 3 asynchronous processing support.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Avoid possible NPE when logging requests received during embedded Tomcat

+        shutdown. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51340">51340</a>: Fix thread-safety issue when parsing multiple web.xml

+        files in parallel. Apache Tomcat does not do this but products that

+        embed it may. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51344">51344</a>: Fix problem with Lifecycle re-factoring for deprecated

+        embedded class that prevented events being triggered. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51348">51348</a>: Prevent possible NPE when processing WebDAV locks.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.16 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.16_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When parsing the port in the HTTP host header, restrict the value to be

+        base 10 integer digits rather than hexadecimal ones.

+        (rjung/markt/kkolinko) 

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Various refactorings to reduce code duplication and unnecessary code in

+        the connectors. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.16 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.16_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Change JAR scanning log messages where no TLDs are found to DEBUG level

+        and replace the multiple messages with a single INFO level message that

+        indicates that at least one JAR was scanned needlessly and how to obtain

+        more info. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.16 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.16_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Enable Servlet 3 asynchronous processing support when using clustering.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.16 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.16_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct the log4j configuration settings when defining conversion

+        patterns in the documentation web application. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.15 (markt)"><!--()--></a><a name="Tomcat_7.0.15_(markt)"><strong>Tomcat 7.0.15 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.15 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.15_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=27122">27122</a>: Remove a workaround for a very old and since fixed

+        Mozilla bug and change the default value of the securePagesWithPragma

+        attribute of the Authenticator Valves to false. These changes should

+        reduce the likelihood of issues when downloading files with IE. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=35054">35054</a>: Check that a file is not specified for a Host's

+        appBase and log an error if it is. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51197">51197</a>: Fix possible dropped connection when sendError or

+        sendRedirect are used during async processing. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51221">51221</a>: Correct Spanish translation of text used in a 302

+        response. Patch provided by Paco Sober&oacute;n. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51249">51249</a>: Correct ClassLoaderLogManager system property

+        replacement code so properties of the form "}${...}" can be used

+        without error. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51264">51264</a>: Allow the JDBC persistent session store to use a

+        JNDI datasource to define the database in which sessions are persisted.

+        Patch provided by Felix Schumacher. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51274">51274</a>: Add missing i18n strings in PersistentManagerBase.

+        Patch provided by Eiji Takahashi. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51276">51276</a>: Provide an abstraction for accessing content in JARs

+        so the most efficient method can be selected depending on the type of

+        URL used to identify the JAR. This improves startup time when JARs are

+        located in $CATALINA_BASE/lib. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51277">51277</a>: Improve error message if an application is deployed

+        with an incomplete FORM authentication configuration. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51278">51278</a>: Allow ServletContainerInitializers to override

+        settings in the global default web.xml and the host web.xml. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51310">51310</a>: When stopping the Server object on shutdown call

+        destroy() after calling stop(). (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.15 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.15_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51145">51145</a>: Add an AJP-NIO connector. (markt/rjung)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.15 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.15_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51220">51220</a>: Add a system property to enable tag pooling with JSPs

+        that use a custom base class. Based on a patch by Dan Mikusa. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Include a comment header in generated java files that indicates when the

+        file was generated and which version of Tomcat generated it. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51240">51240</a>: Ensure that maxConnections limit is enforced when

+        multiple acceptor threads are configured. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.15 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.15_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51230">51230</a>: Add missing attributes to JMX for ReplicationValve and

+        JvmRouteBinderValve. Patch provided by Eiji Takahashi. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.15 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.15_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add documentation for AJP-NIO connector. (markt/rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51182">51182</a>: Document JAAS supported added in <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51119">51119</a>.

+        Patch provided by Neil Laurance. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51225">51225</a>: Fix broken documentation links for non-English locales

+        in the HTML Manager application. Patch provided by Eiji Takahashi.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51229">51229</a>: Fix bugs in the Servlet 3.0 asynchronous examples.

+        Patch provided by Eiji Takahashi. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51251">51251</a>: Add web application version support to the Ant tasks.

+        Based on a patch provided by Eiji Takahashi. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51294">51294</a>: Clarify behaviour of unpackWAR attribute of

+        StandardContext components. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.15 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.15_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=46451">46451</a>: Configure svn:bugtraq properties for Tomcat trunk.

+        Based on a patch provided by Marc Guillemot. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51309">51309</a>: Correct logic in catalina.sh stop when using a PID

+        file to ensure the correct message is shown. Patch provided by Caio

+        Cezar. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.14 (markt)"><!--()--></a><a name="Tomcat_7.0.14_(markt)"><strong>Tomcat 7.0.14 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2011-05-12</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.14 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.14_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Stylistic improvements to MIME type sync script.

+        Based on a patch provided by Felix Schumacher. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that the SSLValve provides the SSL key size as an Integer rather

+        than a String. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that the RemoteIpValve works correctly with Servlet 3.0

+        asynchronous requests. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Use safe equality test when determining event type in the

+        MapperListener. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Use correct class loader when loading Servlet classes in

+        StandardWrapper. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Provide additional configuration options for the RemoteIpValve and

+        RemoteIpFilter to allow greater control over the values returned by

+        ServletRequest#getServerPort() and ServletRequest#getLocalPort() when

+        Tomcat is behind a reverse proxy. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure session cookie paths end in <code>/</code> so that session

+        cookies created for a context with a path of <code>/foo</code> do not

+        get returned with requests mapped to a context with a path of

+        <code>/foobar</code>. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.14 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.14_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51177">51177</a>: Ensure Tomcat's MapElResolver always returns

+        <code>Object.class</code> for <code>getType()</code> as required by the

+        EL specification. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.13 (markt)"><!--()--></a><a name="Tomcat_7.0.13_(markt)"><strong>Tomcat 7.0.13 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.13 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.13_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct mix-up in Realm Javadoc. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix display of response headers in AccessLogValve. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Implement display of multiple request headers in AccessLogValve:

+        print not just the value of the first header, but of the all of them,

+        separated by commas. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50306">50306</a>: New StuckThreadDetectionValve to detect requests that

+        take a long time to process, which might indicate that their processing

+        threads are stuck. Based on a patch provided by TomLu. (slaurent)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51038">51038</a>: Ensure that asynchronous requests are included in

+        access logs. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51042">51042</a>: Don't trigger session creation listeners when a

+        session ID is changed as part of the authentication process. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51050">51050</a>: Add additional common but non-standard file extension

+        to MIME type mappings for MPEG 4 files. Based on a patch by C&eacute;drik Lime.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add some additional common JARs that do not contain TLDs or web

+        fragments to the list of JARs to skip when scanning for TLDs and web

+        fragments. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        While scanning JARs for TLDs and fragments, avoid using JarFile and use

+        JarInputStream as in most circumstances where JARs are scanned, JarFile

+        will create a temporary copy of the JAR rather than using the resource

+        directly. This change significantly improves startup performance for

+        applications with lots of JARs to be scanned. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure response is committed when <code>AsyncContext#complete()</code>

+        is called. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add a container event that is fired when a session's ID is changed,

+        e.g. on authentication. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51099">51099</a>: Correctly implement non-default login configurations

+        (configured via the loginConfigName attribute) for the SPNEGO

+        authenticator. (fhanik/markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51119">51119</a>: Add JAAS authentication support to the

+        JMXRemoteLifecycleListener. Patch provided by Neil Laurance. (markt) 

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51136">51136</a>: Provide methods that enable the name of a Context on

+        Context creation when using Tomcat in an embedded scenario. Based on a

+        patch provided by David Calavera. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51137">51137</a>: Add additional Microsoft Office MIME type mappings.

+        (rjung)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Partial sync of MIME type mapping with mime.types from the Apache web

+        server. About 600 MIME types added, some changed. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Make access logging more robust when logging requests that generate 400

+        responses since the request object is unlikely to be fully/correctly

+        populated in that case. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.13 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.13_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50957">50957</a>: Fix regression in HTTP BIO connector that triggered

+        errors when processing pipe-lined requests. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50158">50158</a>: Ensure the asynchronous requests never timeout if the

+        timeout is set to zero or less. Based on a patch provided by Chris.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51073">51073</a>: Throw an exception and do not start the APR connector

+        if it is configured for SSL and an invalid value is provided for

+        SSLProtocol. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Align all the connector implementations with the documented default

+        setting for processorCache of 200. This changes the default from -1

+        (unlimited) for the AJP-BIO, AJP-APR and HTTP-APR connectors. Additional

+        information was also added to the documentation on how to select an

+        appropriate value. 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Take account of time spent waiting for a processing thread when

+        calculating connection and keep-alive timeouts for the HTTP BIO

+        connector. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51095">51095</a>: Don't trigger a NullPointerException when the SSL

+        handshake fails with the HTTP-APR connector. Patch provided by Mike

+        Glazer. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve handling in AJP connectors of the case where too large a AJP

+        packet is received. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Restore the automatic disabling of HTTP keep-alive with the BIO

+        connector once 75% of the processing threads are in use and make the

+        threshold configurable. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Make pollerSize and maxConnections synonyms for the APR connectors since

+        they perform the same function. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Use maxThreads rather than 10000 as the default maxConnections for the

+        BIO connectors. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.13 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.13_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=47371">47371</a>: Correctly coerce the empty string to zero when used as

+        an operand in EL arithmetic. Patch provided by gbt. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Label JSP/tag file line and column numbers when reporting errors since

+        it may not be immediately obvious what the numbers represent. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct a regression in the fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49916">49916</a> that resulted in

+        JSPs being compiled twice rather than just once. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Log JARs that are scanned for TLDs where no TLD is found so that users

+        can easily identify JARs that can be added to the list of JARs to skip.

         (markt)

       </td></tr>

       <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Improve class loading documentation and logging documentation.

-        (kkolinko)

+        Use a single TLD location cache for a web application rather than one

+        per JSP compilation to speed up JSP compilation. (markt)

       </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51124">51124</a>: Refactor BodyContentImpl to assist in determining the

+        root cause of this bug. Based on a patch by Ramiro. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.13 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.13_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50950">50950</a>: Correct possible NotSerializableException for an

+        authenticated session when running with a security manager. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.13 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.13_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

         Configure Security Manager How-To to include a copy of the actual

         conf/catalina.policy file when the documentation is built, rather

         than maintaining a copy of its content. (kkolinko)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51147">51147</a>: Fix deployment via HTML Manager that was broken by

-        addition of CRSF protection. Patch provided by Alexis Hassler. (markt)

+        Fix broken stylesheet URL in XML based manager status output. (rjung)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51156">51156</a>: Ensure session expiration option is available in

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51156">51156</a>: Ensure session expiration option is available in

         Manager application was running web applications that were defined in

         server.xml. (markt)

       </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Correct the log4j configuration settings when defining conversion

-        patterns in the documentation web application. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Update Maven repository information in the documentation to reflect

-        current usage. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51346">51346</a>: Update the documentation web application to make clear

-        the circumstances in which the RequestDumperValve will consume the

-        request's InputStream. Based on a patch by pid. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51443">51443</a>: Document the notifySessionListenersOnReplication

-        attribute for the DeltaManager. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51516">51516</a>: Correct documentation web application to show correct

-        system property name for changing the name of the SSO session cookie.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update documentation to be even more explicit about the implications

-        of setting the <code>path</code> attribute on a <code>Context</code>

-        element in <code>server.xml</code>. (markt/kkolinko)

-      </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.33 (jfclere)/Other"><!--()--></a><a name="Tomcat_6.0.33_(jfclere)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.13 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.13_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

         Clarify error messages in *.sh files to mention that if a script is

         not found it might be because execute permission is needed. (kkolinko)

       </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=33262">33262</a>, <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=40510">40510</a>, <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50949">50949</a>, <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51135">51135</a>:

-        Various improvements to the Windows installer to be able to install

-        several copies of Tomcat 6 side by side. Allow to configure service

-        name, connector and shutdown ports. Allow to choose whether to install

-        Start menu shortcuts and Apache Tomcat monitor application for all

-        users or for the current one only. Improve auto-detection of JAVA_HOME

-        for 64-bit Windows platforms: autoselect 32-bit JRE if it exists and

-        64-bit one is not available. Improve server.xml file handling.

-        Fix uninstallation icon. (markt/kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50854">50854</a>: Add additional entries to the default catalina.policy

-        file to support running the manager web application from CATALINA_HOME

-        or CATALINA_BASE. (markt) 

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Update default download sources to use the central Apache Maven 2

-        repository as some libraries have been removed from the central Apache

-        Maven 1 repository. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51155">51155</a>: Add comments to @deprecated tags that have none. Patch

-        provided by sebb. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51309">51309</a>: Correct logic in catalina.sh stop when using a PID

-        file to ensure the correct message is shown. Patch provided by Caio

-        Cezar. (markt)

-      </td></tr>

       <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update Apache Commons Pool to 1.5.6. (kkolinko)

+        Update Apache Commons Pool to 1.5.6. (markt)

       </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update Apache Commons Daemon to 1.0.7. (kkolinko)

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51135">51135</a>: Fix auto-detection of JAVA_HOME for 64-bit Windows

+        platforms that only have a 32-bit JVM installed. (markt) 

       </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        At build time use two alternative download locations for components

-        downloaded from apache.org. (kkolinko)

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51154">51154</a>: Remove duplicate @deprecated tags in ServletContext

+        Javadoc. Patch provided by sebb. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=51155">51155</a>: Add comments to @deprecated tags that have none. Patch

+        provided by sebb. (markt)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.32 (jfclere)"><!--()--></a><a name="Tomcat_6.0.32_(jfclere)"><strong>Tomcat 6.0.32 (jfclere)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2011-02-03</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.32 (jfclere)/Catalina"><!--()--></a><a name="Tomcat_6.0.32_(jfclere)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.12 (markt)"><!--()--></a><a name="Tomcat_7.0.12_(markt)"><strong>Tomcat 7.0.12 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2011-04-06</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.12 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.12_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48822">48822</a>: Include context name in reload and stop log statements.

-        Based on the patch provided by Marc Guillemot. (kkolinko)

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Automatically correct invalid paths when specified for Context elements

+        inside server.xml and log a warning that the configuration has been

+        corrected. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50673">50673</a>: Improve Catalina shutdown when running as a service.

+        Don't unpack WAR files if they are not located in the Host's

+        appBase. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Don't log to standard out in SSLValve. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Handle the case where a web crawler provides an invalid session ID in

+        the CrawlerSessionManagerValve. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update pattern used in CrawlerSessionManagerValve to that used by the

+        ASF infrastructure team. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Remove unnecessary whitespace from MIME mapping entries in global

+        web.xml file. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When using parallel deployment, correctly handle the scenario when the

+        client sends multiple JSESSIONID cookies. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=12428">12428</a>: Add support (disabled by default) for preemptive

+        authentication. This can be configured per context. Based on a patch

+        suggested by Werner Donn. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Make the CSRF nonce cache serializable so that it can be replicated

+        across a cluster and/or persisted across Tomcat restarts. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Resolve some refactoring TODOs in the implementation of the new Context

+        attribute "swallowAbortedUploads". (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Include the seed time when calculating the time taken to create

+        SecureRandom instances for session ID generation, report excessive times

+        (greater than 100ms) at INFO level and provide a value for the message

+        key so a meaningful message appears in the logs. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Don't register Contexts that fail to start with the Mapper. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=48685">48685</a>: Add initial support for SPNEGO/Kerberos authentication

+        also referred to as integrated Windows authentication. This includes

+        user authentication, authorisation via the directory using the

+        user's delegated credentials and exposing the user's delegated

+        credentials via a request attribute so applications can make use of them

+        to impersonate the current user when accessing third-party systems that

+        use a compatible authentication mechanism. Based on a patch provided by

+        Michael Osipov. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        HTTP range requests cannot be reliably served when a Writer is in use so

+        prevent the DefaultServlet from attempting to do so. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Protect the DefaultServlet from Valves, Filters and Wrappers that write

+        content to the response. Prevent partial responses to partial GET

+        requests in this case since the range cannot be reliably determined.

+        Also prevent the DefaultServlet from setting a content length header

+        since this too cannot be reliably determined. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50929">50929</a>: When wrapping an exception, include the root cause.

+        Patch provided by sebb. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50991">50991</a>: Fix regression in fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=25060">25060</a> that called

+        close on a JNDI resource while it was still available to the

+        application. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Provide a configuration option that lets the close method to be used for

+        a JNDI Resource to be defined by the user. This change also disables

+        using the close method unless one is explicitly defined for the

+        resource and limits it to singleton resources. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correctly track changes to context.xml files and trigger redeployment

+        when copyXML is set to false. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50997">50997</a>: Relax the requirement that directories must have a

+        name ending in <code>.jar</code> to be treated as an expanded JAR file

+        by the default JarScanner. Based on patch by Rodion Zhitomirsky. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Don't append the jvmRoute to a session ID if the jvmRoute is a zero

+        length string. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Don't register non-singleton DataSource resources with JMX. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        CVE-2011-1184: Provide additional configuration options for the DIGEST

+        authenticator. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Provide a workaround for Tomcat hanging during shutdown when running the

+        unit tests. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.12 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.12_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50887">50887</a>: Add support for configuring the JSSE provider used to

+        convert client certificates. Based on a patch by pknopp. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50903">50903</a>: When a connector is stopped, ensure that requests that

+        are currently in a keep-alive state and waiting for client data are not

+        processed. Requests where processing has started will continue to

+        completion. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50927">50927</a>: Improve error message when SSLCertificateFile is not

+        specified when using APR with SSL. Based on a patch provided by sebb.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50928">50928</a>: Don't ignore keyPass attribute for HTTP BIO and

+        NIO connectors. Based on a patch provided by sebb. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.12 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.12_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Securely seed the SecureRandom instance used for UUID generation and

+        report excessive creation time (greater than 100ms) at INFO level.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.12 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.12_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50924">50924</a>: Clean-up HTTP connector comparison table. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Slightly expanded the documentation of the Host element to clarify the

+        relationship between host name and DNS name. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50925">50925</a>: Update SSL how-to to take account of

+        <code>keyPass</code> connector attribute. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Improve Tomcat Logging documentation. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Align the authenticator documentation and MBean descriptors with the

+        implementation. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Prevent the custom error pages for the Manager and Host Manager

+        applications from being accessed directly. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50984">50984</a>: When using the Manager application ensure that

+        undeployment fails if a file cannot be deleted. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.12 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.12_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update Eclipse JDT complier to 3.6.2. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update WSDL4J library to 1.6.2 (used by JSR 109 support in the extras

+        package). (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update optional CheckStyle library to 5.3. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50911">50911</a>: Reduce noise generated during the build of the Windows

+        installer so warnings are more obvious. Patch provided by sebb. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Further work to reduce compiler and validation warnings across the code

+        base. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.11 (markt)"><!--()--></a><a name="Tomcat_7.0.11_(markt)"><strong>Tomcat 7.0.11 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2011-03-11</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.11 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.11_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        CVE-2011-1088: Completed fix. Don't ignore @ServletSecurity

+        annotations. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=25060">25060</a>: Close Apache Commons DBCP datasources when the

+        associated JNDI naming context is stopped (e.g. for a non-global

+        DataSource resource on web application reload) to close remaining

+        database connections immediately rather than waiting for garbage 

+        collection. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=26701">26701</a>: Provide a mechanism for users to register their own

+        <code>URLStreamHandlerFactory</code> objects. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50855">50855</a>: Fix NPE on HttpServletRequest.logout() when debug

+        logging is enabled. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        New context attribute "swallowAbortedUploads" allows

+        to make request data swallowing configurable for requests

+        that are too large. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50854">50854</a>: Add additional permissions required by the Manager

+        application when running under a security Manager and support a shared

+        Manager installation when $CATALINA_HOME != CATALINA_BASE. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50893">50893</a>: Add additional information to the download README for

+        the extras components. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Calling <code>stop()</code> and then <code>destroy()</code> on a

+        connector incorrectly triggered an exception. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.11 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.11_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=48208">48208</a>: Allow the configuration of a custom trust manager for

+        use in CLIENT-CERT authentication. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix issues that prevented asynchronous servlets from working when used

+        with the HTTP APR connector on platforms that support TCP_DEFER_ACCEPT.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.11 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.11_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct possible threading issue in JSP compilation when development

+        mode is used. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50895">50895</a>: Don't initialize classes created during the

+        compilation stage. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.10 (markt)"><!--()--></a><a name="Tomcat_7.0.10_(markt)"><strong>Tomcat 7.0.10 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2011-03-08</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.10 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.10_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        CVE-2011-1088: Partial fix. Don't ignore @ServletSecurity

+        annotations. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=27988">27988</a>: Improve reporting of missing files. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=28852">28852</a>: Add URL encoding where missing to parameters in URLs

+        presented by Ant tasks to the Manager application. Based on a patch by

+        Stephane Bailliez. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve handling of SSL renegotiation by failing earlier when the

+        request body contains more bytes than maxSavePostSize. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve shut down speed by not renewing threads during shut down when

+        the <code>ThreadLocalLeakPreventionListener</code> is enabled. (markt)  

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.10 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.10_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49284">49284</a>: Add SSL re-negotiation support to the HTTP NIO

+        connector and extend test cases to cover CLIENT-CERT authentication.

+        (fhanik/markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.9 (markt)"><!--()--></a><a name="Tomcat_7.0.9_(markt)"><strong>Tomcat 7.0.9 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.9 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.9_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=19444">19444</a>: Add an option to the JNDI realm to allow role searches

+        to be performed by the authenticated user. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=21669">21669</a>: Add the ability to specify the roleBase for the JNDI

+        Realm as relative to the users DN. Based on a patch by Art W. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=22405">22405</a>: Add a new Lifecycle listener,

+        <code>org.apache.catalina.security.SecurityListener</code> that prevents

+        Tomcat from starting insecurely. It requires that Tomcat is not started

+        as root and that a umask at least as restrictive as 0007 is used. This

+        new listener is not enabled by default.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=48863">48863</a>: Better logging when specifying an invalid directory

+        for a class loader. Based on a patch by Ralf Hauser. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=48870">48870</a>: Refactor to remove use of parallel arrays. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Enhance the RemoteIpFilter and RemoteIpValve so that the modified remote

+        address, remote host, protocol and server port may be used in an access

+        log if desired. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Restore access to Environments, Resources and ResourceLinks via JMX

+        which was lost in early 7.0.x re-factoring. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Remove ServerLifecycleListener. This was already removed from server.xml

+        and with the Lifecycle re-factoring is no longer required. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add additional checks to ensure that sub-classes of

+        <code>org.apache.catalina.util.LifecycleBase</code> correctly implement

+        the expected state transitions. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50189">50189</a>: Once the application has finished writing to the

+        response, prevent further reads from the request since this causes

+        various problems in the connectors which do not expect this. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50700">50700</a>: Ensure that the override attribute of context

+        parameters is correctly followed. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50721">50721</a>: Correctly handle URL decoding where the URL ends in

+        %nn. Patch provided by Christof Marti. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50737">50737</a>: Add additional information when an invalid WAR file is

+        detected. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50748">50748</a>: Allow the content length header to be set up to the

+        point the response is committed when a writer is being used. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50751">50751</a>: When authenticating with the JNDI Realm, only attempt

+        to read user attributes from the directory if attributes are required.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50752">50752</a>: Fix typo in debug message in deprecated Embedded

+        class. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50789">50789</a>: Provide an option to enable ServletRequestListeners

+        for forwards as required by some CDI frameworks. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50793">50793</a>: When processing Servlet 3.0 async requests, ensure

+        that the requestInitialized and requestDestroyed events are only fired

+        once per request at the correct times. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50802">50802</a>: Ensure that

+        <code>ServletContext.getResourcePaths()</code> includes static resources

+        packaged in JAR files in its output. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Web crawlers can trigger the creation of many thousands of sessions as

+        they crawl a site which may result in significant memory consumption.

+        The new Crawler Session Manager Valve ensures that crawlers are

+        associated with a single session - just like normal users - regardless

+        of whether or not they provide a session token with their requests.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Don't attempt to start NamingResources for Contexts multiple times.

+        (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50826">50826</a>: Avoid <code>IllegalArgumentException</code> if an

+        embedded Tomcat instance that includes at least one Context is destroyed

+        without ever being started. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure a web application is taken out of service if the web.xml file is

+        not valid. (kkolinko/markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure Servlet 2.2 jspFile elements are correctly converted to use a

+        leading '/' if missing. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50836">50836</a>: Better documentation of the meaning of

+        <code>Lifecycle.isAvailable()</code> and correct a couple of cases where

+        this could incorrectly return true. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.9 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.9_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50780">50780</a>: Fix memory leak in APR implementation of AJP

+        connector introduced by the refactoring for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49884">49884</a>. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        If server configuration errors and/or faulty applications caused the

+        ulimit for open files to be reached, the acceptor threads for all

+        connectors could enter a tight loop. This loop consumed CPU and also

+        logged an error message for every iteration of the loop which lead to

+        large log files being generated. The acceptors have been enhanced to

+        better handle this situation. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.9 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.9_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50720">50720</a>: Ensure that the use of non-ISO-8859-1 character sets

+        for web.xml does not trigger an error when Jasper parses the web.xml

+        file. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50726">50726</a>: Ensure that the use of the genStringAsCharArray does

+        not result in String constants that are too long for valid Java code.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50790">50790</a>: Improve method resolution in EL expressions. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.9 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.9_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50771">50771</a>: Ensure HttpServletRequest#getAuthType() returns the 

+        name of the authentication scheme if request has already been 

+        authenticated. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.9 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.9_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50713">50713</a>: Remove roles command from the Manager application.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.9 (markt)/Tribes"><!--()--></a><a name="Tomcat_7.0.9_(markt)/Tribes"><strong>Tribes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50667">50667</a> (<a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1068549">r1068549</a>): Allow RPC callers to get

+        confirmation when sending a reply. (fhanik)

+      </td></tr>  

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.9 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.9_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50743">50743</a>: Cache CheckStyle results between builds to speed up

+        validation. Patch provided by Oliver. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.8 (markt)"><!--()--></a><a name="Tomcat_7.0.8_(markt)"><strong>Tomcat 7.0.8 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2011-02-05</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.8 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.8_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix NPE in CoyoteAdapter when postParseRequest() call fails. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+       <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50709">50709</a>: Make <code>ApplicationContextFacade</code> non-final to

+       enable extension. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When running under a security manager, user requests may fail with a

+        security exception. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.8 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.8_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Reduce level of log message for invalid URL parameters from WARNING to

+        INFO. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix hanging Servlet 3 asynchronous requests when using the APR based AJP

+        connector. (markt) 

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.8 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.8_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Align server.xml installed by the Windows installer with the one

+        bundled in zip/tar.gz files. The differences are LockOutRealm being

+        used and AccessLogValve being enabled by default. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.7 (markt)"><!--()--></a><a name="Tomcat_7.0.7_(markt)"><strong>Tomcat 7.0.7 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.7 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.7_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=18462">18462</a>: Don't merge <code>stdout</code> and

+        <code>stderr</code> internally so users retain the option to treat them

+        separately. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=18797">18797</a>: Provide protection against <code>null</code> or zero

+        length names being provided for users, roles and groups in the

+        <code>MemoryRealm</code> and <code>UserDatabaseRealm</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Improve fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50205">50205</a> to trigger an error earlier if invalid

+        configuration is used. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Provide additional control over component class loaders, primarily for

+        use when embedding. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix NPE in RemoteAddrFilter, RemoteHostFilter. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49711">49711</a>: HttpServletRequest#getParts will work in a filter

+        or servlet without an @MultipartConfig annotation or

+        MultipartConfigElement if the new "allowCasualMultipartParsing"

+        context attribute is set to "true". (schultz)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49978">49978</a>: Correct another instance where deployment incorrectly

+        failed if a directory in the work area already existed. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50582">50582</a>: Refactor access logging so chunked encoding is not

+        forced for all requests if bytes sent is logged. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50597">50597</a>: Don't instantiate a new instance of a Filter if

+        an instance was provided via the

+        <code>ServletContext.addFilter(String, Filter)</code> method. Patch

+        provided by Ismael Juma. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50598">50598</a>: Correct URL for Manager text interface. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50620">50620</a>: Stop exceptions that occur during

+        <code>Session.endAccess()</code> from preventing the normal completion

+        of <code>Request.recycle()</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50629">50629</a>: Make <code>StandardContext.bindThread()</code> and

+        <code>StandardContext.unbindThread()</code> protected to allow use by

+        sub-classes. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Use getName() instead of logName() in error messages in StandardContext.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50642">50642</a>: Move the <code>sun.net.www.http.HttpClient</code>

+        keep-alive thread memory leak protection from the

+        JreMemoryLeakPreventionListener to the WebappClassLoader since the

+        thread that triggers the memory leak is created on demand. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50673">50673</a>: Improve Catalina shutdown when running as a service.

         Do not call System.exit(). (kkolinko)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50689">50689</a>: Provide 100 Continue responses at appropriate points

-        during FORM authentication if client indicates that they are expected.

-        (kkolinko)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50683">50683</a>: Ensure annotations are scanned when

+        <code>unpackWARs</code> is set to <code>false</code> in the Host

+        where a web application is deployed. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

         Improve HTTP specification compliance in support of

@@ -1661,299 +11506,1232 @@
       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.32 (jfclere)/Coyote"><!--()--></a><a name="Tomcat_6.0.32_(jfclere)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.7 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.7_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49795">49795</a>: Backport AprEndpoint shutdown improvements, to make

-        it more robust. (mturk/kkolinko)

+        Prevent possible thread exhaustion if a Comet timeout event takes a

+        while to complete. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50325">50325</a>: When the JVM indicates support for RFC 5746, disable

+        Prevent multiple Comet END events if the CometServlet calls

+        <code>event.close()</code> during an END event. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50325">50325</a>: When the JVM indicates support for RFC 5746, disable

         Tomcat's <code>allowUnsafeLegacyRenegotiation</code> configuration

         attribute and use the JVM configuration to control renegotiation.

         (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50631">50631</a>: InternalNioInputBuffer should honor

-        <code>maxHttpHeadSize</code>. (kkolinko)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50405">50405</a>: Fix occasional NPE when using NIO connector and

+        Comet. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50651">50651</a>: Fix NPE in InternalNioOutputBuffer.recycle().

-        (kkolinko)

+        Ensure correct recycling of NIO input filters when processing Comet

+        events. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50627">50627</a>: Correct interaction of NIO socket and Poller when

+        processing Comet events. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct interaction of APR socket and Poller when processing Comet

+        events. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50631">50631</a>: InternalNioInputBuffer should honor

+        <code>maxHttpHeadSize</code>. (kkolinko)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.32 (jfclere)/Cluster"><!--()--></a><a name="Tomcat_6.0.32_(jfclere)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.7 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.7_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve special case handling of

+        <code>javax.servlet.jsp.el.ScopedAttributeELResolver</code> in

+        <code>javax.el.CompositeELResolver</code> to handle sub-classes. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=15688">15688</a>: Use fully-qualified class names in generated jsp files

+        to avoid naming conflicts with user imports. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=46819">46819</a>: Remove redundant object instantiations in

+        JspRuntimeLibrary. Patch provided by Anthony Whitford. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Improve error message when EL identifiers are not valid Java identifiers

+        and use i18n for the error message. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50680">50680</a>: Prevent an NPE when using tag files from an exploded

+        JAR file, e.g. from within an IDE. Patch provided by Larry Isaacs.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.7 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.7_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50591">50591</a>: Fix NPE in ReplicationValve. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Internationalise the log messages for the FarmWarDeployer. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50600">50600</a>: Prevent a <code>ConcurrentModificationException</code>

+        when removing a WAR file via the FarmWarDeployer. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

         Be consistent with locks on sessionCreationTiming,

         sessionExpirationTiming in DeltaManager.resetStatistics(). (kkolinko)

       </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50648">50648</a>: Correctly set the interrupt status if a thread using

+        <code>RpcChannel</code> is interrupted waiting for a message reply.

+        Based on a patch by Olivier Costet. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50646">50646</a>: Ensure larger Tribes messages are fully read. Patch

+        provided by Olivier Costet. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50679">50679</a>: Update the FarmWarDeployer to support parallel

+        deployment. (markt)

+      </td></tr>

     </table>

   </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.31 (jfclere)"><!--()--></a><a name="Tomcat_6.0.31_(jfclere)"><strong>Tomcat 6.0.31 (jfclere)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.31 (jfclere)/Catalina"><!--()--></a><a name="Tomcat_6.0.31_(jfclere)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.7 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.7_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49543">49543</a>: Allow Tomcat to use shared data sources with per

-        application credentials. (fhanik)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=22278">22278</a>: Add a commented out <code>RemoteAddrValve</code> that

+        limits access to the Manager and Host Manager applications to localhost.

+        Based on a patch by Yann C&eacute;bron. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct a handful of Javadoc warnings. (markt)

       </td></tr>

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50205">50205</a>: Add the deployIgnorePaths attribute to the Host

-        element. Based on a patch by Jim Riggs. (markt/kkolinko)

+        Provide additional detail about how web application version order is

+        determined when using parallel deployment. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50413">50413</a>: Additional fix that ensures the error page is served

-        regardless of any Range headers in the original request. (kkolinko)

+        Correct the documentation for the recoveryCount count attribute of the

+        the default cluster membership. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50550">50550</a>: When a new directory is created (e.g. via WebDAV)

-        ensure that a subsequent request for that directory does not result in a

-        404 response. (markt/kkolinko)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50441">50441</a>: Clarify when it is valid to set the docBase attribute

+        in a Context element. (markt)

       </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50526">50526</a>: Provide additional documentation on configuring

+        JavaMail resources. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50599">50599</a>: Use correct names of roles required to access the 

+        Manager application. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.7 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.7_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Provide session creation and destruction rate metrics in the session

-        managers. (markt) 

+        Extend the Checkstyle tests to check for license headers. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50606">50606</a>: Improve CGIServlet: Provide support for specifying

+        Modify the build script so a release build always rebuilds the

+        dependencies to ensure that the correct Tomcat version appears in the

+        manifest. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Code clean-up to remove unused code and reduce IDE warnings. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50601">50601</a>: Code clean-up. Patch provided by sebb. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50606">50606</a>: Improve CGIServlet: Provide support for specifying

         empty value for the <code>executable</code> init-param. Provide support

         for explicit additional arguments for the executable. Those were

-        broken when implementing fix for bug <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49657">49657</a>. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50620">50620</a>: Stop exceptions that occur during

-        <code>Session.endAccess()</code> from preventing the normal completion

-        of <code>Request.recycle()</code>. (markt)

+        broken when implementing fix for bug <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49657">49657</a>. (kkolinko)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.31 (jfclere)/Coyote"><!--()--></a><a name="Tomcat_6.0.31_(jfclere)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.6 (markt)"><!--()--></a><a name="Tomcat_7.0.6_(markt)"><strong>Tomcat 7.0.6 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2011-01-14</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.6 (markt)/General"><!--()--></a><a name="Tomcat_7.0.6_(markt)/General"><strong>General</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Remove a huge memory leak in the NIO connector introduced by the fix

-        for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49884">49884</a>. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.31 (jfclere)/Cluster"><!--()--></a><a name="Tomcat_6.0.31_(jfclere)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50600">50600</a>: Prevent a <code>ConcurrentModificationException</code>

-        when removing a WAR file via the FarmWarDeployer. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.30 (jfclere)"><!--()--></a><a name="Tomcat_6.0.30_(jfclere)"><strong>Tomcat 6.0.30 (jfclere)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2011-01-13</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.30 (jfclere)/General"><!--()--></a><a name="Tomcat_6.0.30_(jfclere)/General"><strong>General</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Filter input of manager app servlets. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43960">43960</a>: Expose available property of StandardWrapper via JMX.

-        (markt)

-      </td></tr>

       <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update to Commons Daemon 1.0.5. (mturk)

+        Update to Apache Commons Daemon 1.0.5. (mturk)

       </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Switch to using the Eclipse compiler JAR directly rather than creating

-        it from the larger JDT download. (markt)

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.6 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.6_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=8705">8705</a>: <code>org.apache.catalina.SessionListener</code> now

+        extends <code>java.util.EventListener</code>. (markt)

       </td></tr>

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Allow the off-line building of the extras package. (markt)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=10526">10526</a>: Add an option to the <code>Authenticator</code>s to

+        force the creation of a session on authentication which may offer some

+        performance benefits. (markt)

       </td></tr>

       <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update to Commons Pool 1.5.5. (markt)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=10972">10972</a>: Improve error message if the className attribute is

+        missing on an element in server.xml where it is required. (markt)

       </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49728">49728</a>, <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50084">50084</a>: Improve PID file handling when

-        another process is managing the PID file and Tomcat does not have write

-        access. (markt)

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=48692">48692</a>: Provide option to parse

+        <code>application/x-www-form-urlencoded</code> PUT requests. (schultz)

       </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49909">49909</a>, <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50201">50201</a>: Provide a mechanism to log requests

-        rejected before they reach the AccessLogValve to appear in the access

-        log. (markt/kkolinko)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.30 (jfclere)/Catalina"><!--()--></a><a name="Tomcat_6.0.30_(jfclere)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=38113">38113</a>: Provide a system property that enables a strict

-        interpretation of the specification for <code>getQueryString()</code>

-        when an empty query string is provided by the user agent. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Return a copy of the current URLs for the <code>WebappClassLoader</code>

-        to prevent modification. This facilitated, although it wasn't the root

-        cause, CVE-2010-1622. (markt)

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=48822">48822</a>: Include context name in case of error while stopping

+        or starting a context during its reload. Patch provided by Marc 

+        Guillemot. (slaurent)

       </td></tr>

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48837">48837</a>: Extend thread local memory leak detection to include

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=48837">48837</a>: Extend thread local memory leak detection to include

         classes loaded by subordinate class loaders to the web

-        application's class loader such as the Jasper class loader.

-        Patch provided by Sylvain Laurent. (kkolinko)

+        application's class loader such as the Jasper class loader. Based

+        on a patch by Sylvain Laurent. (markt)

       </td></tr>

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48973">48973</a>: Avoid creating a SESSIONS.ser file when stopping an 

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=48973">48973</a>: Avoid creating a SESSIONS.ser file when stopping an 

         application if there's no session. Patch provided by Marc Guillemot.

         (slaurent)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49030">49030</a>: Failure during start of one connector should not leave

-        some connectors started and some ignored. (kkolinko)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49000">49000</a>: No longer accept specification invalid name only

+        cookies by default. This behaviour can be restored using a system

+        property. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49159">49159</a>: Improve memory leak protection by renewing threads of

+        the pool when a web application is stopped. (slaurent)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49195">49195</a>: Don't report an error when shutting down a Windows

-        service for a Tomcat instance that has a disabled shutdown port. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49209">49209</a>: Fix problem with JDBC driver memory leak prevention

-        when running under a security manager. Patch provided by Sylvain

-        Laurent. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49613">49613</a>: Improve performance when using SSL for applications

-        that make multiple class to <code>Request.getAttributeNames()</code>.

-        Patch provided by Sampo Savolainen. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49657">49657</a>: Handle CGI executables with spaces in the path.

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49372">49372</a>: Re-fix after connector re-factoring. If connector

+        initialisation fails (e.g. if a port is already in use) do not trigger

+        an <code>LifecycleException</code> for an invalid state transition.

         (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49667">49667</a>: Ensure that using the JDBC driver memory leak

-        prevention code does not cause a one of the memory leaks it is meant to

-        avoid. (markt)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49543">49543</a>: Allow Tomcat to use shared data sources with per

+        application credentials. (fhanik)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49749">49749</a>: Respect <code>httpOnly</code> setting of Context

-        when creating SSO cookie. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Provide better web application state information via JMX. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49811">49811</a>: Add an option to disable URL rewriting on a per

-        Context basis. The option name is <code>disableURLRewriting</code>.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49856">49856</a>: Expose the executor name for the connector via JMX.

-        (markt)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49650">49650</a>: Remove unnecessary entries package.access property

+        defined in catalina.properties. Patch provided by Owen Farrell. (markt) 

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49915">49915</a>: Make error more obvious, particularly when accessed

-        via JConsole, if StandardServer.storeConfig() is called when there is

-        no StoreConfig implementation present. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49965">49965</a>: Use correct i18n resources for StringManager in

-        JAASRealm. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49987">49987</a>: Fix potential data race in the population of the

-        Servlet Context initialisation parameters. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Code clean-up. Avoid some casts in StandardContext. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Add security policy and token poller protection to the JRE memory leak

-        protection provided in Tomcat 6. (markt/kkolinko)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50026">50026</a>: Add support for mapping the default servlet to URLs

-        other than /. (timw)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50128">50128</a>: Improve exception handling in PersistentManagerBase

-        when running with a security manager. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50131">50131</a>: Avoid possible NPE in debug output in PersistentValve.

-        Patch provided by sebb. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50138">50138</a>: Fix threading issues in

-        <code>org.apache.catalina.security.SecurityUtil</code>. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Add a new filter, <code>org.apache.catalina.filters.CsrfPreventionFilter</code>,

-        to provide generic cross-site request forgery (CSRF)

-        protection for web applications. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Make sure Contexts defined in server.xml pick up any <code>configClass</code>

-        setting from the parent Host. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50222">50222</a>: Modify memory leak prevention code so it pins the

-        system class loader in memory rather than than the common class loader,

-        which is better for embedded systems. (schultz) 

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Make memory leak prevention code that clears ThreadLocal instances more

-        robust against objects with <code>toString()</code> methods that throw

-        exceptions. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50282">50282</a>: Load <code>javax.security.auth.login.Configuration</code>

-        with <code>JreMemoryLeakPreventionListener</code> to avoid memory leak

-        when stopping a webapp that would use JAAS.

-        (slaurent)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50413">50413</a>: Ensure 304s are not returned when using static files

-        as error pages. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50453">50453</a>: Correctly handle multiple <code>X-Forwarded-For</code>

-        headers in the RemoteIpValve. Patch provided by Jim Riggs. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50459">50459</a>: Fix thread/classloader binding issues in

-        StandardContext. (slaurent) 

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50106">50106</a>: Correct several MBean descriptors. Patch provided by

+        Eiji Takahashi. (markt)

       </td></tr>

       <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50527">50527</a>: Improve an error message shown by HttpServlet. (markt)

+        Further performance improvements to session ID generation. Remove legacy

+        configuration options that are no longer required. Provide additional

+        options to control the <code>SecureRandom</code> instances used to

+        generate session IDs. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50201">50201</a>: Update the access log reference in

+        <code>StandardEngine</code> when the ROOT web application is redeployed,

+        started, stopped or defaultHost is changed. (markt/kkolinko)

       </td></tr>

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50556">50556</a>: Improve JreMemoryLeakPreventionListener to prevent

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50282">50282</a>: Load

+        <code>javax.security.auth.login.Configuration</code> with

+        <code>JreMemoryLeakPreventionListener</code> to avoid memory leak when

+        stopping a web application that would use JAAS. (slaurent)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50351">50351</a>: Fix the regression that broke BeanFactory resources

+        caused by the previous fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50159">50159</a>. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50352">50352</a>: Ensure that <code>AsyncListener.onComplete()</code> is

+        fired when <code>AsyncContext.complete()</code> is called. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50358">50358</a>: Set the correct LifecycleState when stopping instances

+        of the deprecated Embedded class. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Further Lifecycle refactoring for Connectors and associated components.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct handling of versioned web applications in deployer. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct removal of <code>LifeCycleListener</code>s from

+        <code>Container</code>s via JMX. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Don't use <code>null</code>s to construct log messages. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Code clean-up. Replace use of inefficient constructors with more

+        efficient alternatives. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50411">50411</a>: Ensure sessions are removed from the

+        <code>Store</code> associated with a <code>PersistentManager</code>.

+        (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50413">50413</a>: Ensure 304 responses are not returned when using

+        static files as error pages. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50448">50448</a>: Fix possible <code>IllegalStateException</code>

+        caused by recent session management refactoring. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure aliases settings for a context are retained after a context is

+        reloaded. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Log a warning if context.xml files define values for properties  that do

+        not exist (e.g. if there is a typo in a property name). (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50453">50453</a>: Correctly handle multiple <code>X-Forwarded-For</code>

+        headers in the RemoteIpFilter and RemoteIpValve. Patch provided by Jim

+        Riggs. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50541">50541</a>: Add support for setting the size limit and time limit

+        for LDAP searches when using the JNDI Realm with <code>userSearch</code>.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        All configuration options that use regular expression now require a

+        single regular expression (using <code>java.util.regex</code>) rather

+        than a list of comma-separated or semi-colon-separated expressions.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50496">50496</a>: Bytes sent in the access log are now counted after

+        compression, chunking etc rather than before. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50550">50550</a>: When a new directory is created (e.g. via WebDAV)

+        ensure that a subsequent request for that directory does not result in a

+        404 response. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50554">50554</a>: Code clean up. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50556">50556</a>: Improve JreMemoryLeakPreventionListener to prevent

         a potential class loader leak caused by a thread spawned when the class

         <code>com.sun.jndi.ldap.LdapPoolManager</code> is initialized and the 

         system property <code>com.sun.jndi.ldap.connect.pool.timeout</code> is 

         set to a value greater than 0. (slaurent)

       </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.6 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.6_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50642">50642</a>: Move the <code>sun.net.www.http.HttpClient</code>

-        keep-alive thread memory leak protection from the 

-        JreMemoryLeakPreventionListener to the WebappClassLoader since the

-        thread that triggers the memory leak is created on demand. (markt)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=47319">47319</a>: Return the client's IP address rather than null

+        for calls to <code>getRemoteHost()</code> when the APR connector is

+        used with <code>enableLookups="true"</code> but the IP address

+        is not resolveable. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50108">50108</a>: Add get/set methods for Connector property

+        minSpareThreads. Patch provided by Eiji Takahashi. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50360">50360</a>:  Provide an option to control when the socket

+        associated with a connector is bound. By default, the socket is bound on

+        <code>Connector.init()</code> and released on

+        <code>Connector.destroy()</code> as per the current behaviour but this

+        can be changed so that the socket is bound on

+        <code>Connector.start()</code> and released on

+        <code>Connector.stop()</code>. This fix also includes further Lifecycle

+        refactoring for Connectors and associated components. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Remove a huge memory leak in the NIO connector introduced by the fix

+        for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49884">49884</a>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50467">50467</a>: Protected against NPE triggered by a race condition

+        that causes the NIO poller to fail, preventing the processing of further

+        requests. (markt)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.30 (jfclere)/Coyote"><!--()--></a><a name="Tomcat_6.0.30_(jfclere)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.6 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.6_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=13731">13731</a>: Make variables in <code>_jspService()</code> method

+        final where possible. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50408">50408</a>: Fix <code>NoSuchMethodException</code> when using

+        scoped variables with EL method invocation. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50460">50460</a>: Avoid a memory leak caused by using a cached exception

+        instance in <code>JspDocumentParser</code> and

+        <code>ProxyDirContext</code>. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50500">50500</a>: Use correct coercions (as per the EL spec) for

+        arithmetic operations involving string values containing '.',

+        'e' or 'E'. Based on a patch by Brian Weisleder.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.6 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.6_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50185">50185</a>: Add additional trace level logging to Tribes to assist

+        with fault diagnosis. Based on a patch by Ariel. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Don't try and obtain session data from the cluster if the current

+        node is the only node in the cluster. Log requesting session data as

+        INFO rather than WARNING. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50503">50503</a>: When web application has a version, Engine level 

+        Clustering works correctly. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50547">50547</a>: Add time stamp for CHANGE_SESSION_ID message and 

+        SESSION_EXPIRED message. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.6 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.6_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47913">47913</a>: Return the IP address rather than null for

-        <code>getRemoteHost()</code> with the APR connector if the IP address

-        does not resolve. (markt)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=21157">21157</a>: Ensure cookies are written before the response is

+        committed in the Cookie example. Patch provided by Stefan Radzom. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50294">50294</a>: Add more information to documentation regarding format

+        of configuration files. Patch provided by Luke Meyer. (markt) 

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Avoid a NPE for APR connector unlockAccept with default soTimeout.

-        (mturk)

+        Correctly validate provided context path so sessions for the ROOT web

+        application can be viewed through the HTML Manager. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Improve documentation of database connection factory. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50488">50488</a>: Update classpath required when using jsvc and add a

+        note regarding server VMs. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Further filtering of Manager display output. (kkolinko) 

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.6 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.6_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Don't configure Windows installer to use PID file since it is not

+        removed when the service stops which prevents the service from starting.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=14416">14416</a>: Make <code>TagLibraryInfo.getTag()</code> more robust

+        at handling <code>null</code>s. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50552">50552</a>: Avoid NPE that hides error message when using Ant

+        tasks. (schultz)

       </td></tr>

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48545">48545</a>: Allow JSSE trust stores to be used without providing

-        a password. Based on a patch by smmwpf54. (kkolinko)

+        Provide two alternative locations for the libraries downloaded from

+        the ASF web site at build time. Use the main distribution site as

+        default and the archive one as fallback. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.5 (markt)"><!--()--></a><a name="Tomcat_7.0.5_(markt)"><strong>Tomcat 7.0.5 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>beta, 2010-12-01</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.5 (markt)/General"><!--()--></a><a name="Tomcat_7.0.5_(markt)/General"><strong>General</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update to Apache Commons Daemon 1.0.4. (mturk)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.5 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.5_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=3839">3839</a>: Provide a mechanism to gracefully handle the case where

+        users book-mark the form login page or otherwise misuse the FORM

+        authentication process. Based on a suggestion by Mark Morris. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49180">49180</a>: Add option to disable log rotation in 

+        juli FileHandler. Patch provided by Pid (pidster at apache). (funkman)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49991">49991</a>: Ensure servlet request listeners are fired for

+        the login and error pages during FORM authentication. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50107">50107</a>: When removing a Host via JMX, do not attempt to

+        destroy the host's pipeline twice. Patch provided by Eiji

+        Takahashi. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50138">50138</a>: Fix threading issues in

+        <code>org.apache.catalina.security.SecurityUtil</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50157">50157</a>: Ensure MapperListener is only added to a container

+        object once. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50159">50159</a>: Add a new attribute for <code>&lt;Resource&gt;</code>

+        elements, <code>singleton</code>, that controls whether or not a new

+        object is created every time a JNDI lookup is performed to obtain the

+        resource. The default value is <code>true</code>, which will return the

+        same instance of the resource in every JNDI lookup. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50168">50168</a>: Separate the <code>Lifecycle.DESTROY_EVENT</code> into

+        <code>Lifecycle.BEFORE_DESTROY_EVENT</code> and

+        <code>Lifecycle.AFTER_DESTROY_EVENT</code>. Use the additional state to

+        ensure that <code>Context</code> objects are only destroyed once.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50169">50169</a>: Ensure that when a Container is started that it

+        doesn't try and register with the mapper unless its parent has

+        already started. Patch provided by Eiji Takahashi. (markt)

       </td></tr>

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48738">48738</a>: Add support for flushing gzipped output. Based on a

-        patch by Jiong Wang. (markt)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50222">50222</a>: Modify memory leak prevention code so it pins the

+        system class loader in memory rather than than the common class loader,

+        which is better for embedded systems. Patch provided by Christopher

+        Schultz. (markt) 

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Improve debug logging for MapperListener registration. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Expose names of LifecycleListeners and ContainerListeners for

+        StandardContext via JMX. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add a new option, <code>resourceOnlyServlets</code>, to Context elements

+        that provides a mechanism for working around the issues caused by new

+        requirements for welcome file mapping introduced in Servlet 3.0. By

+        default, the existing Tomcat 6.0.x welcome file handling is used.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Make Tomcat more tolerant of <code>null</code> when generating JMX names

+        for Valves. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Make AccessLogValve attribute <code>enabled</code> changeable via JMX.

+        (pero)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct infinite loop if <code>ServletRequest.startAsync(ServletRequest,

+        ServletResponse)</code> was called. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50232">50232</a>: Remove dependency between StoreBase and

+        PersistentManager and associated code clean-up. Patch provided by

+        Tiago Batista. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50252">50252</a>: Prevent ClassCastException when using a

+        &lt;ResourceLink&gt;. Patch provided by Eiji Takahashi. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Reduce synchronization in session managers to improve performance of

+        session creation. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        If starting children automatically when adding them to a container (e.g.

+        when adding a Context to a Host) don't lock the parent's set

+        of children whilst the new child is being started since this can block

+        other threads and cause issues such as lost cluster messages. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Implement support for parallel deployment. This allows multiple versions

+        of the same web application to be deployed to the same context path at

+        the same time. Users without a current session will be mapped to the

+        latest version of the web application. Users with a current session will

+        continue to use the version of the web application with which the

+        session is associated until the session expires. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50308">50308</a>: Allow asynchronous request processing to call

+        <code>AsyncContext.dispatch()</code> once the asynchronous request has

+        timed out. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Make memory leak prevention code that clears ThreadLocal instances more

+        robust against objects with toString() methods that throw exceptions.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.5 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.5_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49860">49860</a>: Complete support for handling trailing headers in

+        chunked HTTP requests. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Impose a limit on the length of the trailing headers. The limit

+        is configurable with a system property and is <code>8192</code>

+        by default. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50207">50207</a>: Ensure Comet timeout events are triggered. This bug

+        was a regression triggered by the fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49884">49884</a>. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.5 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.5_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49297">49297</a>: Enforce the rules in the JSP specification for parsing

+        the attributes of custom and standard actions that require that

+        the attribute names are unique within an element and that there is

+        whitespace before the attribute name. The whitespace test can be

+        disabled by setting the system property

+        <code>org.apache.jasper.compiler.Parser.STRICT_WHITESPACE</code> to

+        <code>false</code>. Attributes of the page directive have slightly

+        different rules. The implementation of that part of the fix is based on

+        a patch by genspring. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50105">50105</a>: When processing composite EL expressions use

+        <code>Enum.name()</code> rather than <code>Enum.toString()</code> as

+        required by the EL specification. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix minor thread-safety and performance issues in the implementation

+        of <code>maxLoadedJsps</code>. (rjung)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add support for unloading JSPs that have not been requested for a

+        long time using the new parameter <code>jspIdleTimeout</code>. (rjung)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add logging and JMX support to JSP unloading. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50192">50192</a>: Improve performance for EL when running under a

+        security manager. Based on a patch by Robert Goff. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50228">50228</a>: Improve recycling of <code>BodyContentImpl</code>.

+        This avoids keeping a cached reference to a webapp-provided Writer

+        used in JspFragment.invoke() calls. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50273">50273</a>: Provide a workaround for an HP-UX issue that can

+        result in large numbers of SEVERE log messages appearing in the logs as

+        a result of normal operation. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50293">50293</a>: Increase the size of internal ELResolver array from 2 

+        to 8 since in typical usage there are at least 5 resolvers. Based on a

+        patch by Robert Goff. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.5 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.5_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add support for maxActiveSessions attribute to BackupManager. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve sending an access message in DeltaManager.

+        maxInactiveInterval of not Manager but the session is used. 

+        If maxInactiveInterval is negative, an access message is not sending. 

+        (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50183">50183</a>: BIO sender was not scheduling tasks to the executor

+        during normal operation. Patch provided by Ariel. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50184">50184</a>: Add an option to the RpcChannel to enable the Channel

+        send options to be set for the reply message. Based on a patch by Ariel.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that a new Context waiting for session data from other nodes in

+        the cluster does not block the processing of clustering messages for

+        other Contexts. (markt) 

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.5 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.5_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49426">49426</a>: Localize messages in the Manager application based on

+        the Locale of the user rather than the default Locale of the server.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Localize messages in the Host Manager application based on the Locale of

+        the user rather than the default Locale of the server. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50242">50242</a>: Provide a sample log4j  configuration that more

+        closely matches the default JULI configuration. Patch provided by

+        Christopher Schultz. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Restore the ability to edit the contents of /WEB-INF and /META-INF via

+        WebDAV via the provision of a new configuration option,

+        allowSpecialPaths. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct broken links for on-line JavaDocs. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50230">50230</a>: Add new DistributedManager interface that is

+        implemented by the Backup Manager to remove circular dependency between

+        tomcat-catalina-ha and tomcat-catalina modules. Also allows third-party

+        distributed Manager implementations to report full session information

+        through the HTML Manager. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Improve Tomcat Logging documentation. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50303">50303</a>: Update JNDI how-to to reflect the new JavaMail

+        download location and that JAF is now included in Java SE 6. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix ordering functionality on sessions page for the HTML Manager 

+        application. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix primary sessions not always being treated as such in the HTML

+        Manager application. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix message not being displayed after session attribute removal in the

+        HTML Manager application. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50310">50310</a>: Fix display of Servlet information in the Manager

+        application. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        CVE-2010-4172: Multiple XSS in the Manager application. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50316">50316</a>: Fix display of negative values in the Manager 

+        application. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50318">50318</a>: Avoid NPE when trying to view session detail for an

+        expired session in the Manager application. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.5 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.5_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct a handful of Javadoc warnings. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=22965">22965</a>: Fix some typos and formatting issues in the global

+        web.xml file. Based on a patch by Yann C&eacute;bron. (markt) 

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Extend Checkstyle validation checks to check for unused imports. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        General code clean-up to reduce (not eliminate) the number of warnings

+        reported by IDEs. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50140">50140</a>: Don't ignore a user specified installation

+        directory when performing a silent install with the Windows installer on

+        64-bit platforms. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Reimplemented Windows installer dialogs, using modern libraries

+        (nsDialogs, MUI2). (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        When installing with the Windows installer on 64-bit platforms, allow

+        the user to select either a 32-bit JDK or a 64-bit JDK. If a 32-bit JDK

+        is selected, the 32-bit service wrapper and the 32-bit native DLL will

+        be installed. If a 64-bit JDK is selected, the 64-bit service wrapper

+        and the 64-bit native DLL will be installed. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Create Windows shortcuts for the Manager and Host Manager webapps.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Support /? command line option in the Windows Installer. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Display and allow to change roles for the Tomcat admin user in the

+        Windows installer. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        In the Windows installer: do not leave stale <code>server.xml</code>

+        and <code>tomcat-users.xml</code> fragments in the $TEMP folder.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49819">49819</a>: Redesign of home page by Pid (pidster at apache).

+        (timw)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.4 (markt)"><!--()--></a><a name="Tomcat_7.0.4_(markt)"><strong>Tomcat 7.0.4 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>beta, 2010-10-21</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.4 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.4_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49428">49428</a>: Re-implement the fix for bug <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49428">49428</a> &ndash;

+        namespace issues for some Microsoft WebDAV clients. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49669">49669</a>: Fix memory leak triggered by using the deprecated

+        javax.security.auth.Policy class. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49922">49922</a>: Don't add filter twice to filter chain if the

+        filter matches more than one URL pattern and/or Servlet name. Patch

+        provided by heyoulin. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49937">49937</a>: Use an InstanceManager when creating an AsyncListener

+        through the AsyncContext to ensure annotations are processed. Based on a

+        patch by David Jencks. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        To avoid NoSuchMethodException, xmlValidation and xmlNamespaceAware are 

+        removed from the createStandardHost definition 

+        of mbeans-descriptors.xml. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49945">49945</a>: Continue improvements to JMX. Fix a handful of

+        attributes that were showing as Unavailable in JConsole. Patch provided

+        by Chamith Buddhika. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49952">49952</a>: Allow ServletContainerInitializers to add listeners to

+        a web application. Patch provided by David Jencks. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49956">49956</a>: Handle case when @Resource annotation uses the full

+        JNDI name for a resource. Based on a patch by Gurkan Erdogdu. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49557">49557</a>: Correct regression due to Lifecycle refactoring that

+        cleared all work directories (with compiled JSPs and persisted sessions)

+        when Tomcat was stopped. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49978">49978</a>: Correctly handle the case when a directory expected

+        to be created during web application start is already present. Rather

+        than throwing an exception and failing to start, allow the web

+        application to start normally. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49987">49987</a>: Fix thread safety issue with population of servlet

+        context initialization parameters. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49994">49994</a>: As per the Java EE 6 specification, return a new

+        object instance for each JNDI look up of a resource reference. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50015">50015</a>: Re-factor dynamic servlet security implementation to

+        make extensions, such as JACC implementations, simpler. Patch provided

+        by David Jencks. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50016">50016</a>: Re-factor <code>isUserInRole()</code> and

+        <code>login()/logout()</code> methods to support JACC implementations

+        and to improve encapsulation. Patch provided by David Jencks. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50017">50017</a>: Code clean-up. No functional change. Patch provided by

+        sebb. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50027">50027</a>: Avoid NPE on start when a Context is defined in

+        server.xml with one or more JNDI resources. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50059">50059</a>: JARs should always be searched for static resources

+        even if the web application is marked as meta-data complete. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50063">50063</a>: Correct regression in fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50059">50059</a> that

+        causes applications marked as meta-data complete to return 404s for all

+        requests. Patch provided by heyoulin. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50087">50087</a>: Catch ClassFormatErrors when scanning for annotations.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.4 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.4_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49923">49923</a>: Avoid using negative timeouts during acceptor unlock

+        to ensure APR connector shuts down properly. (mturk) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49972">49972</a>: Fix potential thread safe issue when formatting dates

+        for use in HTTP headers. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50003">50003</a>: Set not maxThreads but minSpareThreads to

+        corePoolSize, if AbstractEndpoint.setMinSpareThreads is called.

+        (kfujino) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50044">50044</a>: Fix issue when using comet where socket remained in

+        long poll after the comet request has ended. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50054">50054</a>: Correctly handle the setting of minSpareThreads in 

+        AJP connector. (kfujino) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50072">50072</a>: Fix issues when using a non-blocking read for the

+        request line with the NIO connector that could result in the request

+        line being mis-read. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.4 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.4_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49986">49986</a>: Fix thread safety issue for JSP reload. (timw)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49998">49998</a>: Make jsp:root detection work with single quoted

+        attributes as well. (timw)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correctly handle the setting of primitive bean values via expression

+        language. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Don't swallow exceptions when processing TLD files and handle the

+        case when there is no web.xml file. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50066">50066</a>: Fix building of recursive tag files when the file

+        depends on a JAR file. Patch provided by Sylvain Laurent. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50078">50078</a>: Fix threading problem in EL caches. Patch provided by

+        Takayoshi Kimura. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Make EL cache sizes configurable. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.4 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.4_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Apply filters to default home page so copyright year is correctly

+        displayed. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.4 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.4_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=48716">48716</a>: Do not call reset if the default LogManager is in use.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50013">50013</a>: Correctly package classes from

+        <code>org.apache.tomcat.util.file</code> and add the tomcat-util.jar to

+        the class path for the Ant tasks. Based on a patch provided by

+        Sylvain Laurent. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.3 (markt)"><!--()--></a><a name="Tomcat_7.0.3_(markt)"><strong>Tomcat 7.0.3 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.3 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.3_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=48644">48644</a>: Review all instances of catching Throwable and

+        re-throw where appropriate. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Allow glob patterns in the <code>jarsToSkip</code> configuration and add

+        some debug logging to the jar scanner. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=48738">48738</a>: Workaround a couple of long standing JDK bugs to

+        enable GZIP compressed output streams to be flushed. Based on a patch

+        provided by Jiong Wang. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=48967">48967</a>: Replace strings "catalina.base" and "catalina.home"

+        by globally defined constants. Patch provided by Marc Guillemot. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49195">49195</a>: Don't report an error when shutting down a Windows

+        service for a Tomcat instance that has a disabled shutdown port. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49209">49209</a>: Prevent possible AccessControlException during

+        undeployment when running with a security manager. Patch provided by

+        Sylvain Laurent. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49657">49657</a>: Handle CGI executables with spaces in the path.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49667">49667</a>: Ensure that using the JDBC driver memory leak

+        prevention code does not cause a one of the memory leaks it is meant to

+        avoid. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49670">49670</a>: Restore SSO functionality that was broken by Lifecycle

+        refactoring. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49698">49698</a>: Allow a listener to complete an asynchronous request

+        if it times out. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49714">49714</a>: The annotation process of Jar doesn't influence

+        distributable element of web.xml. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49721">49721</a>: Alls JAR in a web application should be searched for

+        resources, not just those with a web-fragment.xml that is going to be

+        processed. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49728">49728</a>: Improve PID file handling when another process is

+        managing the PID file and Tomcat does not have write access. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49730">49730</a>: Fix a race condition in StandardThreadExector that can

+        cause requests to experience large delays. Patch provided by Sylvain

+        Laurent. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49749">49749</a>: Single sign on cookies should have httpOnly flag set

+        using same rules as session cookies. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49750">49750</a>: Align <code>WebappClassLoader.validate()</code>

+        implementation with Javadoc and ensure that <code>javax.servlet.*</code>

+        classes can not be loaded by a <code>WebappClassLoader</code> instance.

+        Patch provided by pid. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49757">49757</a>: Correct some generics warnings. Based on a patch

+        provided by G&aacute;bor. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49779">49779</a>: Improve handling of POST requests and FORM

+        authentication, particularly when the user agent responds to the 302

+        response by repeating the POST request including a request body. Any

+        request body provided at this point is now swallowed. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        CSRF prevention filter did not correctly handle URLs that used anchors.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix memory leak on web application stopped caused by failed to

+        de-register the web application's Servlets with the MBean server.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        More tweaks to the Lifecycle refactoring to ensure that when a component

+        is being destroyed, the destroy method is only called once on each

+        child component. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Keep the MBean names for web applications consistent between Tomcat 6

+        and Tomcat 7. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49856">49856</a>: Add an executorName attribute to Connectors so it is

+        possible to trace ThreadPool to Connector to Executor via the JMX

+        interface. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49865">49865</a>: Tomcat failed to start if catalina.properties was not

+        present. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49876">49876</a>: Fix the generics warnings in the copied Apache Jakarta

+        BCEL code. Based on a patch by G&aacute;bor. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49883">49883</a>: Ensure that the CombinedRealm and LockOutRealm return

+        a name for use in log messages rather than throwing an

+        <code>UnsupportedOperationException</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49884">49884</a>: Fix occasional NullPointerException on async

+        complete(). This resulted in a major refactoring of the async

+        implementation to address a number of threading issues. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Update the version numbers in ServerInfo defaults to Tomcat 7.0.x.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49892">49892</a>: Correct JNDI name for method resource injections.

+        Based on a patch by Gurkan Erdogdu. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that Context elements defined in server.xml use any configClass

+        setting specified in the parent Host element. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        GSOC 2010. Enable the creation of Services, Engines, Connectors, Hosts

+        and Contexts via JMX from a minimal server.xml that contains only a

+        Server element. Based on a patch by Chamith Buddhika. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49909">49909</a>: Fix a regression introduced with the fix for

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=47950">47950</a> that prevented JSTL classes being loaded. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49915">49915</a>: Make error more obvious, particularly when accessed

+        via JConsole, if StandardServer.storeConfig() is called when there is

+        no StoreConfig implementation present. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50018">50018</a>: Fix some minor Javadoc errors in Jasper source.

+        Based on a patch by sebb. (timw)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50021">50021</a>: Correct a regression in the fix for <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=46844">46844</a>

+        that may have caused additional problems during a failure at start up.

+        (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50026">50026</a>: Prevent serving of resources from WEB-INF and

+        META-INF directories when DefaultServlet or WebdavServlet is mapped

+        to a sub-path of the context. This changes DefaultServlet to always

+        serve resources with paths relative to the root of the context

+        regardless of where it is mapped, which is a breaking change for

+        current servlet-mappings that map the default servlet to a subpath.

+        (timw)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=50689">50689</a>: Provide 100 Continue responses at appropriate points

+        during FORM authentication if client indicates that they are expected.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.3 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.3_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Wait for the connectors to exit before closing them down. (mturk)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Follow up to <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=48545">48545</a>. Make JSSE connectors more tolerant of a

+        incorrect trust store password. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix some edge cases in the NIO connector when handling requests that are

+        not received all at the same time and the socket needs to be returned to

+        the poller. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Further work to reduce the code duplication in the HTTP connectors.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Make sure acceptor threads are stopped when the connector is stopped.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Make sure async timeout thread is stopped when the connector is stopped.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49625">49625</a>: Ensure Vary header is set if response may be

+        compressed rather than only setting it if it is compressed. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49802">49802</a>: Re-factor connector pause, stop and destroy methods so

+        that calling any of those methods has the expected results. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Various refactorings to reduce code duplication and unnecessary code in

+        the connectors. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49860">49860</a>: Add partial support for trailing headers in chunked

+        HTTP requests. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.3 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.3_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49665">49665</a>: Provide better information including JSP file name and

+        location when a missing file is detected during TLD handling. Patch

+        provided by Ted Leung. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49726">49726</a>: Specifying a default content type via a JSP property

+        group should not prevent a page from setting some other content type.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49799">49799</a>: The new <code>omit</code> attribute for

+        <code>jsp:attribute</code> elements now supports the use of expressions

+        and expression language. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49916">49916</a>: Switch to using an initialisation parameter to pass

+        JSP file information from Catalina to Jasper. This simplifies the

+        Catalina code as well as making it easier for Geronimo and others to

+        integrate Jasper. Patch provided by David Jencks. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49985">49985</a>: Fix thread safety issue in EL parser. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.3 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.3_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Remove domainReplication attribute from ClusterManager.

+        If you send session to only same domain, use DomainFilterInterceptor.

+        (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add Null check when CHANGE_SESSION_ID message received. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add support for LAST_ACCESS_AT_START system property to DeltaSession.

+        (kfujino)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

         Avoid a NPE in the DeltaManager when a parallel request invalidates the

@@ -1961,4294 +12739,629 @@
         message. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48925">48925</a>: <code>request.getLocalAddr()</code> returns

-        <code>null</code> when using the default Jk AJP/1.3 connector. (rjung)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49905">49905</a>: Prevent memory leak when using asynchronous session

+        replication. (markt) 

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49497">49497</a>: Stop accepting new requests (inc keep-alive) once the

-        BIO connector is paused and the current request has finished processing.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49521">49521</a>: Disable scanning for a free port in Jk AJP/1.3

-        connector by default. Do not change <code>maxPort</code> field value of ChannelSocket

-        in its <code>setPort()</code> and <code>init()</code> methods. Add

-        support for <code>maxPort</code> attribute on a <code>Connector</code>

-        element as a synonym for <code>channelSocket.maxPort</code>. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49625">49625</a>: Ensure Vary header is set if response may be

-        compressed rather than only setting it if it is compressed. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49730">49730</a>: Fix race condition in StandardThreadExecutor that can

-        lead to long delays in processing requests. Patch provided by Sylvain

-        Laurent. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49860">49860</a>: Add support for trailing headers in chunked HTTP

-        requests. The header length is limited to 8192 by default and the limit

-        can be changed via a system property. (markt/kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49972">49972</a>: Fix potential thread safe issue when formatting dates

-        for use in HTTP headers. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50072">50072</a>: NIO connector can mis-read request line if not sent in

-        a single packet. (markt/kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Improve recycling of processors in Http11NioProtocol. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50273">50273</a>: Provide a workaround for an HP-UX issue that can

-        result in large numbers of SEVERE log messages appearing in the logs as

-        a result of normal operation. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Make SSL certificate encoding algorithm consistent between connectors by

-        using the JVM default for all connectors. This also fixes an issue with

-        the NIO connector on IBM JVMs. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50467">50467</a>: Protected against NPE triggered by a race condition

-        that causes the NIO poller to fail, preventing the processing of further

-        requests. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.30 (jfclere)/Jasper"><!--()--></a><a name="Tomcat_6.0.30_(jfclere)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49217">49217</a>: Ensure that identifiers used in EL meet the

-        requirements of the Java Language Specification. This check is off by

-        default and can be enabled by setting a system property. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49555">49555</a>: Correctly handled Tag Libraries where functions are

-        defined in static inner classes. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49665">49665</a>: Provide better information including JSP file name and

-        location when a missing file is detected during TLD handling. Patch

-        provided by Ted Leung. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49985">49985</a>: Fix thread safety issue in EL parser. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49986">49986</a>: Fix thread safety issue in JSP reloading. (timw))

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49998">49998</a>: Make jsp:root detection work with single quoted

-        attributes as well. (timw)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50066">50066</a>: Compile a recursive tag file if it depends on a JAR.

-        Patch provided by Sylvain Laurent. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50078">50078</a>: Fix threading issues in EL caches and make cache sizes

-        configurable. Threading patch provided by Takayoshi Kimura. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50105">50105</a>: When processing composite EL expressions use

-        <code>Enum.name()</code> rather than <code>Enum.toString()</code> as

-        required by the EL specification. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50228">50228</a>: Improve recycling of <code>BodyContentImpl</code>.

-        This avoids keeping a cached reference to a webapp-provided Writer

-        used in JspFragment.invoke() calls. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50460">50460</a>: Fix memory leak in JspDocumentParser triggered by

-        first access to a jspx page. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50500">50500</a>: Use correct coercions (as per the EL spec) for

-        arithmetic operations involving string values containing '.',

-        'e' or 'E'. Based on a patch by Brian Weisleder.

-        (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.30 (jfclere)/Cluster"><!--()--></a><a name="Tomcat_6.0.30_(jfclere)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49343">49343</a>: When ChannelException is thrown, remove listener from

-        channel. (kfujino)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Add Null check when CHANGE_SESSION_ID message received. (kfujino)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        When a cluster node disappears when using the backup manager, handle the

-        failed ping message rather than propagating the exception (which just

-        logs the stack trace but doesn't do anything to deal with the failure).

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49905">49905</a>: Fix potential memory leak when using asynchronous

-        session replication. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49924">49924</a>: When non-primary node changes into a primary node,

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49924">49924</a>: When non-primary node changes into a primary node,

         make sure isPrimarySession is changed to true. (kfujino)

       </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Add support for <code>maxActiveSessions</code> attribute to

-        BackupManager. (kfujino)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Improve sending an access message in DeltaManager.

-        Use <code>maxInactiveInterval</code> not of the Manager, but of the session. 

-        If <code>maxInactiveInterval</code> is negative, the access message is not

-        being sent. (kfujino)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50547">50547</a>: Add time stamp for CHANGE_SESSION_ID message and 

-        SESSION_EXPIRED message. (kfujino)

-      </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.30 (jfclere)/Web applications"><!--()--></a><a name="Tomcat_6.0.30_(jfclere)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.3 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.3_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49585">49585</a>: Update JSVC documentation to reflect new packaging

+        Correct the class name of the default JAR scanner in the documentation

+        web application. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49585">49585</a>: Update JSVC documentation to reflect new packaging

         of Commons Daemon. (markt)

       </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Configure the Manager web application to use the new CSRF protection. To

-        take advantage of this protection, the <code>manager</code> role must be

-        removed from all users and the new <code>manager-gui</code> and

-        <code>manager-script</code> roles used instead. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Configure the Host Manager web application to use the new CSRF

-        protection. To take advantage of this protection, the <code>admin</code> role

-        must be removed from all users and the new <code>admin-gui</code> and

-        <code>admin-script</code> roles used instead. (markt)

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update the Servlet, JSP and EL Javadoc links to link to the

+        specifications and the relevant part of the Java EE 6 Javadoc. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50303">50303</a>: Update JNDI how-to to reflect new JavaMail and JAF

-        download locations and that JAF is now included in Java SE 6. (markt) 

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        CVE-2010-4172: Multiple XSS in Manager application. (markt/kkolinko)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Improve Tomcat Logging documentation. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50242">50242</a>: Provide a sample log4j  configuration that more

-        closely matches the default JULI configuration. Patch provided by

-        Christopher Schultz. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50294">50294</a>: Add more information to documentation regarding format

-        of configuration files. Patch provided by Luke Meyer. (markt) 

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Configure the Manager and Host-Manager web applications to use HttpOnly

-        flag for their session cookies. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50316">50316</a>: Fix display of negative values in the Manager web

-        application. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Improve documentation of database connection factory. (rjung)

+        Update a few places in the docs where the Manager documentation referred

+        to the old role name of manager rather than than the new manager-script.

+        (markt)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.30 (jfclere)/Other"><!--()--></a><a name="Tomcat_6.0.30_(jfclere)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.3 (markt)/Extras"><!--()--></a><a name="Tomcat_7.0.3_(markt)/Extras"><strong>Extras</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49861">49861</a>: Don't log RMI ports formatted with commas for the

+        JMX remote listener. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.3 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.3_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct the user names created by the Windows installer for the Manager

+        and Host Manager applications. (mturk)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct the Eclipse compiler dependency in the Jasper POM. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Extend Checkstyle validation checks to check import order. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49758">49758</a>: Fix generics warnings exposed by a fix in Eclipse 3.6.

+        Patch provided by sebb. (markt)

+      </td></tr>

       <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48716">48716</a>: Do not call reset if the default LogManager is in use.

+        Update Apache Commons Pool to 1.5.5. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49955">49955</a>: Improvement and correction of Building Tomcat guide.

+        Based on a patch from Wesley Acheson. (timw)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49993">49993</a>: Improve check for <code>JAVA_HOME</code> and add

+        support for <code>JRE_HOME</code> in <code>service.bat</code>. (mturk)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.2 (markt)"><!--()--></a><a name="Tomcat_7.0.2_(markt)"><strong>Tomcat 7.0.2 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>beta, 2010-08-11</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.2 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.2_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix regression that prevented running with a security manager enabled.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.2 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.2_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct Javadoc errors. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Provide Javadoc for Servlet 3.0 API, JSP 2.2 API and EL 2.2 API.

         (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Use native line endings for example Eclipse configuration files in

-        source distribution. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49428">49428</a>: Add a work-around for the known namespace issues for

-        some Microsoft WebDAV clients. Based on the patch provided by

-        Panagiotis Astithas. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49861">49861</a>: Fix formatting of log messages in JXM remote listener.

-        Do not use commas when printing RMI port numbers. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50140">50140</a>: Don't ignore a user specified install directory

-        on 64-bit platforms when using the Windows installer. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50552">50552</a>: Avoid NPE that hides error message when using Ant

-        tasks. (schultz)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Numerous improvements to the Windows installer: update install/uninstall

-        icons, create an installation log, allow 32-bit JVMs to be selected when

-        installing on a 64-bit platform, replace the .ini files with the script

-        equivalents, use the new manager and host-manager roles, provide the

-        ability to edit the roles for the added user, add support for the

-        <code>/?</code> command line switch, clean up fully after installation,

-        add DetailPrint statements for operations that may take time and

-        improve the descriptions of the components. (kkolinko, mturk, markt)

+        Remove second copy of RUNNING.txt from the full-docs distribution. Some

+        unpacking utilities can't handle multiple copies of a file with the same

+        name in a directory. (markt)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.29 (jfclere)"><!--()--></a><a name="Tomcat_6.0.29_(jfclere)"><strong>Tomcat 6.0.29 (jfclere)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2010-07-22</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.29 (jfclere)/Catalina"><!--()--></a><a name="Tomcat_6.0.29_(jfclere)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.2 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.2_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48960">48960</a>: Add a new option to the SSI Servlet and SSI Filter to

+        Extend Checkstyle validation checks to check for tabs in nearly all text

+        files. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update Apache Commons Daemon from 1.0.2 to 1.0.3. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update Eclipse JDT Core Batch Compiler (ecj.jar) from 3.5.1 to 3.6.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.1 (markt)"><!--()--></a><a name="Tomcat_7.0.1_(markt)"><strong>Tomcat 7.0.1 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.1 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.1_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        GSOC 2010. Continue work to align MBean descriptors with reality. Patch

+        provided by Chamith Buddhika. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When running under a security manager, enforce package access and

+        package definition restrictions defined in the catalina.properties file.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When using a Loader configured with

+        <code>searchExternalFirst="true"</code> failure to find the

+        class in an external repository should not prevent searching of the

+        local repositories. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add entryPoint support to the CSRF prevention filter. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=48297">48297</a>: Correctly initialise handler chain for web services

+        resources. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=48960">48960</a>: Add a new option to the SSI Servlet and SSI Filter to

         allow the disabling of the <code>exec</code> command. This is now

         disabled by default. Based on a patch by Yair Lenga. (markt)

       </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49551">49551</a>: Allow default context.xml location to be specified

-        using an absolute path. (markt)

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=48998">48998</a>, <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49617">49617</a>: Add the ExpiresFilter, a port of the

+        httpd mod_expires module. Patch provided by Cyrille Le Clerc. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49598">49598</a>: When session is changed and the session cookie is

-        replaced, ensure that the new Set-Cookie header overwrites the old

-        Set-Cookie header. (markt)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49030">49030</a>: When initializing/starting/stopping connectors and

+        one of them fails, do not ignore the others. (markt/kkolinko)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix order when listing Webapp loader search URLs. (rjung)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49128">49128</a>: Don't swallow exceptions unnecessarily in

+        <code>WebappClassLoader.start()</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49182">49182</a>: Align comments in setclasspath.[sh|bat] with

+        behaviour. Based on a patch provided by sebb. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49230">49230</a>: Enhance JRE leak prevention listener with protection

+        for the keep-alive thread started by

+        <code>sun.net.www.http.HttpClient</code>. Based on a patch provided by

+        Rob Kooper. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49414">49414</a>: When reporting threads that may have triggered a

+        memory leak on web application stop, attempt to differentiate between

+        request processing threads and threads started by the application.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49428">49428</a>: Add a work-around for the known namespace issues for

+        some Microsoft WebDAV clients. Patch provided by Panagiotis Astithas.

+        (markt)

       </td></tr>

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

         Add support for <code>*.jar</code> pattern in VirtualWebappLoader.

         (kkolinko)

       </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.28 (jfclere)"><!--()--></a><a name="Tomcat_6.0.28_(jfclere)"><strong>Tomcat 6.0.28 (jfclere)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2010-07-09</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.28 (jfclere)/Catalina"><!--()--></a><a name="Tomcat_6.0.28_(jfclere)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>Arrange filter logic. (jfclere)

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Use a LockOutRealm in the default configuration to prevent attempts to

+        guess user passwords by brute-force. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49478">49478</a>: Add support for user specified character sets to the

+        <code>AddDefaultCharsetFilter</code>. Based on a patch by Felix

+        Schumacher. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49230">49230</a>: Enhance JRE leak prevention listener with protection

-        for the keep-alive thread started by

-        <code>sun.net.www.http.HttpClient</code>. Patch provided by Rob Kooper.

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49503">49503</a>: Make sure connectors bind to their associated ports

+        sufficiently early to allow jsvc and the

+        org.apache.catalina.startup.EXIT_ON_INIT_FAILURE system property to

+        operate correctly. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49525">49525</a>: Ensure cookies for the ROOT context have a path of /

+        rather than an empty string. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49528">49528</a>, <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49567">49567</a>: Ensure that

+        <code>AsyncContext.isAsyncStarted()</code> returns the correct value

+        after <code>AsyncContext.start()</code> and that if

+        <code>AsyncContext.complete()</code> is called on a separate thread that

+        it is handled correctly. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49530">49530</a>: Contexts and Servlets not stopped when Tomcat is shut

+        down. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49536">49536</a>: If no ROOT context is deployed, ensure a 404 rather

+        than a 200 is returned for requests that don't map to any other context.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Additional debug logging in StandardContext to provide information on

+        Manager selection. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49550">49550</a>: Suppress deprecation warning where deprecated code is

+        required to be used. No functional change. Patch provided by Sebb.

         (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49351">49351</a>: Fix possible NPE when embedding and no name is

-        specified for the Service. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49424">49424</a>: Avoid NPE if client provides no data with a chunked

-        POST request. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49414">49414</a>: Improve diagnostic of memory leaks.

-        Differentiate between request threads and application

-        created threads when warning about still running threads when an

-        application stops. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49443">49443</a>: Fix RemoteIpValve documentation. Use remoteIpHeader

-        rather than remoteIPHeader consistently. (markt)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49551">49551</a>: Allow default context.xml location to be specified

+        using an absolute path. (markt)

       </td></tr>

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Add property <code>searchExternalFirst</code> to WebappLoader.

-        If set, the external repositories will be searched before

-        the WEB-INF ones. (rjung)

+        Improve logging of unhandled exceptions in servlets by including the

+        path of the context where the error occurred. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Include session ID in error message logged when trying to set an

+        attribute on an invalid session. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve the CSRF protection filter by using SecureRandom rather than

+        Random to generate nonces. Also make the implementation class used user

+        configurable. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Avoid NullPointerException, when copyXML=true and META-INF/context.xml

+        does not exist. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49598">49598</a>: When session is changed and the session cookie is

+        replaced, ensure that the new Set-Cookie header overwrites the old

+        Set-Cookie header. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Create a thread to trigger asynchronous timeouts when using the BIO

+        connector, change the default timeout to 10s (was infinite) and make the

+        default timeout configurable using the <code>asyncTimeout</code>

+        attribute on the connector. (pero/markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49600">49600</a>: Make exceptions returned by the

+        <code>ProxyDirContext</code> consistent for resources that weren't found

+        by checking the <code>DirContext</code> or the cache. Test case based on

+        a patch provided by Marc Guillemot. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49613">49613</a>: Improve performance when using SSL for applications

+        that make multiple class to <code>Request.getAttributeNames()</code>.

+        Patch provided by Sampo Savolainen. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Handle the edge cases where resources packaged in JARs have names that

+        start with a single quote character or a double quote character. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct copy and paste typo in web.xml parsing rules that mixed up

+        <code>local-ejb-ref</code> and <code>resource-env-ref</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Refactor session managers to remove unused code and to reduce code

+        duplication. Also, all session managers used for session replication now

+        extend <code>org.apache.catalina.ha.session.ClusterManagerBase</code>.

+        (markt)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.28 (jfclere)/Cluster"><!--()--></a><a name="Tomcat_6.0.28_(jfclere)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.1 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.1_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Remove references to Jikes since it does not support Java 6. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct over zealous type checking for EL in attributes that broke the

+        use of JSF converters. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct algorithm used to identify correct method to use when a

+        MethodExpressions is used in EL. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49217">49217</a>: Ensure that identifiers used in EL meet the

+        requirements of the Java Language Specification. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Improve logging of JSP exceptions by including JSP snippet (if enabled)

+        rather than just the root cause in the host log. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49555">49555</a>: Correctly handled Tag Libraries where functions are

+        defined in static inner classes. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.1 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.1_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49445">49445</a>: When session ID is changed after authentication,

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49127">49127</a>: Don't swallow exceptions unnecessarily in

+        <code>SimpleTcpReplicationManager.startInternal()</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49407">49407</a>: Change the BackupManager so it is consistent with

+        DeltaManager and reports both primary and backup sessions when active

+        sessions are requested. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49445">49445</a>: When session ID is changed after authentication,

         ensure the DeltaManager replicates the change in ID to the other nodes

         in the cluster. (kfujino)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.28 (jfclere)/Web applications"><!--()--></a><a name="Tomcat_6.0.28_(jfclere)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.1 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.1_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49213">49213</a>: Grant permissions required by manager application when

-        running under a security manager. (markt/kkolinko)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49112">49112</a>: Update the ROOT web application's index page. Patch

+        provided by pid. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49436">49436</a>: Correct documented default for <code>readonly</code>

-        attribute of the UserDatabase component. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.27 (jfclere)"><!--()--></a><a name="Tomcat_6.0.27_(jfclere)"><strong>Tomcat 6.0.27 (jfclere)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.27 (jfclere)/General"><!--()--></a><a name="Tomcat_6.0.27_(jfclere)/General"><strong>General</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update DBCP to 1.3. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.27 (jfclere)/Catalina"><!--()--></a><a name="Tomcat_6.0.27_(jfclere)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix CVE-2010-1157. Prevent possible disclosure of host name or IP

-        address via the HTTP WWW-Authenticate header when using BASIC or DIGEST

-        authentication. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Include context name when reporting memory leaks to aid root cause

-        identification. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Improve exception handling on session de-serialization to assist in

-        identifying the root cause of <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48007">48007</a>. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48379">48379</a>: Make session cookie name, domain and path configurable

-        per context. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48589">48589</a>: Make JNDIRealm easier to extend. Based on a patch by

-        Candid Dauth. (markt/kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48629">48629</a>: Allow user names as well as DNs to be used with the

-        nested role search. Add roleNested to the documentation. Patch provided

-        by Felix Schumacher. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48661">48661</a>: Make error page behavior consistent, regardless of how

-        the error page is defined. If a response has been committed, always

-        include the error page. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48729">48729</a>: Return roles defined by both userRoleName and roleName

-        mechanisms. Patch provided by 'eric'. Also make user's role list

-        immutable.(markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48760">48760</a>: Fix potential multi-threading issue in static resource

-        serving where multiple threads could try to use the the same

-        InputStream. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48790">48790</a>: Fix thread safety issue in the count of the maximum

-        number of active session. (markt/kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48793">48793</a>: Make catalina.sh more robust to different return

-        values on different platforms. Patch provided by Thomas GL. (markt)

-      </td></tr>

-       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48840">48840</a>: Swallow output (if any) from use of cd when determining

-        $CATALINA_HOME in catalina.sh and tool-wrapper.sh scripts. Based on patch

-        provided by mdietze. (markt/kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48895">48895</a>: Make clearing of ThreadLocals that are causing memory

-        leaks on web application stop, reload or undeploy configurable since the

-        process of clearing them is not thread-safe. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48903">48903</a>: Fix deadlock in webapp class loader. (rjung)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48971">48971</a>: Make stopping of leaking Timer threads optional and

-        disabled by default. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48976">48976</a>: Document JAVA_ENDORSED_DIRS in start-up scripts. Patch

-        provided by Laurent Vaills. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48983">48983</a>: Improve debug logging for situations when

-        <code>RemoteIpValve</code> is bypassed. Patch provided by Cyrille Le

-        Clerc. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49018">49018</a>: Fix processing of time argument in the Expire sessions

-        action in the Manager web application. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49116">49116</a>: If session is already invalid, expire session to

-        prevent memory leak. (kfujino)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49158">49158</a>: Ensure only one session cookie is returned for a

-        single request. (markt/fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49245">49245</a>: Fix session expiration check in cross-context

-        requests. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49398">49398</a>: ByteChunk.indexOf(String, int, int, int) could not

-        find a string of length 1. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix possible overflows when calculating session statistics. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Log unexpected exceptions when providing access to web application

-        resources in ApplicationContext. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Improve exception handling in CatalinaShutdownHook. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Expose properties of VirtualWebappLoader and WebappClassLoader via JMX.

-        (rjung)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.27 (jfclere)/Coyote"><!--()--></a><a name="Tomcat_6.0.27_(jfclere)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48839">48839</a>: Correctly handle HTTP header folding in the NIO

-        connector. Patch suggested by Richa Baronia. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48843">48843</a>: Prevent possible deadlock for worker allocation in

-        connectors. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48843">48843</a>: Fix handling of add queues in AprEndpoint.Poller and

-        AprEndpoint.Sendfile. Do not miss wakeups. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48862">48862</a>: Add support for the backlog parameter to the AJP

-        connector. (pero/markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48917">48917</a>: Correct name of mod_jk module in ApacheConfig. Patch

-        provided by Todd Hicks. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49095">49095</a>: AprEndpoint did not wakeup acceptors during shutdown

-        when deferAccept option was enabled. Based on a patch provided by

-        Ruediger Pluem. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Use chunked encoding for http 1.1 requests with no content-length

-        (regardless of keep-alive) so client can differentiate between complete

-        and partial responses. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Correct the SSL session timeout attribute name so the code agrees with

-        the documentation. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        CoyotePrincipal now implements Serializable. (fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Enable the BIO AJP connector to run under a security manager. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.27 (jfclere)/Jasper"><!--()--></a><a name="Tomcat_6.0.27_(jfclere)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45015">45015</a>: Correct a regression in quote handling caused by the

-        re-factoring of attribute parsing. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48701">48701</a>: Add a system property to allow disabling enforcement

-        of JSP.5.3. The specification recommends, but does not require, this

-        enforcement. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48737">48737</a>: Don't assume paths that start with /META-INF/... are

-        always in JARs. This is not true for some IDEs. Patch provided by

-        Fabrizio Giustina. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49081">49081</a>: Correctly handle EL expressions of the form #${...}.

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49213">49213</a>: Add the permissions necessary to enable the Manager

+        application to operate currently when running with a security manager.

         (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49196">49196</a>: Avoid NullPointerException in PageContext.getErrorData()

-        if an error-handling JSP page is called directly. (markt)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49436">49436</a>: Correct documented default for readonly attribute of

+        the UserDatabase component. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49475">49475</a>: Use new role name for manager application access on

+        the ROOT web application's index page. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49476">49476</a>: CSRF protection was preventing access to the session

+        expiration features. Also switch the manager application to the generic

+        CSRF protection filter. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Better handle failure to create directories required for new hosts in

+        the Host Manager application. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Switch the Host Manager application to the generic CSRF protection for

+        the HTML interface and prevent started hosts from being started and

+        stopped hosts from being stopped. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49518">49518</a>: Fix typo in extras documentation. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49522">49522</a>: Fix regression due to change of name for MBeans for

+        naming resources that broke the complete server status page in the

+        manager application. Note these MBeans now have a new name. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49570">49570</a>: When using the example compression filter, set the

+        Vary header on compressed responses. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add redirects for the root of the manager and host-manager web

+        applications that redirect users to the html interface rather than

+        returning a 404. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Provide the HTML Manager application with the ability to differentiate

+        between primary, backup and proxy sessions. Note that proxy sessions are

+        only shown if enabled in web.xml. (markt)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.27 (jfclere)/Cluster"><!--()--></a><a name="Tomcat_6.0.27_(jfclere)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.1 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.1_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48717">48717</a>: When a node joins a cluster and it receives all the

-        current sessions, ensure the sessionCreated event is fired if the

-        Manager is configured to replicate session events. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48934">48934</a>: Previous fix to handle dropped connections incorrectly

-        permanently disabled session replication. (fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49051">49051</a>: memberAlive is not called if member has not already

-        existed in membership. (kfujino)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49151">49151</a>: Avoid ClassCastException in BackupManager#stop.

-        (kfujino)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49170">49170</a>: Do not send duplicated session. (kfujino)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Add missing messages and ensure cluster listeners log messages to

-        correct logger. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.27 (jfclere)/Web applications"><!--()--></a><a name="Tomcat_6.0.27_(jfclere)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Use underscores instead of spaces in anchor names in Tomcat

-        documentation. (kkolinko)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49130">49130</a>: Better describe the core package in the Windows

+        installer, making it clear that the service will be installed. Patch

+        provided by sebb. (markt)

       </td></tr>

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Add support for displaying the Spring Security user name (if present) in

-        the Manager application. (markt)

+        Re-factor unit tests to enable them to be run once with each of the HTTP

+        connector implementations (BIO, NIO and APR/native). (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=49268">49268</a>: Add the necessary plumbing to include CheckStyle in

+        the build process. Start with no checks. Additional checks will be

+        added as they are agreed. (markt)

       </td></tr>

       <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Improve the ChatServlet <a href="aio.html">Comet</a> example

-        (/examples/jsp/chat/). (kkolinko)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.27 (jfclere)/Other"><!--()--></a><a name="Tomcat_6.0.27_(jfclere)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>Update to Commons Daemon 1.0.2. Use service launcher (procrun)

-      from the Commons Daemon release. Do not keep a copy of it in our source

-      tree. (mturk/kkolinko)</td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update to NSIS 2.46. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48990">48990</a>: Fix the <code>skip.installer</code> build property

-        so if set, only the Windows installer is skipped. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49178">49178</a>: Provide in catalina.policy an example of additional

-        permissions that might be needed for code located in

-        <code>$CATALINA_BASE/lib</code>. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49236">49236</a>: Do not use indexing when packing Tomcat JARs.

-        (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Remove unused code from org.apache.tomcat.util.buf classes. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Rearrange tomcat-juli.jar permissions and wrap long lines in the

-        <code>conf/catalina.policy</code> file, to make the text more readable

-        when cited in documentation. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Do not evaluate the <code>execute.installer</code> property when building

-        a release. The <code>skip.installer</code> property is used instead.

-        (kkolinko)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.26 (jfclere)"><!--()--></a><a name="Tomcat_6.0.26_(jfclere)"><strong>Tomcat 6.0.26 (jfclere)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2010-03-11</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.26 (jfclere)/Catalina"><!--()--></a><a name="Tomcat_6.0.26_(jfclere)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Close security hole in unreleased 6.0.25 by ensuring new find leaks

-        functionality is protected by a security constraint. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48831">48831</a>: Improve logging shutdown behaviour. Use Catalina's

-        shutdown hook to shutdown JULI. This enables them to be shutdown in the

-        correct order. Do not shutdown global handlers several times.

-        (markt/kkolinko)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.26 (jfclere)/Coyote"><!--()--></a><a name="Tomcat_6.0.26_(jfclere)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48584">48584</a>: Prevent the APR connector logging an error if the

-        acceptor fails during shutdown since this is expected. (mturk)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48660">48660</a>: Using compression should not overwrite any Vary header

-        set by a web application. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.26 (jfclere)/Jasper"><!--()--></a><a name="Tomcat_6.0.26_(jfclere)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48371">48371</a>: Ensure generated servlet mappings are inserted at the

-        correct location when using JspC and allow the option that controls this

-        to be configured on the command line. Also allow the encoding of web.xml

-        to be configured when using JspC and deprecate some unused JspC methods.

-        (markt/kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48498">48498</a>: Avoid ArrayIndexOutOfBoundsException triggered by a

-        Java 6/7 XML parser bug. (markt/kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48668">48668</a>: Additional fixes to ensure deferred syntax is handled

-        correctly. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48827">48827</a>: Correct a regression in the fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47977">47977</a>

-        that caused an incorrect non-empty body error to be reported for valid

-        JSP documents. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.26 (jfclere)/Web applications"><!--()--></a><a name="Tomcat_6.0.26_(jfclere)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Make changelog.xml be directly rendered as HTML by certain browsers.

-        (kkolinko)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Add support for automated generation of TOC tables and for links to svn

-        revisions to tomcat-docs.xsl in documentation. (kkolinko/fhanik)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Move Manager application JSPs that are not intended to be accessed

-        directly under the WEB-INF directory. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Improve the messages displayed by the find leaks diagnostic in the

-        Manager application. (kkolinko)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.26 (jfclere)/Other"><!--()--></a><a name="Tomcat_6.0.26_(jfclere)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Encode all property files using ascii escaped UTF-8. Also fixes

-        deployment problem when using French locale. (jfclere/rjung)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.25 (jfclere)"><!--()--></a><a name="Tomcat_6.0.25_(jfclere)"><strong>Tomcat 6.0.25 (jfclere)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.25 (jfclere)/Catalina"><!--()--></a><a name="Tomcat_6.0.25_(jfclere)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48039">48039</a>: Return immediately if start() is called on an already

-        started StandardService. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48109">48109</a>: Ensure InputStream is closed on error condition in web

-        application class loader. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48179">48179</a>: Clean up dead code that was used to read tldCache

-        file. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48318">48318</a>: Handle case where WebDAV resource is in directory

-        listing but is not accessible. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48384">48384</a>: Add a per context xslt option for directory listings.

-        Make the fallback options work as described in the documentation.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48577">48577</a>: Filter URL when displaying missing included page.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48612">48612</a>: Prevent exception on shutdown if the address attribute

-        is specified for a connector. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48613">48613</a>: Further fixes to ensure APRLifecycleListener is only

-        used if defined in server.xml. (fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48614">48614</a>: Correct JULI log file buffering so default behaviour

-        is no buffering. (fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48625">48625</a>: Provide an option to exit if an error occurs during

-        the initialization phase. (fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48645">48645</a>: Use specified encoding rather than null in calls to

-        <code>RequestUtil.URLDecode(byte[] bytes, String enc)</code> (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48653">48653</a>: Force request.secure and request.scheme to

-        <code>false</code> and <code>http</code> if the X-Forwarded-Proto header

-        has the value http. Patch provided by Cyrille Le Clerc. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48678">48678</a>: Remove duplicate server field from

-        <code>org.apache.catalina.startup.Catalina</code>. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48694">48694</a>: Remove potential deadlock in web application class

-        loader. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48716">48716</a>: Provide additional configuration options for JULI.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48726">48726</a>: Prevent OOME when uploading large WAR files with the

-        deployer. Patch provided by adam. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Improve memory leak protection by safely stopping threads started via

-        <code>java.util.Timer</code> that an application starts but fails to

-        stop and by clearing references retained due to the use of

-        <code>java.util.ResourceBundle</code>. (markt)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Modify ThreadLocal memory leak detection to not report false positives

-        and to simplify implementation. (markt/kkolinko)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Basic memory leak detection was added to the standard Host

-        implementation and exposed via JMX to detect memory leaks on web

-        application reload. (markt/kkolinko)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.25 (jfclere)/Coyote"><!--()--></a><a name="Tomcat_6.0.25_(jfclere)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update the native/APR library version bundled with Tomcat to 1.1.20.

-        (kkolinko)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.25 (jfclere)/Jasper"><!--()--></a><a name="Tomcat_6.0.25_(jfclere)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Add some debug logging to the compiler where exceptions were previously

-        swallowed. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48170">48170</a>: Remove unnecessary synchronization that is causing

-        issues under load. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48580">48580</a>: Prevent AccessControlException if first access is to a

-        JSP that uses a FunctionMapper. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48582">48582</a>: Avoid NPE on background compilation failure. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48616">48616</a>: Don't declare or synchronize scripting variables for

-        JSP fragments since they are scriptless. This is an alternative fix for

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42390">42390</a> that avoids both the original problem and the

-        regression in the first fix. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48627">48627</a>: Fix regression in re-factored EL parsing. Keep

-        literals as literals and handle deferredSyntaxAllowedAsLiteral.

-        (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48668">48668</a>: When parsing JSPs only parse EL as EL if EL is enabled

-        else strings such as ${ will be silently dropped. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Various EL TCK failures. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.25 (jfclere)/Cluster"><!--()--></a><a name="Tomcat_6.0.25_(jfclere)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Force a disconnect if an error occurs during replication such as

-        a firewall dropping the connection. (fhanik)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.25 (jfclere)/Web applications"><!--()--></a><a name="Tomcat_6.0.25_(jfclere)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Add new "Find leaks" command to the Manager application. It allows to

-        detect web applications that have caused memory leaks on stop,

-        reload or undeploy. (markt/kkolinko)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.25 (jfclere)/Other"><!--()--></a><a name="Tomcat_6.0.25_(jfclere)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Ensure files in conf directory have CRLF line endings when using the

-        Windows installer. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Allow special characters recognized by the Windows command-line shell to

-        be present in the names of CATALINA_HOME/_BASE and the current directory

-        used to call the Tomcat scripts. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Don't use @Deprecated annotations in

-        <code>javax.servlet.jsp.JspContext</code> since the specification does

-        not include them in the API definition. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Improve the information in the JAR manifest files. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.24 (jfclere)"><!--()--></a><a name="Tomcat_6.0.24_(jfclere)"><strong>Tomcat 6.0.24 (jfclere)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2010-01-21</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.24 (jfclere)/Catalina"><!--()--></a><a name="Tomcat_6.0.24_(jfclere)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Correct TCK failures with security manager caused by the original fix

-        for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47774">47774</a>. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.24 (jfclere)/Other"><!--()--></a><a name="Tomcat_6.0.24_(jfclere)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Remove broken link in README.html. (jfclere)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Add <code>.notice</code> files to the set of files that have their line

-        endings changed. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <code>.zip</code> distributions should have windows line endings.

-        (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.23 (jfclere)"><!--()--></a><a name="Tomcat_6.0.23_(jfclere)"><strong>Tomcat 6.0.23 (jfclere)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.23 (jfclere)/Catalina"><!--()--></a><a name="Tomcat_6.0.23_(jfclere)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47774">47774</a>: Ensure web application class loader is used when

-        calling session listeners. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48006">48006</a>: Add additional information to the optional

-        X-Powered-By header to align with the content suggested in the Servlet

-        specification. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48345">48345</a>: Sessions timed out too early when using

-        PersistentManager. Patch provided by Keiichi Fujino. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48398">48398</a>: Make objects used as locks final to ensure correct

-        operation. Patch provided by sebb. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48417">48417</a>: Update French translations. Patch provided by Andr&eacute;

-        Warnier. (markt/kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48421">48421</a>: Fix file descriptor and potential memory leak when a

-        web application uses a local logging.properties file. Allow a web

-        application's log files to be deleted once the web application has been

-        stopped. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48454">48454</a>: Ensure stderr is completely read before terminating

-        the CGI process. Patch provided by Markus Grieder. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48516">48516</a>: Prevent NPE in JNDIRealm if requested user does not

-        exist. Patch provided by Kevin Conaway. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix implementation of log buffer size and provide a cleaner interface.

-        (fhanik/kkolinko)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.23 (jfclere)/Coyote"><!--()--></a><a name="Tomcat_6.0.23_(jfclere)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update version of native bundled in Windows installer to 1.1.19. (mturk)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update recommended version for native to 1.1.19. (rjung)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48004">48004</a>: All web applications to set the http

-        <code>Server</code> header. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48470">48470</a>: Ensure Tomcat does not lock up if shut down under

-        load. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.23 (jfclere)/Jasper"><!--()--></a><a name="Tomcat_6.0.23_(jfclere)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

-  <table border="0" cellpadding="2" cellspacing="2">

-    <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47977">47977</a>: Using a body with a tag that has an empty body should

-      cause an error. (markt)

-    </td></tr>

-    <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-      <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48112">48112</a>: Correct handling of } character in literals when parsing

-      expressions. This also improves the fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47413">47413</a>. (markt)

-    </td></tr>

-  </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.23 (jfclere)/Web applications"><!--()--></a><a name="Tomcat_6.0.23_(jfclere)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48530">48530</a>: Add information on the Manager Server Status page to

-        the Manager How-To in the documentation webapp. Based on a patch by

-        Arnaud Espy. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48532">48532</a>: Add information to the BIO/NIO SSL configuration page

-        in the documentation web application to specify how the defaults for the

-        various trust store attributes are determined. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.23 (jfclere)/Other"><!--()--></a><a name="Tomcat_6.0.23_(jfclere)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Remove hard coded version numbers and instead apply version filter

-        already defined in ant scripts. (rjung)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47609">47609</a>: Correct regression in previous fix. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48464">48464</a>: Provide an option to specify the command window title

-        in catalina.bat on Windows. Patch provided by LiuYan. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Add some missing deprecation markers for

-        <code>javax.servlet.jsp.JspContext</code>. (markt/kkolinko)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.22 (jfclere)"><!--()--></a><a name="Tomcat_6.0.22_(jfclere)"><strong>Tomcat 6.0.22 (jfclere)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.22 (jfclere)/Catalina"><!--()--></a><a name="Tomcat_6.0.22_(jfclere)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Log errors if a web application starts a thread but fails to stop the

-        thread when the web application stops or is reloaded. Failure to stop a

-        thread is very likely to result in a memory leak. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Provide an option to stop any threads a web application starts but fails

-        to stop when the web application stops or is reloaded. Using this option

-        is very likely to result in instability and should be viewed as a last

-        resort in development and is not recommended at all in production.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Log errors if a web application creates a ThreadLocal but fails to clear

-        it when the web application stops or is reloaded. Failure to clear a

-        ThreadLocal is very likely to result in a memory leak. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Clear any unintentional references remaining in

-        <code>sun.rmi.transport.Target</code> when the web application stops or

-        is reloaded. Failure to clear these is very likely to result in a memory

-        leak. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.22 (jfclere)/Coyote"><!--()--></a><a name="Tomcat_6.0.22_(jfclere)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Remove unneeded line from the method that normalizes decodedURI.

-        (kkolinko)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.22 (jfclere)/Other"><!--()--></a><a name="Tomcat_6.0.22_(jfclere)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Correct MD5 generation in the build process. (jfclere/kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47609">47609</a>: Provide fail-safe EOL conversion for build process.

-        Based on patches by sebb/kkolinko. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.21 (jfclere)"><!--()--></a><a name="Tomcat_6.0.21_(jfclere)"><strong>Tomcat 6.0.21 (jfclere)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.21 (jfclere)/Catalina"><!--()--></a><a name="Tomcat_6.0.21_(jfclere)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix issues with expression language when running under a

-        SecurityManager. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Remove duplicate mime-mapping entries in web.xml. Re-order entries

-        alphabetically to make it easier to identify duplicates. (markt)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Use a more sensible default (webapps) for a Host's appBase.

-        (markt/idarwin)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=37794">37794</a>: Support the parsing of parameters from chunked POSTs.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=37984">37984</a>: Strip {MD5} as well as {SHA} if present in digest

-        passwords in LDAP directories. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=38352">38352</a>: Allow JSPs to write to the directory defined by

-        <code>javax.servlet.context.tempdir</code> when running under a security

-        manager. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=39231">39231</a>: Call LoginContext.logout() when using JAAS realm and

-        session expires. (markt/kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=40380">40380</a>: Fix potential synchronization issue in

-        StandardSession.expire(). (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41059">41059</a>: Reduce chances of errors when ENABLE_CLEAR_REFERENCES

-        is used. Patch provided by Curt Arnold. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43343">43343</a>: Fix additional concurrency issues identified with the

-        persistent session manager. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44041">44041</a>: Fix threading issue in WebappClassLoader that can lead

-        to duplicate class definition under high load. (markt/fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44943">44943</a>: Use the same engine name in server.xml comments to

-        reduce copy and pastes issues. (markt/kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45255">45255</a>: Provide protection against session fixation by

-        changing session ID automatically on authentication. (markt/kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45403">45403</a>: Add additional checks on web application deployment

-        and do not swallow IO errors. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45785">45785</a>: Additional fix required for the extension validator.

-        Based on a patch by Rolf Wojtech. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46908">46908</a>: Try and support java encoding names when using an xml

-        parser provided via the endorsed mechanism. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46967">46967</a>: Better handling of errors when trying to use

-        Manager.randomFile. Based on a patch by Kirk Wolf. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47046">47046</a>: Unregister all MBeans, including when non-default

-        engine names are used. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Use native2ascii to ensure non-ASCII characters in property files are

-        handled correctly in all circumstances. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47050">47050</a>: Remove unnecessary filtering of error messages.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47080">47080</a>: Fix NPE in RealmBase when uri is null. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47158">47158</a>: Fix some thread safety issues in the AccessLogValve.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47228">47228</a>: Correct French translations. Patch provided by sebb.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47299">47299</a>: Simplify code and make embedding easier. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47316">47316</a>: Allow different values for Service name and Engine

-        name. This corrects a regression introduced by the fix for

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42707">42707</a>. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47343">47343</a>: Editing context.xml for a directory should not delete

-        the directory. This was a regression caused by the fix for

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42747">42747</a>. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47364">47364</a>: Improve Javadoc for

-        org.apache.catalina.connector.Request.getAttributeNames() to include

-        information on the handling of Tomcat's internal request attributes.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47451">47451</a>: Don't throw an NPE if the various response.setHeader()

-        methods are called with null header name, zero length header name or

-        null value. Silently ignore the calls in the same way they are ignored

-        if the response has already been committed. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47462">47462</a>: Allow individual web applications to override metadata

-        complete if set in the global web.xml. Patch provided by Keiichi Fujino.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47495">47495</a>: Provide a more meaningful error message is server.xml

-        is not readable and exit immediately if a server cannot be created.

-        (funkman/kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47518">47518</a>: Correct reference in Valve Javadoc that referred to an

-        old method. Patch provided by Christopher Schultz. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47537">47537</a>: Return an error page rather than a zero length 200

-        response if the forward to the login or error page fails during FORM

-        authentication. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47718">47718</a>: Fix file descriptor leak on context stop/reload. Patch

-        provided by George Sexton. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47796">47796</a>: Fix OpenEJB integration. Reset annotation processor on

-        context stop. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47826">47826</a>: Correct error in debug message in

-        org.apache.catalina.Bootstrap (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47836">47836</a>: Clear cached TLD information on context reload.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47841">47841</a>: When using the CombinedRealm, if one of the nested

-        Realms fails to start, skip that Realm rather than preventing the

-        CombinedRealm from starting. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47881">47881</a>: Fix processing of startd and stopd arguments. Patch

-        provided by Qingyang Xu. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47918">47918</a>: Correct mbean descriptors for the host deployer. Patch

-        provided by Uwe G&uuml;nther. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47930">47930</a>: Fix thread safety issues on session swap-in in the

-        persistent session manager. (markt/kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47976">47976</a>: Correct usage message and Javadoc for

-        <code>org.apache.catalina.startup.Catalina</code>. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47997">47997</a>: Ensure the NamingContextListener applies to all naming

-        contexts, not just the global one. Patch provided by Michael Allman.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48049">48049</a>: Fix copy and paste error so

-        <code>NamingContext.destroySubContext()</code> works correctly.

-        Patch provided by gingyang.xu (markt)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48097">48097</a>: Make WebappClassLoader to do not swallow

-        AccessControlException. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48097">48097</a>: Avoid throwing an AccessControlException which can

-        lead to a NoClassDefFoundError on first access of first jsp.

-        (kkolinko/markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48257">48257</a>: Correct error in Spanish translations. Patch provided

-        by Guillermo Guti&eacute;rrez. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48306">48306</a>, <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48307">48307</a>: Correct French translations. Patches

-        provided by Marc Paquette. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48322">48322</a>: Single quote characters are not HTTP separators and

-        should not be treated as such in the cookie handling. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48413">48413</a>: Correct some French translations. Patch provided by

-        Andr&eacute; Warnier. (markt)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Deprecate the <code>caseSensitive</code> option on the

-        <code>StandardContext</code> which will be removed in Tomcat 7 onwards.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Log deployments consistently for WAR, directory and descriptor

-        deployments. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Better logging for parameter decoding issues to help identify broken

-        requests. (markt)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update Apache Commons Pool from 1.4 to 1.5.4. This update includes

-        various fixes to prevent deadlocks, reduces synchronization and makes

-        object allocation occur fairly - i.e. objects are allocated to threads

-        in the order that the threads request them. This update fixes a number

-        of issues in Tomcat's built-in copy of DBCP. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Allow log file encoding to be configured for JULI FileHandler. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Provide debug logging for JNDI lookups. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Correct JDBC driver de-registration on web application stop and fix NPE

-        that is exposed by the fix. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Ensure JDBC driver de-registration works with a security manager.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48214">48214</a>: Ensure JDBC driver de-registration is not too zealous.

+        Updated to Ant 1.8.1. The build now requires a minimum of Ant 1.8.x.

         (markt)

       </td></tr>

       <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Various JNDI realm improvements for Active Directory. These include the

-        ability to specify a default role, optional handling for nested roles

-        and an option to ignore PartialResultExceptions (markt).

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Expose Servlet Filters via JMX. Based on a patch by Xie Xiaodong as part

-        of GSOC2009. (markt)

+        Update the re-packaged version of commons-fileupload from 1.2.1 to

+        1.2.2. The layout of re-packaged version was also restored to the

+        original commons-fileupload layout to make merging of future updates

+        easier. (markt)

       </td></tr>

       <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Tomcat now uses the Platform MBean server by default so all MBeans

-        registered by Tomcat will be exposed via JMX (eg via JConsole) without

-        requiring any additional configuration. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        The JMX Remote Lifecycle Listener allows the ports used by JMX to be

-        fixed, making it easier to configure firewalls to all JMX traffic to

-        pass through. Part of the extras package. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Make context deployment error message for fixDocBase() more meaningful.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Add an additional permission required by JULI when running under newer

-        JDKs and a security manager. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Remove unnecessary reference to tomcat-coyote.jar from the bootstrap JAR

-        manifest. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Use correct method to create URLs in VirtualWebappLoader. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Provide a new listener to protect against a memory leak caused by a

-        change in the Sun JRE from version 1.6.0_15 onwards. Also include

-        protection against locked JAR files, memory leaks triggered by

-        XML parsing and the GC Daemon. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Don't swallow exceptions in ApplicationContextFacade.doPrivileged()

-        (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Close resource stream in WebappClassLoader after read error. (pero)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Include attribute name into the text of Non-serializable exception

-        that might be thrown by Session.setAttribute() in distributable

-        applications. (mturk)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Add RemoteIpValve, a port of mod_remoteip. Patch provided by Cyrille Le

-        Clerc. (markt)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Allow per instance configuration of JULI or log4j for core Tomcat

-        logging when using CATALINA_BASE. (markt/kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Prevent NPE in JULI during shutdown when resources try to log messages

-        after JULI has been shutdown. (fhanik/kkolinko)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Make the JULI FileHandler easier to extend. (fhanik)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Make buffer size for FileHandler configurable. (fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Make JULI FileHandler thread safe. (fhanik)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Provide an option to disable buffering in the JULI FileHandler.

-        (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Ensure log messages are not lost on shutdown. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44679">44679</a>: Provide an option to allow the equals character in

-        unquoted cookie values. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Add support for a connectionTimeout parameter to the JNDIRealm. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Various (un)deployment related improvements including better handling of

-        failed (un)deployment, additional checking for valid zip entries that

-        don't make sense in a WAR and improved validation of WAR file names.

-        (markt)

+        Update the re-packaged version of Jakarta BCEL from trunk revision

+        880760 to trunk revision 978831. (markt)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.21 (jfclere)/Coyote"><!--()--></a><a name="Tomcat_6.0.21_(jfclere)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.0 (markt)"><!--()--></a><a name="Tomcat_7.0.0_(markt)"><strong>Tomcat 7.0.0 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>beta, 2010-06-29</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.0 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.0_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>Implement <code>socket.unlockTimeout</code> attribute for NIO connector.</td></tr>

       <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update version of native bundled in Windows installer

-        to 1.1.18. (kkolinko)

+        Update Servlet support to the Servlet 3.0 specification. (all)

       </td></tr>

       <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update minimum required version for native to 1.1.17. (rjung)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46950">46950</a>: Fix doing SSL renegotiation when a resource with CLIENT-CERT

-        auth is requested. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Align tcnative native and Java method names. (rjung)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>Dont report thread count from connector if an external executor is used.</td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=39637">39637</a>: Enable the AJP connectors to correctly handle client

-        certificate chains. Patch by Patrik Schnellmann. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46985">46985</a>: Clean up code and remove impossible condition.

-        (markt/kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47225">47225</a>: Fix error in calculation of a buffer length in the

-        mapper. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47320">47320</a>: Don't rely on the platform default encoding being

-        suitable to parse the session ID. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47499">47499</a>: Don't swallow bind exceptions. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47744">47744</a>: Prevent a medium term memory leak if using SSL with

-        the JSSE provider and also using a security manager. Based on a patch by

-        Greg Vanore. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47963">47963</a>: Ensure that any HTTP status messages are compliant

-        with RFC2616. (markt/kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47987">47987</a>: Limit size of not found resources cache. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48009">48009</a>: Protect against the situation where editing a

-        context.xml file may result in the file disappearing for a very short

-        time. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Use correct connector attribute (SSLEnabled) rather than secure to

-        determine if SSL should be used. (fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Provide a workaround for CVE-2009-3555, the TLS renegotiation issue, for

-        the default Blocking IO Java connector.

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48252">48252</a>: Fix stack overflow exception when setting jkHome on

-        NIO connector. (fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48311">48311</a>: Only the APR lifecycle listener should try and

-        initialise APR. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.21 (jfclere)/Jasper"><!--()--></a><a name="Tomcat_6.0.21_(jfclere)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=38797">38797</a>: Fix a regression in the previous patch for

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=37933">37933</a>. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=38897">38897</a>: Add uri of broken TLD to error message to aid

-        debugging. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41661">41661</a>: Fix thread safety issue with JspConfig.init() (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41824">41824</a>: Need to use canonical rather than binary form when

-        writing code. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42390">42390</a>: Fix compilation issue with some nested tag files and

-        simple tags. (kkolinko/markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43656">43656</a>: Correctly coerce <code>null</code> to zero when the

-        target type is <code>Number</code>. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46907">46907</a>: Don't swallow input stream when debug logging is

-        enabled. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47318">47318</a>: Process directives found in include preludes and

-        codas. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47331">47331</a>: Treat uninterpreted tags as template text for JSP.2.2.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47413">47413</a>: Ensure expressions of the form "${a}${b}"

-        are correctly coerced to String. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47453">47453</a>: Handle void return types for deferred methods.

-        (funkman)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Remove the code that auto-detects the value for compilerSourceVM,

-        compilerTargetVM options of Jasper, because we know that this version

-        of Tomcat cannot run on JDK 1.4 and thus the value is always "1.5".

-        (kkolinko)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Change default values for JDK version compliance options of JspC

-        (-source and -target when running from command line)

-        to be "1.5", to be the same as the ones used by Jasper servlet.

-        (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Make constants in the TagHandlerPool really constant. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        When development mode is enabled and a JSP is deleted, ensure next

-        request for that JSP is consistent with the JSP having been removed.

-        (markt/kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48019">48019</a>: Be more careful about skipping content that does not

-        need to be parsed. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Better handling of exception in JSP if parsed JSP source is not

-        available. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.21 (jfclere)/Cluster"><!--()--></a><a name="Tomcat_6.0.21_(jfclere)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        DeltaSession needs endAccess so that CrossContext replication works. (pero)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        DeltaManager needs to replicate changed attributes even if session

-        gets invalidated. Otherwise session listeners will not see the right

-        data on the secondary nodes. (rjung)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Spurious startup errors during session transfer.

-        Sessions get transferred, but node still waits until timeout. (rjung)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Perform deserializtion events with context class loader. (fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47515">47515</a>: Correctly replicate timestamp during startup. (fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47478">47478</a>: Call replication listeners when using BackupManager. (fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47369">47369</a>: Reset data diff after replication. (fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=40551">40551</a>: Enable the JvmRouteBinderValve to work with

-        PersistentManagers as well as clustering. Based on a patch by Chris

-        Chandler. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47342">47342</a>: Fix potential NPE on replicated context start. Patch

-        provided by Keiichi Fujino. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47389">47389</a>: DeltaManager doesn't do session replication if

-        notifySessionListenersOnReplication=false.

-        Patch by Keiichi Fujino. (fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47502">47502</a>: Don't replicate session attributes known not to be

-        serializable. (funkman)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47554">47554</a>: Include httpOnly attribute when re-writing session

-        cookie after fail over. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47799">47799</a>: Enable the domain to be configured for Membership and

-        DomainFilterInterceptor. Patch provided by Keiichi Fujino. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48113">48113</a>: Display IP addresses using 0 to 255 rather than -128

-        to +127. Based on a patch by Quintin Beukes. (fhanik/kkolinko)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.21 (jfclere)/Web applications"><!--()--></a><a name="Tomcat_6.0.21_(jfclere)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41564">41564</a>: Add some documentation on installing Tomcat as a

-        service on operating systems with User Account Control, e.g. Vista.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47161">47161</a>: Report thread count correctly in Manager when exectors

-        are used and return -1 when it can not easily be determined. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47235">47235</a>: Remove use of autoReconnect from MySQL examples.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47324">47324</a>: Fix submit URL for session list page so it works

-        behind a reverse proxy. Patch provided by Maik Jablonski. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47425">47425</a>: Add crlFile attribute to the SSL configuration

-        documentation. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47444">47444</a>: Remove Jakarta references from the documentation.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47656">47656</a>: Add information to documentation on system property

-        replacement in configuration files. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47705">47705</a>: Fix division by zero error in the manager when trying

-        to expire sessions when the session timeout is set to infinite.

-        (funkman)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix display of session information pages of Manager application

-        in Internet Explorer. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Do not reuse windows (tabs) for session detail pages in Manager

-        application. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47769">47769</a>: Clarify the JNDI docs with repect to use of

-        &lt;resource-ref&gt; and related elements, specifically when they are

-        required and when they may be omitted. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48381">48381</a>: Add information on how Tomcat treats host names to the

-        host configuration documentation. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.21 (jfclere)/Other"><!--()--></a><a name="Tomcat_6.0.21_(jfclere)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=37847">37847</a>: Make location and filename of catalina.out configurable

-        in catalina.sh. (fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=37848">37848</a>: Re-fix not outputting info messages when there is no

-        terminal. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=39194">39194</a>: Make classpath configuration consistent in the startup

-        scripts. (markt/kkolinko)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update Tomcat Windows service application (procrun) to version 2.0.5.

-        It contains a fix for issue <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41538">41538</a> (mturk)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=40786">40786</a>: Include 64-bit Windows service wrapper in

-        distributions. Update the Windows installer to automatically use the

-        correct binary on 64-bit machines. (markt)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update Windows Installer to use NSIS 2.45. They say that this version

-        provides support for the upcoming Microsoft Windows 7. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Don't add blank lines to end of files when fixing line-endings for

-        tar.gz distribution. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Use explicit encoding during filtering operations when building Tomcat

-        for distribution. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Remove references to unused commons-collections from the build scripts.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix download task check for commons-pool and commons-dbcp in the

-        build scripts. (kkolinko)

+        Improve and document VirtualWebappLoader. (rjung)

       </td></tr>

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Include deployer-howto.html into the deployer distributive. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47149">47149</a>: Build scripts: Explicitly specify encoding when

-        compiling. (kkolinko)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47267">47267</a>: Ensure release notes displayed by Windows installer

-        have CRLF line-endings regardless of which OS the install package is

-        built on. (markt/kkolinko)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Include NOTICE, LICENSE and manifest files in all Tomcat JARs and add a

-        mechanism to the build process to enable these files to be customised

-        per JAR as required. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47699">47699</a>: Provide better handling of PID files. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47824">47824</a>: Make Servlet API an optional dependency for JULI when

-        using Maven. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Add support for per instance (using $CATALINA_BASE) log4j.properties

-        files, JDBC drivers etc by adding ${catalina.base}/lib and

-        ${catalina.base}/lib/*.jar to the start of the common loader class

-        path. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Correct CVE-2009-3548. When installed via the Windows installer and

-        using defaults, don't create an administrative user with a blank

-        password. Additionally, the administrative user is only created if the

-        manager or host-manager web applications are selected for installation.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Further improvements to the administrative user name and password

-        handling in the Windows installer. (kkolinko)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.20 (remm)"><!--()--></a><a name="Tomcat_6.0.20_(remm)"><strong>Tomcat 6.0.20 (remm)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2009-06-03</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.20 (remm)/Catalina"><!--()--></a><a name="Tomcat_6.0.20_(remm)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42579">42579</a>: Handle both relative and absolute search results in

-        the JNDIRealm. Patch provided by Brandon DuRette. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46562">46562</a>: Close shtml files after processing to allow other

-        processes to modify the files. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46815">46815</a>: Make the MemoryUserDatabase read-only by default.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46816">46816</a>: Align session manager mbean descriptor with

-        implementation. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix a typo in the OPTIONS response from the default servlet. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46822">46822</a>: Remove unnecessary object creation from

-        StandardContext. Patch provided by Anthony Whitford. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46866">46866</a>: Better initialisation of Random objects. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46875">46875</a>: Catch and handle possible IllegalStateExceptions

-        in CometConnectionManagerValve related to session expiration. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Correct some errors reported when testing the WebDAV servlet with the

-        Litmus test suite. (markt)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46933">46933</a>: Update StringManager to use Java 5 features. Patch

-        provided by Jens Kapitza. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46990">46990</a>: Fix synchronization issues reported by FindBugs. Patch

-        provided by Sebb. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.20 (remm)/Coyote"><!--()--></a><a name="Tomcat_6.0.20_(remm)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Allow huge request body packets for AJP13. (rjung)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45026">45026</a>: Never return an empty HTTP status reason phrase.

-        mod_jk and httpd 2.x do not like that. (rjung)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Set remote port for AJP connectors from the optional request

-        attribute AJP_REMOTE_PORT. (rjung)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update tc-native to 1.1.16 (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46982">46982</a>: Correct reporting of DST offset in access logs.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46984">46984</a>: Invalid characters in HTTP request method now result

-        in a 400 response. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46991">46991</a>: Fix AJP connector always reporting bytes received as

-        zero. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.20 (remm)/Jasper"><!--()--></a><a name="Tomcat_6.0.20_(remm)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=37929">37929</a>: Fix invalidated session causing pageContext methods to

-        fail. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41606">41606</a>: Prevent double initialisation of JSPs. Patch provided

-        by Chris Halstead. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46354">46354</a>: ArrayIndexOutOfBoundsException when using

-        org.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER=true

-        Patch provided by Konstantin Kolinko. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46909">46909</a>: Only include semi-colon in type attribute for

-        &lt;jsp:plugin&gt; when it is required. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47013">47013</a>: Use system property rather than hard-coded string for

-        pre-compilation flag. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.20 (remm)/Cluster"><!--()--></a><a name="Tomcat_6.0.20_(remm)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        A node should ignore its own heartbeat messages. (rjung)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.20 (remm)/Web applications"><!--()--></a><a name="Tomcat_6.0.20_(remm)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46509">46509</a>: Use correct link on error page in JSP security

-        example. Patch provided by Michael Moody. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46599">46599</a>: Document known DAEMON issue. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46807">46807</a>: Correct docs for configuration of tag pooling. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46924">46924</a>: Clarify behaviour when auto deployment is enabled and

-        a WAR, directory or context file is deleted or updated. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46958">46958</a>: All xml manager status output to work regardless of

-        context path. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.20 (remm)/Other"><!--()--></a><a name="Tomcat_6.0.20_(remm)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46351">46351</a>: Refactor the build script. Patch provided by Marc

-        Guillemot. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46910">46910</a>: Properties files corrupted by build process. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46915">46915</a>: When resolving ResourceBundle properties, don't claim

-        to have resolved the property unless we really have resolved it. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix .pdf and .exe corruption in -src.tar.gz distribution. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Enable running Tomcat directly from the build directory on linux

-        systems. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.19 (remm)"><!--()--></a><a name="Tomcat_6.0.19_(remm)"><strong>Tomcat 6.0.19 (remm)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.19 (remm)/Catalina"><!--()--></a><a name="Tomcat_6.0.19_(remm)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Manager application prints FAIL if application was deployed but failed to start (fhanik)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        When shutdown port is disabled, print user friendly message and not a stack trace. (fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=37458">37458</a>: Correct sync issue that leads to NPE in rare

-        circumstances. Patch provided by Konstantin Kolinko. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=38553">38553</a>: Return 401 rather than 400 if client does not present

-        a certificate CLIENT-CERT authentication. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=38570">38570</a>: When checking docBase against appBase, make sure we

-        check for an exact match against the appBase. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=39013">39013</a>: When testing for invalid docBase, test for an exact

-        match with the appBase dir. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=39396">39396</a>: Don't include TRACE in OPTIONS response unless we

-        know it hasn't been disabled in the connector. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42747">42747</a>: Ensure context.xml takes effect on first deployment

-        for WAR and DIR deployments. context.xml is now copied to

-        CATALINA_BASE/&lt;engine name&gt;/&lt;host name&gt; for DIR as well as

-        WAR deployments. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td><a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43071">43071</a>: Start poller before acceptor (r719267)</td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Fix read/write timeout of async comet operations

-        (r719264)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Implement async close behaviour for Comet/NIO.

-        No-op for APR (same behavior as before)

-        (r719262)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Default thread count for HTTP connectors is 200. (r713186)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Comet should always invoke END and properly invoke READ (r713174)

-     </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix class cast exception when shutting down a replicated context but no cluster has been configured in server.xml (r713177)

-     </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Dererence socket when its no longer used. Frees up socket buffers and memory. No functional change. (r713175)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Correct wrong "No role found" debug message,

-        logged in RealmBase even if a role was found. (rjung)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td><a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44809">44809</a>: Improve AprLifecycleListener Error Messages. (jfclere)</td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Log AccessControlException for context specific logging.properties

-        during startup with security manager. (rjung)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41407">41407</a>: Add CLIENT-CERT support to the JAAS Realm. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42409">42409</a>: Make custom and standard error page handling

-        consistent by using resetBuffer() which will not alter previously set

-        headers. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42673">42673</a>: Fix SSI virtual includes for multi-level contexts.

-        Patch provided by Peter Jodeleit. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42707">42707</a>: Make adding a host alias via JMX take effect

-        immediately. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43656">43656</a>: Correct regression in previous fix for this bug. Patch

-        provided by Nils Eckert. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45419">45419</a>: Set Accept-Ranges for static resources served by

-        DefaultServlet. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45441">45441</a>: Correctly map filters for FORWARD and INCLUDE. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45447">45447</a>: Convert Spanish resource files to use UTF-8 and provide

-        translations where previously missing. Patch provided by Jesus Marin.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45453">45453</a>: Remove potential race condition in JDBC Realm.

-        Based on a patch by Santtu Hyrkk. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45576">45576</a>: Add DIGEST support to the JAAS Realm. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45585">45585</a>: Allow Tomcat to start if using

-        <code>$CATALINA_BASE</code> but not JULI. Patch based on a suggestion by

-        Ian Ward Comfort. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        The JAAS Realm did not assign roles to authenticated users. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Provide full stacktrace and message when the ErrorReportValveClass can't

-        be instantiated. (funkman)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45608">45608</a>: Make allocated servlet count synchronized to ensure

-        the correct allocated servlet count is available during shutdown.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45628">45628</a>: When checking MANIFEST dependancies, JARs without

-        dependencies should allows be considered to be full-filled. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45735">45735</a>: Improve ETag handling. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45785">45785</a>: Ignore directories named xxx.jar in WEB-INF/lib.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45823">45823</a>: Log missing request headers as '-' not 'null'. Based

-        on a patch by Per Landberg. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45825">45825</a>: Correctly handle annotations in parent classes. Based

-        on a patch by Florent Benoit. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45906">45906</a>: Further ETag handling improvements. Patch provided by

-        Chris Hubick. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Add the CombinedRealm that enables authentication to be attempted

-        against multiple realms. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Add the LockOutRealm that enables a standard Realm to be wrapped with

-        the functionality to lock out a user after too many failed logins.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Make the upper size limit of the static resource cache configurable

-        since the default of <code>cacheMaxSize/20</code> gave too high a value

-        for large caches. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix HTML decoding error in SSI processing. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix cast error in JULI log factory. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix some thread safety issues in date formatting. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix a String comparison bug in the digester property replacement that

-        resulted in non-optimal operation. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Correct handle multi-level contexts defined using context.xml files.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45933">45933</a>: Don't use xml parser from web-app to process tld

-        files. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45951">45951</a>: Support changing of JSESSIONID cookie name and

-        jsessionid path parameter name. Based on a patch by Jean-frederic Clere.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46011">46011</a>: Make Principal accessible (if set) via

-        <code>Subject.getSubject(AccessController.getContext())</code> when

-        processing filters. Based on a patch by tsveg1. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46075">46075</a>: When uploading files, don't create buffers at the

-        maximum configured size. Use the default size and let the buffers grow

-        to the maximum size if necessary. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46085">46085</a>: Fix a rare thread safety issue with session

-        expiration. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46096">46096</a>:  Support annotation processing whilst running under a

-        security manager. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        The invoker servlet has been deprecated and will be removed in Tomcat 7

-        onwards. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46105">46105</a>:  Correctly set URI encoding when replaying a request

-        after FORM authentication. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Remove unnecessary reference to commons-logging from the bootstrap JAR

-        manifest. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46232">46232</a>: Enabled the XMl parser to be over-ridden using the

-        standard endorsed mechanism. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46261">46261</a>: Treat %2F in a context name literally rather than

-        converting it (inconsistently) to '/' - that is what '#' is for. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46298">46298</a>: Throw an SQLException with a useful message rather

-        than a NPE if the URL for the JDBCRealm is invalid. Based on a patch by

-        Owen Jacobson. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46304">46304</a>: Further fixes to make Principal accessible (if set)

-        via <code>Subject.getSubject(AccessController.getContext())</code> when

-        processing filters. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46403">46403</a>: Provide a workaround for an IE and Safari bug that

-        means the Max-Age attribute of a cookie is ignored. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46408">46408</a>: Fix invalid cast in security utility package. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Remove duplicate normalisation implementations and make normalise

-        behaviour consistent throughout code base. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46683">46683</a>: Fix typo in French localisation file name for the

-        org.apache.catalina.loader package. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46606">46606</a>: Make the max DEPTH for a WebDAV request configurable.

-        The default is still 3. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44382">44382</a>: Add support for using httpOnly for session cookies.

-        This is disabled by default. (markt/fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix possible NCDFE when using FORM authentication. (jfclere)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix possible synchronisation bottleneck in cookie creation. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix various spelling errors reported on the mailing lists. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Make the logging manager and properties file configurable via

-        environment variables. (fhanik)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.19 (remm)/Coyote"><!--()--></a><a name="Tomcat_6.0.19_(remm)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td><a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45154">45154</a>:

-        Implement SEND_FILE behavior for SSL connections using NIO (fhanik)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Fix file descriptor leak during NIO send file behavior. (fhanik)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Implement usage of keyAlias attribute for NIO, previously attribute was ignored. (fhanik)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Prevent server from calling close on an already closed NIO socket. One that had timed out. (fhanik)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Fix bug with SEND_FILE behavior in NIO. Send file would delay until selector timed out, even though socket was ready to be written. (fhanik)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Fix possible NPE in NioEndpoint.java (fhanik)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update tc-native to 1.1.15 in build.properties.default (jfclere)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43327">43327</a>: Socket bind fails when using APR on a system with IPv6

-        enabled but no explicit IPv6 address configured. (markt/jfclere)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44285">44285</a>: Make the SSL session cache size and timeout

-        configurable. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45074">45074</a>: Add configuration parameters to enable the tuning

-        of sendfile and poller thread count in the APR HTTP connector. Patch

-        provided by Alex Barclay. (jfclere/markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45528">45528</a>: Add detection for invalid SSL configuration to prevent

-        infinite logging loop on start-up. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45591">45591</a>: NPE on start-up failure in some cases. Based on a

-        patch by Matt Passell. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46077">46077</a>: Expose deferAccept for configuration. Patch provided

-        by Michael Leinartas. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-         Don't swallow input if we know the connection is going to be closed. (billbarker)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46125">46125</a>: Return a status code of 400 if the request headers are

-        too large. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-       Make certain that classes are first loaded by trusted code when working in a sandbox. (billbarker)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Log a message if we reach maxThreads in a connector thread pool. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Enable the thread pool limits to be modified via JMX. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-       Fix HTTP/1.0 redirects handling with APR AJP connector. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46666">46666</a>: keepAliveTimeout should be used regardless of setting

-        of disableUploadTimeout. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.19 (remm)/Jasper"><!--()--></a><a name="Tomcat_6.0.19_(remm)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=36923">36923</a>: Treat EL expressions as template text if EL

-        expressions are disabled. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=37515">37515</a>: Support 1.6 and 1.7 as source and target for

-        compilation. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        ClassCastException in EL ExpressionBuilder. (rjung)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Use more generics in EL to improve type safety. (rjung)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Use a lookahead to remove potential ambiguity in EL parsing. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Correct typo in JSP EL examples. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=38197">38197</a>: Take account of jsp:attribute elements when pooling

-        tags. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42077">42077</a>: Ensure the iterator returned by

-        javax.el.CompositeELResolver#getFeatureDescriptor() skips any null

-        FeatureDescriptors. Patch provided by Mathias Broekelmann. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42693">42693</a>: Fix JSP generation error with recursive tag file

-        structure. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45427">45427</a>: Correctly handle unmatched quotes in EL expressions.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45511">45511</a>: The failure of the <code>empty</code> keyword was a

-        regression caused by the previous fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42565">42565</a>. The original

-        fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42565">42565</a> has been reverted and a new fix applied.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45648">45648</a>: Don't trim the last character when parsing the EL

-        namespace. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45666">45666</a>: Prevent infinite loop on include. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45691">45691</a>: Prevent generation of duplicate variable names when

-        generating code for JSPs. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Correct signed/unsigned conversion error in ASCII parsing. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix various edge-cases when parsing EL, particularly inside attribute

-        values. Note the the Expert Group has confirmed that JSP.1.6 takes

-        precedence over JSP.1.3.10. Therefore EL in attributes must be escaped

-        twice. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46047">46047</a>: Include the path to the JAR when recording

-        dependencies that are located inside a JAR file. Patch provided by

-        C&eacute;dric Mailleux. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46381">46381</a>: Composite expressions used for attribute values must

-        be coerced to Strings. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46397">46397</a>: Don't pool tag instances that implement JspIdConsumer.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46462">46462</a>: Limit package test to just the o.a.jsp package to

-        allow use of packages such as o.a.jspwiki. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46471">46471</a>: Fix naming clash when tags in different libraries have

-        the same name. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46564">46564</a>: Make page encoding check for tagx compilation

-        case-insensitive. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.19 (remm)/Cluster"><!--()--></a><a name="Tomcat_6.0.19_(remm)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Prevent NPE for ReplicationValve (pero)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Provide TCP only start-up option when using static membership. (fhanik)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Document the multicast recovery options. (fhanik)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45261">45261</a>: Add a new SimpleCoordinator for tribes provided by

-        Robert Newson. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45618">45618</a>: Make sure NIO selector is closed when no longer used.

-        Unlikely to be an issue in normal usage. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45851">45851</a>: Fix out of order message processing issues with the

-        FarmWarDeployer. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix small memory leak in FarmWarDeployer. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46357">46357</a>: Corrected test for host's parent must be an engine.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix so that JvmrouteBinderValve can rewrite session suffix with parallel

-        requests from same client. (pero)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.19 (remm)/Web applications"><!--()--></a><a name="Tomcat_6.0.19_(remm)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45940">45940</a>: Correct name of username attribute for JDBC resources

-        in JNDI how to. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46035">46035</a>: Fix multiple typos in monitoring how to. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46067">46067</a>: Fix typos in Advanced IO how to. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46115">46115</a>: Correct Manager UI to show that path is required when

-        using the deploy command. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46121">46121</a>: Add note to manager documentation regarding possible

-        naming clash with new Ant 1.7 resources datatype and how to avoid it.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Remove unsed parameters from Native/APR example connector configuration

-        in docs. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Use CSS based solution for printer-friendly docs. Patch provided by

-        vitezslav.smid as part of GSoc with additional work by Tim Funk. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Update the FAQ linsk in the docs to refer to the wiki. Use xlst task

-        rather than style task to generate docs. (funkman/markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Document the LifecycleListeners. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix broken URL mapping in the examples. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46563">46563</a>: Update doc for correct default for pollerThreadCount.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46600">46600</a>: Document maxKeepAliveRequests for the NIO connector.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix CVE-2009-0781. XSS in calendar example. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.19 (remm)/Other"><!--()--></a><a name="Tomcat_6.0.19_(remm)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41861">41861</a>: Update service name to Apache Tomcat 6 to prevent

-        conflicts with previous major Tomcat versions. (markt/rjung)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45852">45852</a>: Add special handling for cp932 (aka ms932) when

-        creating tomcat-users.xml with Windows installer. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45878">45878</a>: Restore manifest, licence and notice files to the jsp

-        and servlet jars. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45879">45879</a>: Move NOTICE file from documentation webapp to the

-        installation directory. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Add a workaround for DBCP-191. Tomcat will now build without error on a

-        1.6 JDK but because it does this by skipping DBCP, release builds must

-        be generated with a 1.5 JDK. (costin/markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46366">46366</a>: Correct information in RUNNING.txt regarding use of

-        CATALINA_HOME and CATALINA_BASE. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Use more useful JPDA defaults in catalina.bat. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Correct error in 2.5 web-app XSD.

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.18 (remm)"><!--()--></a><a name="Tomcat_6.0.18_(remm)"><strong>Tomcat 6.0.18 (remm)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2008-07-31</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.18 (remm)/Catalina"><!--()--></a><a name="Tomcat_6.0.18_(remm)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42727">42727</a>: Correctly handle request lines that are exact

-        multiples of 4096 in length. Patch provided by Will Pugh. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42678">42678</a>: Only ignore docBase if it really is a subdir of

-        appBase. Patch provided by juergen. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42722">42722</a>: Possible NPE in CGI Servlet. (markt)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45285">45285</a>: Look for annotations in class hierarchy. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Add additional checks for URI normalization. (remm)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.18 (remm)/Jasper"><!--()--></a><a name="Tomcat_6.0.18_(remm)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42565">42565</a>: Make EL ternary expression without space before colon

-        work. Patch provided by Lucas Galfaso. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.18 (remm)/Web applications"><!--()--></a><a name="Tomcat_6.0.18_(remm)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45323">45323</a>: Add note that context.xml files can only contain a

-        single Context element. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.18 (remm)/Cluster"><!--()--></a><a name="Tomcat_6.0.18_(remm)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45317">45317</a>: Properly document and log the value of the state transfer timeout flag (fhanik)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.18 (remm)/Other"><!--()--></a><a name="Tomcat_6.0.18_(remm)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45332">45332</a>: Specify the correct encoding (the current Windows code

-        page) rather than assuming UTF-8 when creating tomcat-users.xml with the

-        Windows installer. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.17 (remm)"><!--()--></a><a name="Tomcat_6.0.17_(remm)"><strong>Tomcat 6.0.17 (remm)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.17 (remm)/General"><!--()--></a><a name="Tomcat_6.0.17_(remm)/General"><strong>General</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45315">45315</a>: Add Unix support for NSIS. (remm)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.17 (remm)/Catalina"><!--()--></a><a name="Tomcat_6.0.17_(remm)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td><a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45272">45272</a>: Put in work around for Internet Explorer not accepting a quoted Path: value using the Set-Cookie header (fhanik)</td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        APR connector now adds connection to poller after using send file.

-        (remm)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Add ManagerBase session getLastAccessedTimestamp and

-        getCreationTimestamp for better remote JMX access. (pero)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Expose alwaysSend flag for message dispatch interceptor. (fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=29936">29936</a>: Create digesters and parsers earlier so we aren't

-        using the webapp class loader when we create them. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42662">42662</a>: Properly resolve reflection proxies during session

-        replication. (fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42750">42750</a>: Request line should be tolerant of multiple

-        whitespaces. (markt/fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42934">42934</a>: Change the order of events on context start so

-        <code>contextInitialized()</code> event is fired before

-        <code>sessionDidActivate()</code>. The spec isn't 100% clear on the

-        required order but this seems more logical than the current behaviour.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43079">43079</a>: Fix identification of suspicious URL patterns. Patch

-        provided by John Kew. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43080">43080</a>: Log suspicious URL patterns to the correct web app.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43117">43117</a>: Setting an empty workDir could result in all of

-        CATALINA_HOME being deleted. Patch provided by Takayuki Kaneko. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43142">43142</a>: Don't assume a directory named xxx.war is a war file.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43150">43150</a>: Allow Tomcat to start correctly when installed on a

-        path that contains a # character. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        The fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43285">43285</a> had the side-effect of coercing

-        <code>null</code> values to zero. This side-effect has been made

-        configurable with a system property,

-        <code>org.apache.el.parser.COERCE_TO_ZERO</code> which defaults to

-        <code>true</code>. Patch provided by Nils Eckert. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43343">43343</a>: Correctly handle requesting a session we are in the

-        middle of persisting. Based on a suggestion by Wade Chandler. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43425">43425</a>: Make annotations spec compliant. Patch provided by

-        Dain Sundstrom. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43470">43470</a>: Fix various class cast exceptions. Based on a patch

-        by Lucas Galfaso. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43578">43578</a>: Fix startup when installation path contains a space.

-        Patch provided by Ray Sauers. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43683">43683</a>: Fix 404 that could occur if a Servlet is accessed

-        while the context is reloading. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>ExtendedAccessLogValve cs-uri not print empty querystring. (pero)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        ServletContext.getResource("noslash/resource") only requires forward

-        slash if STRICT_SERVLET_COMPLIANCE flag is set to true. This mimics the

-        behavior of 6.0.15 and earlier. (fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44021">44021</a>: Add support for using the # character to define

-        multi-level contexts in WARs and directories in the appBase. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44282">44282</a>: Fix TRACE level class loader logging message when a

-        security manager is used. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44337">44337</a>: Dir listing crashes if no readme-file present.

-        (funkman)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        If listener declared in web.xml, only add it once. (funkman)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix NPE when iterating through sessions for expiration. (fhanik/jim)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44380">44380</a>: Don't scan non-file URLs for TLDs. Patch provided by

-        Florent Benoit. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44389">44389</a>: Fix memory leak that occurred if using a

-        RequestDispatcher. Patch provided by Arto Huusko. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44529">44529</a>: Correct handling of resource constraints so no roles

-        (deny all) overrides no aoth-constraint (allow all). (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44562">44562</a>: HEAD requests cannot use includes. Patch provided by

-        David Jencks. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44595">44595</a>: Add possibility to request the QueueSize of an

-        executor via JMX. (jfclere)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix CGI Servlet so it correctly reads the environment variables on

-        Vista. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44611">44611</a>: DirContextURLConnection didn't implement

-        getHeaderFields(), getHeaderField(String name) was case sensitive and

-        returned "" rather than null for header values that did not exist. Patch

-        provided by Chris Hubick. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44633">44633</a>: Provide a more helpful error message if a class can't

-        be loaded due to a version error. (rjung/markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44646">44646</a>: Correct various issues, including an ISE, in

-        CometConnectionManagerValve. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44673">44673</a>: ServletInputStream is no longer readable once closed.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Better handling of lack of permission for context specific logging.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Add permission required to read JDK logging config. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Update web.xml to reflect packaging of SSI and CGI. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Add missing access check for ThreadWithAttributes. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44833">44833</a>: Correctly override StandardSession methods from

-        DeltaSession. (fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44943">44943</a>: Use the same engine name in server.xml comments to

-        reduce copy and pastes issues. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44988">44988</a>: Use Java5 syntax for debug options. Patch provided

-        by C&eacute;drik Lime. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45101">45101</a>: Format header dates obtained from

-        <code>DirContextURLConnection</code> as per the HTTP spec. Patch

-        provided by Chris Hubick. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        A new valve, <code>org.apache.catalina.valves.WebdavFixValve</code>,

-        that forces MS clients connecting to the WebDAV Servlet on port 80 to

-        use a client that works rather than the default broken one. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45195">45195</a>: Passing in null into setAttribute or removeAttribute

-        cause NPE. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.17 (remm)/Coyote"><!--()--></a><a name="Tomcat_6.0.17_(remm)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        NIO: Fix bug in NIO sendfile, symptoms during heavy traffic is that

-        connection don't get closed. For previous versions, one can disable

-        sendfile to work around the problem. (fhanik)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        APR: Allow to specify the "random device" to use to collect the entropy.

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=43642">43642</a>: Add prestartminSpareThreads attribute for Executor.

         (jfclere)

       </td></tr>

       <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Fix NIO/SSL live lock during client disconnect. (fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix possible ArrayIndexOutOfBoundsException. Patch provided by Charles R

-        Caldarale. (markt/jim)

+        Switch from AnnotationProcessor to InstanceManager. Patch provided by

+        David Jecks with modifications by Remy. (remm/fhanik)

       </td></tr>

       <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Add support for keystore types that do not need a file. Based on a patch

-        by Bruno Harbulot. (markt)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43094">43094</a>: Allow specification of keystore providers. Based on a

-        patch by Bruno Harbulot. (markt)

+        <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=620845">r620845</a> and <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=669119">r669119</a>. Make shutdown address

+        configurable. (jfclere)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43191">43191</a>: Make it possible to override the defaults with the

-        compressableMimeType attribute. Based on a patch by Len Popp. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44391">44391</a>: Correct handling of escaped values in SSI processing.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44392">44392</a>: HTML entities now handled correctly in SSI processing.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44558">44558</a>: Improve error message so address is included if

-        binding fails. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44494">44494</a>: Character input limited to 8KB. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44620">44620</a>: Infinite loop in NIO connector. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44785">44785</a>: Correctly document default maxThreads for AJP

-        connector. (markt)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Log errors for AJP signoffs at DEBUG level,

-        since it is harmless if mod_jk has hung up the phone. (billbarker)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44968">44968</a>: Provide more information when the load of a keystore

-        fails. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.17 (remm)/Jasper"><!--()--></a><a name="Tomcat_6.0.17_(remm)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=31257">31257</a>: Quote endorsed dirs if they contain a space. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42943">42943</a>: Make sure nested element is inside &lt;jsp:text&gt;

-        element before throwing exception. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43617">43617</a>: Correctly escape attribute values in tag files.

-        Based on a patch by Lucas Galfaso. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43656">43656</a>: Fix various numeric coercion bugs. Includes a patch by

-        Nils Eckert and fixes related issues identified in a test case provided

-        by Konstantin Kolinko. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43741">43741</a>: Correctly handle dependencies for tag files in JARs.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44408">44408</a>: Reduce synchronisation when evaluating EL expressions.

-        Patch provided by Robert Andersson. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44428">44428</a>: Fix possible NPE during serialization. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44766">44766</a>: EL doesn't coerce custom Number subclasses. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44877">44877</a>: Prevent collisions on tag pool names. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44986">44986</a>: Make page encoding consistency checks

-        case-insensitive. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44994">44994</a>: Enable nested conditional expressions in JSP EL. Patch

-        provided by James Manger. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45015">45015</a>: You can't use an unescaped quote if you quote the

-        value with that character. (markt/fhanik)

+        <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=651977">r651977</a> Add some missing control checks to

+        <code>ThreadWithAttributes</code>. (markt)

       </td></tr>

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Add HTML filtering of error messages for included resources in case the

-        app has tried to include an unsafe URL that does not exist. This is

-        really an app responsibility but the filtering has been added for XSS

-        safety. (markt)

+        <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=677640">r677640</a> Add a startup class that does not require any

+        configuration files. (costin)

       </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.17 (remm)/Web applications"><!--()--></a><a name="Tomcat_6.0.17_(remm)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update documentation to use correct version number, correct file paths

-        and to use $CATALINA_BASE rather than $CATALINA_HOME where applicable.

-        (markt/jim)

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=700532">r700532</a> Log if temporary file operations within the CGI

+        servlet fail. Make sure header Reader is closed on failure. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=708541">r708541</a> Delete references to DefaultContext which was removed

+        in 6.0.x. (markt)

       </td></tr>

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Add a section on available system property configuration options.

-        (markt)

+        <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=709018">r709018</a> Initial implementation of an asynchronous file handler

+        for JULI. (fhanik)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Amend the JNDI datasource doc to reflect new value for no limit used by

-        updated commons-pool and commons-DBCP. (markt)

+        Give session thisAccessedTime and lastAccessedTime clear semantics.

+        (rjung)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Expose thisAccessedTime via Session interface. (rjung)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Provide a log format for JULI that provides the same information as the

+        default but on a single line. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=723889">r723889</a> Provide the ability to configure the Executor job

+        queue size and a timeout for adding jobs to the queue. (fhanik)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add support for aliases to StandardContext. This allows content from

+        other directories and/or WAR files to be mapped to paths within the

+        context. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Provide clearer definition of Lifecycle interface, particularly start

+        and stop, and align components that implement Lifecycle with this

+        definition. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=48662">48662</a>: Provide a new option to control the copying of context

+        XML descriptors from web applications to the host's xmlBase. Copying of

+        XML descriptors is now disabled by default. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43333">43333</a>: Fix errors in sendfile documentation. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43366">43366</a>: Provide backwards compatibility for manager sessions

-        command. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44541">44541</a>: Document packetSize attribute for AJP connector.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44715">44715</a>: Document secret attribute for AJP connector. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix some links in the ROOT application that are broken if ROOT is

-        renamed. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Align the Realm documentation so that both the configuration and the

-        how-to are consistent. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45277">45277</a>: Fix typo in logging docs. (markt)

+        Move comet classes from the org.apache.catalina package to the

+        org.apache.catalina.comet package to allow comet to work under a

+        security manager. (markt)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.17 (remm)/Cluster"><!--()--></a><a name="Tomcat_6.0.17_(remm)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.0 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.0_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45212">45212</a>: AbstractReplicatedMap.entrySet() now returns entries

-        rather than vaules. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td><a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=45279">45279</a>: Properly close multicast socket.</td></tr>

       <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Fix session replication dead lock during non sticky load balancing.

+        Port SSLInsecureRenegotiation from mod_ssl. This requires

+        to use tomcat-native 1.2.21 that have option to detect this

+        support from OpenSSL library. (mturk)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Allow bigger AJP packets also for request bodies and responses

+        using the packetSize attribute of the Connector. (rjung)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td><a href="http://svn.apache.org/viewvc?view=rev&amp;rev=703017">r703017</a> Make Java socket options consistent between NIO

+        and JIO connector. Expose all the socket options available on

+        <code>java.net.Socket</code> (fhanik)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=46051">46051</a>: The writer returned by <code>getWriter()</code> now

+        conforms to the <code>PrintWriter</code> specification and uses platform

+        dependent line endings rather than always using <code>\r\n</code>.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Use tc-native 1.2.x which is based on APR 1.3.3+ (mturk)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=724239">r724239</a> NIO connector now always uses an Executor. (fhanik)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=724393">r724393</a> Implement keepAliveCount for NIO connector in a thread

+        safe manner. (fhanik)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=724849">r724849</a> Implement keep alive timeout for NIO connector.

         (fhanik)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.17 (remm)/Other"><!--()--></a><a name="Tomcat_6.0.17_(remm)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.0 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.0_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update JSP support to the JSP 2.2 specification. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update EL support to the EL 2.2 specification. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=787978">r787978</a> Use "1.6" as the default value for compilerSourceVM

+        and compilerTargetVM options of Jasper. (kkolinko)

+      </td></tr>

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Improve the Tests for unit tests for the cookie issues. (jfclere)

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=48358">48358</a>: Add support for limiting the number of JSPs that are

+        loaded at any one time. Based on a patch by Isabel Drost. (markt)

       </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix build for JavaDoc. Patch provided by Stephen Bannasch. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44955">44955</a>: Use correct location for endorsed directory in Windows

-        installer. (markt)

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=48689">48689</a>: Access TLD files through a new JarResource interface

+        to make extending Jasper simpler, particularly in OSGi environments.

+        Patch provided by Jarek Gawor. (markt)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.16 (remm)"><!--()--></a><a name="Tomcat_6.0.16_(remm)"><strong>Tomcat 6.0.16 (remm)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2008-02-08</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.16 (remm)/General"><!--()--></a><a name="Tomcat_6.0.16_(remm)/General"><strong>General</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="High Availability"><!--()--></a><a name="High_Availability"><strong>High Availability</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add support for UDP and secure communication to tribes. (fhanik)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add versioning to the tribes communication protocol to support future

+        developments. (fhanik)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add a demo on how to use the payload. (fhanik)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Started to add JMX support to the cluster implementation. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=609778">r609778</a> Minor fixes to the throughput interceptor and the

+        NIO receiver. (fhanik)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=630234">r630234</a> Additional checks for the NIO receiver. (fhanik)

+      </td></tr>

       <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update commons-logging to version 1.1.1 and the NSIS installer to 2.34.

+        <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=671650">r671650</a> Improve error message when multicast is not enabled.

+        (fhanik)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.0 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.0_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+     <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=631321">r631321</a> Update changelog to support the &lt;rev&gt; element

+        in the documentation. (fhanik)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        A number of additional roles were added to the Manager and Host Manager

+        applications to separate out permissions for the HTML interface, the

+        text interface and the JMX proxy. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        CSRF protection was added to the Manager and Host Manager applications.

         (markt)

       </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update to commons-pool version 1.4, native version 1.1.12 and update

-        the download location for the commons libraries. (markt)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Change chunked input parsing, always parse CRLF directly after a chunk has been

-        received, except if data is not available. If data is not available for CRLF

-        parsing, we run into BZ 11117, and must defer the parsing of CRLF to the next read event.

-        This fixes the incorrect blocking when using CometProcessor and the draining data during the READ event

-        where it before would block incorrectly waiting for the next chunk (fhanik)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        The CometProcessor interface now extends the javax.servlet.Servlet interface(fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix CVE-2007-5342 by limiting permissions granted to JULI. (markt)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Fix handling of CometEvent.close when called during BEGIN event (fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43594">43594</a>: Use setenv from CATALINA_BASE (if set) in preference

-        to the one in CATALINA_HOME. Patch provided by Shaddy Baddah.

-        (markt/jim)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43692">43692</a>: Clean up unused entries from build scripts. Patch

-        provided by Paul Shemansky. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43775">43775</a>: Don't try to change line endings of binary files in

-        the source distribution. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td><a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43846">43846</a>:

-        Fix block simulated read and writes causing timeouts.

-        Add non blocking parsing of HTTP request headers.

-        Perf improvements(fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43957">43957</a>: Service.bat doesn't configure logging correctly. Patch

-        provided by  Richard Fearn. (markt/jim)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Cookie handling/parsing changes!

-        The following behavior has been changed with regards to Tomcat's cookie handling

-        a) Cookies containing control characters, except 0x09(HT), are rejected using an InvalidArgumentException <br>

-        b) If cookies are not quoted, they will be quoted if they contain tspecials(ver0), tspecials2(ver1) characters<br>

-        c) Escape character '\\' is allowed and respected as a escape character, will be unescaped during parsing

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Cookie parsing of $Version regression from 6.0.15 has been fixed

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        The script that builds the windows installer was including additional

-        files due to the way it processes recurrsive file selectors. The

-        selectors have been modified to only include the intended files. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.16 (remm)/Catalina"><!--()--></a><a name="Tomcat_6.0.16_(remm)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix ManagerServlet.expireSessions throws Exceptions as iterate longer

-        session lists at production servers. (pero)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td><a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=38131">38131</a>: WatchedResource doesn't work if app is outside host appbase webapps.

-        Patch provided by Peter Lynch (pero)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>Add -Dorg.apache.catalina.tribes.dns_lookups=false as default. The ability to turn off reverse DNS lookups for membership.(fhanik)</td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-         Set correct StandardManager.sessionCounter after reload/restart. (pero)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42503">42503</a>: ServletContext.getResourceAsStream() could return

-        stale data. Patch provided by Arvind Srinivasan. (funkman/jim)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43236">43236</a>: When resetting the response, also reset the flags

-        associated with using a writer or an output stream to allow the user to

-        change character set after the reset. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43241">43241</a>: Make ServletContext.getResourceAsStream() conform to

-        the specification. Patch provided by John Kew. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43530">43530</a>: doc link fixes provided by  Paul Shemansky (funkman)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43675">43675</a>: Fix a possible logging related classloader leak.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td><a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43687">43687</a>: Remove conditional headers on Form Auth replay,

-           since the UA (esp. FireFox) isn't expecting it.

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43706">43706</a>: WebDAV copy/move now returns 201 on success. Based on

-        a patch by Panagiotis Astithas. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43840">43840</a>: Include user principal if possible when serializing /

-        de-serializing sessions. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43868">43868</a>: MBean methods getInvoke and getSetter were broken.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43887">43887</a>: Make error messages much more helpful when illegal

-        Servlet names are used. Based on a patch provided by Mike Baranczak.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix a bug that causes CGI Servlet to fail when it is included. (markt)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Improve the webDAV Servlet Javadocs to make clear that the WebDAV

-        Servlet can not be used as the default servlet. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43993">43993</a>: mime mapping for WS-Policy. Patch by Fabian Ritzmann  (funkman)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44041">44041</a>: Fix duplicate class definition under load. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44084">44084</a>: JASSRealm was broken for application provided

-        Principals. Patch provided by Noah Levitt. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44223">44223</a>: Use the javax.net.ssl.trustStoreType setting if no

-        explicit connector configuration is provided and the property is set.

-        (markt/jim)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44268">44268</a>: Log a warning if a duplicate listener configuration is

-        ignored. (markt/jim)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.16 (remm)/Coyote"><!--()--></a><a name="Tomcat_6.0.16_(remm)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43622">43622</a>: Don't overwrite the min compression size set by the

-        compression attribute with the default. (markt/jim)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43839">43839</a>: URL based session tracking failed when a session

-        cookie from a parent context was present. Based on a patch by Yuan

-        Qingyun. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43914">43914</a>: URLs in location headers should be encoded. Patch

-        provided by Ivan Todoroski. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.16 (remm)/Jasper"><!--()--></a><a name="Tomcat_6.0.16_(remm)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43285">43285</a>: Missing EL Coercion causes argument type mismatch.

-        Patch provided by Bernhard Huemer. (funkman/jim)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43675">43675</a>: Fix a possible logging related classloader leak.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43702">43702</a>: Inner class files have unnecessarily long names.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43743">43743</a>: Fix NPE when compiling nest tag files packaged in a

-        JAR. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43757">43757</a>: Rather than use string matching to work out the line

-        in the JSP with the error, use the SMAP info and the knowledge that for

-        a scriptlet there is a one to one line mapping. (markt/jim)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43758">43758</a>: Fix NPE when scripting elements are empty. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43909">43909</a>: Make sure locale maps to wrapped ELContext. Patch

-        provided by Tuomas Kiviaho. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43944">43944</a>: Fix a missing resource exception. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Improve docs for Jasper configuration. Put options in alphabetcial

-        order, add some missing options, deprecate an unused one and address

-        feedback about the page provided on the users list.

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.16 (remm)/Web applications"><!--()--></a><a name="Tomcat_6.0.16_(remm)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43173">43173</a>: Fix typo in logging documentation regarding location

-        of logging.properties. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43344">43344</a>: Fix typo in if.jsp example. Patch provided by Tim

-        Nowaczyk. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43468">43468</a>: Fix possible NPE when listing contexts in the Manager

-        application. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43515">43515</a>: Fix bug in Manager application that may have caused

-        problems when listing contexts. Patch provided by Lucas Galfaso. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43611">43611</a>: Provide an error message if user tries to upload a war

-        for a context defined in server.xml rather than failing silently.

-        (markt/jim)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43800">43800</a>: Make relationship between APR and the native connector

-        clearer. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44088">44088</a>: Fix expire session button in manager. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=44094">44094</a>: Add a note about the side effects of configuring a

-        context as privileged. (markt)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update JNDI documentation to refer to configuring contexts via

-        context.xml rather than server.xml. (markt/jim)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.16 (remm)/Cluster"><!--()--></a><a name="Tomcat_6.0.16_(remm)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix FarmWarDeployer can be only configured as host subelement (pero)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix wrong &amp;&amp; at ReplicationValve (pero)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Add get/set methods for properties in the Tcp Failure detector.

-        (fhanik/jim)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.15 (remm)"><!--()--></a><a name="Tomcat_6.0.15_(remm)"><strong>Tomcat 6.0.15 (remm)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.15 (remm)/General"><!--()--></a><a name="Tomcat_6.0.15_(remm)/General"><strong>General</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>Fix the MD5 file contents in distribution</td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Add ANT script to be able to publish signed Tomcat JAR's to ASF Maven repo (fhanik)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Use Eclipse JDT 3.3.1. (pero)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.15 (remm)/Catalina"><!--()--></a><a name="Tomcat_6.0.15_(remm)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>Guess java location from the PATH environment and improve fix for 37284</td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>Add NIO connector to server.xml parsing warning, remove Connector as exception case</td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td><a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43653">43653</a>: Fix SSL buffer mixup when response is unable to write more than socket buffer can handle</td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td><a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43643">43643</a>: If connector doesn't support external executor, display warning</td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td><a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43641">43641</a>: Property bind multicast address for cluster membership</td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td><a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42693">42693</a>: Fix JSP compiler bug</td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>Add mbean descriptor for virtual webapp loader</td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td><a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43487">43487</a>:

-        Fix request processing stats

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43435">43435</a>: Don't iterate and relocate sessions if they are not part of the map.

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43356">43356</a>: Keystore parameter is relative to CATALINA_BASE,

-        Truststore is either defined as parameter, javax.net.ssl.trustStore or if empty

-        defaults to the keystore.

-        SSL Client cert authentication changed from boolean to "true|false|want" (fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=30949">30949</a>: Improve previous fix. Ensure requests are re-cycled

-        on cross-context includes and forwards when an exception occurs in the

-        target page. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42944">42944</a>: Correctly handle servlet mappings that use a '+'

-        character as part of the url pattern. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-         <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42951">42951</a>: Don't use CATALINA_OPTS when stopping Tomcat. This

-         allows options for starting and stopping to be set on JAVA_OPTS and

-         options for starting only to be set on CATALINA_OPTS. Without this

-         fix, some startup options (eg the port for remote JMX) would cause

-         stop to fail. Based on a fix suggested by Michael Vorburger.

-         Port of r454193 (<a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=36976">36976</a>) from Tomcat 5.5.x. (markt,rjung)

-      </td></tr>

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-         Validation of attributes and elements used in server.xml. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43175">43175</a>: Fix typos in servlet XSD files. Patch provided by

-        Takayuki Kaneko. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43216">43216</a>: Set correct StandardSession#accessCount as StandardSession.ACTIVITY_CHECK is true.

-        Patch provided by Takayuki Kaneko (pero)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Made session createTime accessible for all SessionManager via JMX (pero)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43129">43129</a>: Support logging of all response header values at AccessLogValve (ex. add %{Set-Cookie}o to your pattern). (pero)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Support logging of all response header values at ExtendedAccessLogValve (ex. add x-O(Set-Cookie) to your pattern). (pero)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Support logging of current thread name at AccessLogValve (ex. add %I to your pattern).

-        Usefull to compare access logging entry later with a stacktraces. (pero)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Improve large-file support (more then 4 Gb) at all AccessLogValves, backport from 5.5.25. (pero)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Optimized JDBCAccessLogValve combined pattern request attribute access. (pero)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        o.a.juli.ClassLoaderLogManager handle more then one system property replacement at file logging.properties. (pero)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43338">43338</a>: Support '*' servlet-name mapping at filter-mapping.

-        Patch provided by Keiichi Fujino. (pero)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41797">41797</a>: CNFE/NPE thrown from function mapper when externalizing

-        Patch by Tuomas Kiviaho- tuomas.kiviahos at ikis fi (funkman)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43453">43453</a>: ClassCastException at

-        org.apache.catalina.core.StandardContext.findStatusPage(int)

-         (funkman)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix important vulnerability when webdav is enabled for write. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Call stopAwait in StandardServer.stop if port == -1. (pero)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43668">43668</a>: Fix NPE when the outer most wrapper is a ServletRequest/ResponseWrapper, but not a HttpServletRequest/ResponseWrapper on a Forward. (billbarker)

+        List array elements in the JMX proxy output of the Manager application.

+        (rjung)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.15 (remm)/Coyote"><!--()--></a><a name="Tomcat_6.0.15_(remm)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Harmonize with HTTP java.io code. Otherwise the socket is not closed.

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        In the APR connector, start accepting connections after fully starting

-        the connector, to prevent possible exceptions due to non initialized fields. (remm)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Cookie parser refactoring, submitted by John Kew. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Make cookie escaping / unescaping consistent. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43479">43479</a>: Memory leak cleaning up sendfile connections, submitted by Chris Elving. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42925">42925</a>: Add maintain for sendfile. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix explicit flush before response commit in the org.apache.jk AJP connector. (pero)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43621">43621</a>: Fix possible Dos condition when using the experimental NIO/AJP Connector (billbarker)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.15 (remm)/Jasper"><!--()--></a><a name="Tomcat_6.0.15_(remm)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=37326">37326</a>: No error reported when an included page does not

-        exist. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.15 (remm)/Web applications"><!--()--></a><a name="Tomcat_6.0.15_(remm)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix WebDAV Servlet so it works correctly with MS clients. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix CVE-2007-5461, an important information disclosure vulnerability in

-        the WebDAV Servlet. Based on a patch by Marc Schoenefeld. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42979">42979</a>: Update sample.war to include recent security fixes

-        in the source code. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Minor connector doc fix. (jfclere)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.15 (remm)/Cluster"><!--()--></a><a name="Tomcat_6.0.15_(remm)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-         Set correct BioReceiver transfer buffer size. (pero)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.15 (remm)/Other"><!--()--></a><a name="Tomcat_6.0.15_(remm)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.0 (markt)/Extras"><!--()--></a><a name="Tomcat_7.0.0_(markt)/Extras"><strong>Extras</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-         Tests for unit tests for the cookie issues. (jfclere)

+        A new JmxRemoteLifecycleListener that can be used to fix the ports used

+        for remote JMX connections, eg when using JConsole. (markt)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.14 (remm)"><!--()--></a><a name="Tomcat_6.0.14_(remm)"><strong>Tomcat 6.0.14 (remm)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2007-08-13</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.14 (remm)/General"><!--()--></a><a name="Tomcat_6.0.14_(remm)/General"><strong>General</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="docs" class="icon" src="./images/docs.gif"></td><td>

-        Correct j.u.l log levels in JULI docs. (rjung)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.14 (remm)/Catalina"><!--()--></a><a name="Tomcat_6.0.14_(remm)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.0 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.0_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellpadding="2" cellspacing="2">

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Handle special case of ROOT when re-loading webapp after ROOT.xml has

-        been modified. In some circumstances the reloaded ROOT webapp had no

-        associated resources. (markt)

+        Numerous code clean-up changes including the use of generics and

+        removing unused imports, fields, parameters and methods. (markt)

       </td></tr>

       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Remove invalid attribute "encoding" of MBean MemoryUserDatabase,

-        which lead to errors in the manager webapp JMXProxy output. (rjung)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=33774">33774</a>: Retry JNDI authentiction on ServiceUnavailableException

-        as at least one provider throws this after an idle connection has been

-        closed. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-         <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=39875">39875</a>: Fix BPE in RealmBase.init(). Port of yoavs's fix from

-         Tomcat 5. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41722">41722</a>: Make the role-link element optional (as required by

-        the spec) when using a security-role-ref element. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-         <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42361">42361</a>: Handle multi-part forms when saving requests during

-         FORM authentication process. Patch provided by Peter Runge. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-         <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42401">42401</a>: Update RUNNING.txt with better JRE/JDK information.

-         (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-         <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42444">42444</a>: prevent NPE for AccessLogValve

-         Patch provided by Nils Hammar (funkman)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-         <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42449">42449</a>:

-         JNDIRealm does not catch NullPointerException for Sun's

-         LDAP provider (See bug for details) (funkman)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-         <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42497">42497</a>: Ensure ETag header is present in a 304 response.

-         Patch provided by Len Popp. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix XSS security vulnerability (CVE-2007-2450) in the Manager and Host

-        Manager. Reported by Daiki Fukumori. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42547">42547</a>: Fix NPE when a ResourceLink in context.xml tries to

-        override an env-entry in web.xml. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Avoid some casting in ErrorReportValve (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix persistence API annotation, submitted by Bill Burke (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        In Comet mode, if bytes are not read, send an error event (otherwise,

-        fields referring to the connection could remain) (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix Comet when running Tomcat with the security manager (remm)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.14 (remm)/Jasper"><!--()--></a><a name="Tomcat_6.0.14_(remm)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=39425">39425</a>: Add additional system property permission to

-        catalina.policy for pre-compiled JSPs. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42438">42438</a>: Duplicate temporary variables were created when

-        jsp:attribute was used in conjunction with custom tags. Patch provided

-        by Brian Lenz. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42643">42643</a>: Prevent creation of duplicate JSP function mapper

-        variables. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.14 (remm)/Coyote"><!--()--></a><a name="Tomcat_6.0.14_(remm)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Separate sequence increment from getter in ThreadPool to avoid

-        misleading increments during monitoring via JMX. (rjung)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Add back missing socketBuffer attribute in the java.io HTTP connector (remm)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.14 (remm)/Web applications"><!--()--></a><a name="Tomcat_6.0.14_(remm)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Don't write error on System.out, use log() instead. (rjung)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=39813">39813</a>: Correct handling of new line characters in JMX

-        attributes. Patch provided by R Bramley. Ported from tc5.5.x r415029. (markt,rjung)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-         <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42459">42459</a>: Fix Tomcat Web Application Manager table error. (rjung)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix XSS security vulnerabilities (CVE-2007-2449) in the examples.

-        Reported by Toshiharu Sugiyama. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.13 (remm)"><!--()--></a><a name="Tomcat_6.0.13_(remm)"><strong>Tomcat 6.0.13 (remm)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2007-05-15</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.13 (remm)/Catalina"><!--()--></a><a name="Tomcat_6.0.13_(remm)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-         More accurate available() method. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-         Add recycle check in the event object, since it is a facade like the others. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-         When processing a read event, enforce that the servlet consumes all available bytes. (remm)

+        All deprecated internal code has been removed. <b>Warning:</b> If you

+        have custom components for a previous Tomcat version that extend

+        internal Tomcat classes and override deprecated methods it is highly

+        likely that they will no longer work. (markt)

       </td></tr>

       <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-         Add a flag in ContainerBase which could be used in embedded scenarios to avoid a double start

-         of contexts (this problem generally occurs when adding contexts to a started host). (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-         <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42309">42309</a>: Ability to create a connector using a custom protocol specification for embedded.

-         (fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-         Add SSL engine flag to AprLifecycleListener. (fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-         Improve event processing, so that an END event is generated when encountering EOF, and an

-         ERROR is always generated on client disconnects. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-         Add declarations for the new XSD files. (remm)

+        Parameterize version number throughout build scripts and source. (rjung)

       </td></tr>

     </table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.13 (remm)/Coyote"><!--()--></a><a name="Tomcat_6.0.13_(remm)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-         Add heartbeatBackgroundEnabled flag to SimpleTcpCluster.

-         Enable this flag don't forget to disable the channel heartbeat thread (pero)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-         Possible memory leak when using comet, caused by adding the socket to the poller before

-         cleaning up the connection tracking structure. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-         <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42308">42308</a>: nextRequest recycles the request, which caused issues with statistics. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-         Fix non recycled comet flag in the APR connector. (remm)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.13 (remm)/Cluster"><!--()--></a><a name="Tomcat_6.0.13_(remm)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-         Add heartbeatBackgroundEnabled flag to SimpleTcpCluster.

-         Enable this flag don't forget to disable the channel heartbeat thread (pero)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-         Method name cleanup. (fhanik)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.13 (remm)/Web applications"><!--()--></a><a name="Tomcat_6.0.13_(remm)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-         Some examples webapp fixes. Submitted by Frank McCown. (remm)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.12 (remm)"><!--()--></a><a name="Tomcat_6.0.12_(remm)"><strong>Tomcat 6.0.12 (remm)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.12 (remm)/General"><!--()--></a><a name="Tomcat_6.0.12_(remm)/General"><strong>General</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        License source headers. Submitted by Niall Pemberton. (remm)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.12 (remm)/Catalina"><!--()--></a><a name="Tomcat_6.0.12_(remm)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42039">42039</a>: Log a stack trace if a servlet throws an

-         UnavailableException. Patch provided by Kawasima Kazuh. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41990">41990</a>: Add some additional mime-type mappings. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41655">41655</a>: Fix message translations. Japanese translations

-        provided by Suzuki Yuichiro. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Add enabled attribute to AccessLogValve (pero)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42085">42085</a>: Avoid adding handlers for the root logger twice when they are explicitly

-        specified. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Reduce thread local manipulation in the request dispatcher. Submitted by

-        Arvind Srinivasan. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Avoid keeping references to loggers tied to the webapp classloaders after a reload in

-        a couple more places. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42202">42202</a>: Fix container parsing of TLDs in webapps when Tomcat is installed in

-        a URL encodable path. (remm)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.12 (remm)/Coyote"><!--()--></a><a name="Tomcat_6.0.12_(remm)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42119">42119</a>: Fix return value for request.getCharacterEncoding() when

-        Content-Type headers contain parameters other than charset. Patch by

-        Leigh L Klotz Jr. (markt)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Move away from using a thread local processor for the APR and java.io

-        connectors, as this does not work well when using an executor. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Remove Comet timeout hack in the APR connector. Comet connections will now

-        use the regular timeout or the keepalive timeout if specified. (remm)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.12 (remm)/Web applications"><!--()--></a><a name="Tomcat_6.0.12_(remm)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42025">42025</a>: Update valve documentation to refer to correct regular

-        expression implementation. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix various paths in the manager webapps (remm)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Session viewer and editor for the HTML manager. Submitted by C&eacute;drik Lime. (remm)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Session handling tools for the manager. Submitted by Rainer Jung. (remm)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.12 (remm)/Jasper"><!--()--></a><a name="Tomcat_6.0.12_(remm)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41869">41869</a>: TagData.getAttribute() should return

-        TagData.REQUEST_TIME_VALUE when the attribute value is an EL expression.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42071">42071</a>: Fix IllegalStateException on multiple requests to

-        an unavailable JSP. Patch provided by Kawasima Kazuh. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        After a JSP throws an UnavailableException allow it to be accessed once

-        the unavailable period has expired. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.12 (remm)/Cluster"><!--()--></a><a name="Tomcat_6.0.12_(remm)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-         Add toString method to better logging session replication message at tribes MESSAGES (pero)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.11 (remm)"><!--()--></a><a name="Tomcat_6.0.11_(remm)"><strong>Tomcat 6.0.11 (remm)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.11 (remm)/General"><!--()--></a><a name="Tomcat_6.0.11_(remm)/General"><strong>General</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update DBCP to 1.2.2, pool to 1.3, JDT to 3.2.2 and remove collections

-        build dependency (pero, remm)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.11 (remm)/Catalina"><!--()--></a><a name="Tomcat_6.0.11_(remm)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Don't log pattern subtoken at ExtendedAccesLogValve (pero)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Add some missing JMX attributes for new AccessLogValve (pero)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41786">41786</a>: Incorrect reference to catalina_home in catalina.sh/bat Patch provided by Mike Hanafey (fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41703">41703</a>: SingleSignOnMessage invalid setter, patch provided by Nils Hammar (fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41682">41682</a>: ClassCastException when logging is turned on (fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41530">41530</a>: Don't log error messages when connector is stopped (fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41166">41166</a>: Invalid handling when using replicated context (fhanik)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Added SENDFILE support for the NIO connector. (fhanik) <br>

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Added support for shared thread pools by adding in the &lt;Executor&gt;

-        element as a nested element to the &lt;Service&gt; element. (fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41666">41666</a>: Correct handling of boundary conditions for

-        If-Unmodified-Since and If-Modified-Since headers. Patch provided by

-        Suzuki Yuichiro. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41739">41739</a>: Correct handling of servlets with a load-on-startup

-        value of zero. These are now the first servlets to be started. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41747">41747</a>: Correct example ant script for deploy task. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41752">41752</a>: Correct error message on exception in MemoryRealm.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=39883">39883</a>: Add documentation warning about using antiResourceLocking

-        on a webapp outside the Host's appBase. (yoavs)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=40150">40150</a>: Ensure user and roll classnames are validated on startup.  Patch by

-          Tom. (yoavs)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Refactor extend access log valve using the optimized access log valve. Submitted by

-        Takayuki Kaneko. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Possible deadlock in classloading when defining packages. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Remove excessive syncing from listener support. (remm)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Web services support. The actual factory implementations are implemented in the

-        extras. Submitted by Fabien Carrion. (remm)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Add logging to display APR capabilities on the platform. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Expose executors in JMX. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        CRLF inside a URL pattern is always invalid. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Tweak startup time display. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Adjustments to handling exceptions with Comet. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        If the event is closed asynchronously, generate an end event for cleanup on the

-        next event. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Cleanup hello webapp from the docs and fix a XSS issue in the JSP.  (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Examples webapp cleanup. Submitted by Takayuki Kaneko and Markus Sch&ouml;nhaber. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41289">41289</a>: Create configBase, since it is no longer created elsewhere.

-        Submitted by Shiva Kumar H R. (remm)

-      </td></tr>

-     </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.11 (remm)/Coyote"><!--()--></a><a name="Tomcat_6.0.11_(remm)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Fixed NIO memory leak caused by the NioChannel cache not working properly.

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Added flag to enable/disable the usage of the pollers selector instead of a Selector pool

-        when the serviet is reading/writing from the input/output streams

-        The flag is <code>-Dorg.apache.tomcat.util.net.NioSelectorShared=true</code>

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Requests with multiple content-length headers are now rejected. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41675">41675</a>: Add a couple of DEBUG-level logging statements to Http11Processors

-          when sending error responses.  Patch by Ralf Hauser. (yoavs)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Reuse digester used by the modeler. (remm)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        When the platform does not support deferred accept, put accepted sockets in the

-        poller. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix problem with blocking reads for keepalive when using an executor (the number

-        of busy threads is always 0). (remm)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        The poller now has good performance, so remove firstReadTimeout. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42119">42119</a>: Fix return value for request.getCharacterEncoding() when

-        Content-Type headers contain parameters other than charset. Patch by

-        Leigh L Klotz Jr. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.11 (remm)/Web applications"><!--()--></a><a name="Tomcat_6.0.11_(remm)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix previous update to servlet 2.5 xsd to use correct declaration.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update host configuration document for new behaviour for directories

-        in appBase. (markt)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=39540">39540</a>: Add link to httpd 2.2 mod_proxy_ajp docs in AJP connector doc. (yoavs)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.11 (remm)/Jasper"><!--()--></a><a name="Tomcat_6.0.11_(remm)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41227">41227</a>: Add a bit of DEBUG-level logging to JspC so users know

-          which file is being compiled. (yoavs)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Remove some dead utility code, and refactor stream capture as part of the Ant compiler. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Support the trim directive of JSP 2.1 as an equivalent of Jasper's own parameter. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41790">41790</a>: Close file stream used to read the Java source. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix reporting of errors which do not correspond to a portion of the JSP source. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Remove try/catch usage for annotation processing in classic tags. The usage

-        of the log method might have been questionable as well. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Cleanup of the message that is displayed for compilation errors. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Skip BOM when reading a JSP file. (remm)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

- </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.10 (remm)"><!--()--></a><a name="Tomcat_6.0.10_(remm)"><strong>Tomcat 6.0.10 (remm)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2007-02-28</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.10 (remm)/Catalina"><!--()--></a><a name="Tomcat_6.0.10_(remm)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Unify usage of security manager flag, submitted by Arvind Srinivasan. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix formatting of CGI variable SCRIPT_NAME. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41521">41521</a>: Support * for servlet-name, submitted by Paul McMahan. (remm)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Cache getServletContext value, submitted by Arvind Srinivasan. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Add options for handling special URL characters in paths, and disallow '\' and encoded '/'

-        due to possible differences in behavior between Tomcat and a front end webserver. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix bad comparison for FORM processing, submitted by Anil Saldhana. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41608">41608</a>: Make log levels consistent when Servlet.service()

-        throws an exception. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.10 (remm)/Coyote"><!--()--></a><a name="Tomcat_6.0.10_(remm)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Reduce usage of MessageBytes.getLength(), submitted by Arvind Srinivasan. (remm)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.10 (remm)/Jasper"><!--()--></a><a name="Tomcat_6.0.10_(remm)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41558">41558</a>: Don't call synced method on every request, submitted by Arvind Srinivasan. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Switch to a thread local page context pool. (remm)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.9 (remm)"><!--()--></a><a name="Tomcat_6.0.9_(remm)"><strong>Tomcat 6.0.9 (remm)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>beta, 2007-02-08</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.9 (remm)/General"><!--()--></a><a name="Tomcat_6.0.9_(remm)/General"><strong>General</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Use 2.5 xsd in Tomcat webapps. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Compression filter improvements, submitted by Eric Hedstr&ouml;m. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.9 (remm)/Catalina"><!--()--></a><a name="Tomcat_6.0.9_(remm)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Properly return connector names. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Remove logging of the XML validation flag. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Correct error messages for context.xml. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41217">41217</a>: Set secure flag correctly on SSO cookie, submitted by

-        Chris Halstead. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=40524">40524</a>: request.getAuthType() now returns CLIENT_CERT rather

-        than CLIENT-CERT. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=40526">40526</a>: Return support for JPDA_OPTS to catalina.bat and add

-        a new option JPDA_SUSPEND, submitted by by Kurt Roy. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41265">41265</a>: In embedded, remove the code that resets checkInterval

-        values of zero to 300. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.9 (remm)/Coyote"><!--()--></a><a name="Tomcat_6.0.9_(remm)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=37869">37869</a>: Fix getting client certificate, submitted by Christophe Pierret. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=40960">40960</a>: Throw a timeout exception when getting a timeout rather than a

-        generic IOE, submitted by Christophe Pierret. (remm)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.9 (remm)/Jasper"><!--()--></a><a name="Tomcat_6.0.9_(remm)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        EL validation fixes for attributes. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41327">41327</a>: Show full URI for a 404. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        JspException now uses getCause() as the result for getRootCause(). (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.9 (remm)/Cluster"><!--()--></a><a name="Tomcat_6.0.9_(remm)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41466">41466</a>: When using the NioChannel and SecureNioChannel its

-        important to use the channels buffers. (fhanik)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.8 (remm)"><!--()--></a><a name="Tomcat_6.0.8_(remm)"><strong>Tomcat 6.0.8 (remm)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>alpha</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.8 (remm)/Catalina"><!--()--></a><a name="Tomcat_6.0.8_(remm)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Make provided instances of RequestDispatcher thread safe. (markt)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Optional development oriented loader implementation. (funkman)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Optimized access log valve, submitted by Takayuki Kaneko. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix error messages when parsing context.xml that incorrectly referred to

-        web.xml. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41217">41217</a>: Set secure attribute on SSO cookie when cookie is

-        created during a secure request. Patch provided by Chris Halstead.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=40524">40524</a>: HttpServletRequest.getAuthType() now returns

-        CLIENT_CERT rather than CLIENT-CERT for certificate authentication

-        as per the spec. Note that web.xml continues to use CLIENT-CERT to

-        specify the certificate authentication should be used. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41401">41401</a>: Add support for JPDA_OPTS to catalina.bat and add a

-        JPDA_SUSPEND environment variable to both startup scripts. Patch

-        provided by Kurt Roy. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.8 (remm)/Coyote"><!--()--></a><a name="Tomcat_6.0.8_(remm)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Use the tomcat-native-1.1.10 as recommended version.

-        OpenSSL detection on some platforms was broken 1.1.8 will continue to work,

-        although on some platforms there can be JVM crash if IPV6 is enabled and

-        platform doesn't support IPV4 mapped addresses on IPV6 sockets.

-      </td></tr>

-  </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.8 (remm)/Jasper"><!--()--></a><a name="Tomcat_6.0.8_(remm)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        When displaying JSP source after an exception, handle included files.

-        (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Display the JSP source when a compilation error occurs and display

-        the correct line number rather than start of a scriptlet block. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix NPE when processing dynamic attributes. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        More accurate EL usage validation. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix regression for implicit taglib and page data version numbers. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41265">41265</a>: Allow JspServlet checkInterval init parameter to be

-        explicitly set to the stated default value of zero by removing the

-        code that resets it to 300 if explicitly specified as zero. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41327">41327</a>: Show full URI for a 404. Patch provided by Vijay.

-        (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.8 (remm)/Web applications"><!--()--></a><a name="Tomcat_6.0.8_(remm)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="docs" class="icon" src="./images/docs.gif"></td><td>

-        Add a virtual hosting how-to contributed by Hassan Schroeder. (markt)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update all webapps to use the servlet 2.5 xsd. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=39572">39572</a>: Improvements to CompressionFilter example provided by

-        Eric Hedstr&ouml;m. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.7 (remm)"><!--()--></a><a name="Tomcat_6.0.7_(remm)"><strong>Tomcat 6.0.7 (remm)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>beta, 2007-01-10</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.7 (remm)/General"><!--()--></a><a name="Tomcat_6.0.7_(remm)/General"><strong>General</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix installer's bitmap (mturk)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.7 (remm)/Catalina"><!--()--></a><a name="Tomcat_6.0.7_(remm)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Refactor logging of errors which may occur when reading a post body (remm)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.7 (remm)/Coyote"><!--()--></a><a name="Tomcat_6.0.7_(remm)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=37869">37869</a>: Also use the SSL_INFO_CLIENT_CERT field if the chain is empty,

-        submitted by Grzegorz Grzybek (remm)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.6 (remm)"><!--()--></a><a name="Tomcat_6.0.6_(remm)"><strong>Tomcat 6.0.6 (remm)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>alpha</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.6 (remm)/General"><!--()--></a><a name="Tomcat_6.0.6_(remm)/General"><strong>General</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix tagging which did not include 6.0.5's changelog (remm)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.5 (remm)"><!--()--></a><a name="Tomcat_6.0.5_(remm)"><strong>Tomcat 6.0.5 (remm)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.5 (remm)/Catalina"><!--()--></a><a name="Tomcat_6.0.5_(remm)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=40585">40585</a>: Fix parameterised constructor for o.a.juli.FileHandler

-        so parameters have an effect. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Escape invalid characters from request.getLocale. (markt, remm)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update required version for native to 1.1.8. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Do not log broken pipe errors which can occur when flushing the content of an error page. (remm)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.5 (remm)/Coyote"><!--()--></a><a name="Tomcat_6.0.5_(remm)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix firstReadTimeout behavior for the AJP connector. (remm)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.5 (remm)/Jasper"><!--()--></a><a name="Tomcat_6.0.5_(remm)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41057">41057</a>: Make jsp:plugin output XHTML compliant. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.5 (remm)/Cluster"><!--()--></a><a name="Tomcat_6.0.5_(remm)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Cluster interface cleanup. (fhanik)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Refactoring to allow usage of executors. (fhanik)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.4 (remm)"><!--()--></a><a name="Tomcat_6.0.4_(remm)"><strong>Tomcat 6.0.4 (remm)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>alpha</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.4 (remm)/General"><!--()--></a><a name="Tomcat_6.0.4_(remm)/General"><strong>General</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update to NSIS 2.22 (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix regression in 6.0.3 with Windows wrapper (mturk)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.3 (remm)"><!--()--></a><a name="Tomcat_6.0.3_(remm)"><strong>Tomcat 6.0.3 (remm)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.3 (remm)/General"><!--()--></a><a name="Tomcat_6.0.3_(remm)/General"><strong>General</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.3 (remm)/Catalina"><!--()--></a><a name="Tomcat_6.0.3_(remm)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=37509">37509</a>: Do not remove whitespace from the end of values

-        defined in logging.properties files. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=38198">38198</a>: Add reference to Context documentation from Host

-        documentation that explains how Context name is obtained from the

-        Context filename. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=40844">40844</a>: Missing syncs in JDBCRealm. (markt)

-      </td></tr>

-       <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=40901">40901</a>: Encode directory listing output. Based on a patch

-        provided by Chris Halstead. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=40929">40929</a>: Correct JavaDoc for StandardClassLoader. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41008">41008</a>: Allow POST to be used for indexed queries with CGI

-        Servlet. Patch provided by Chris Halstead. (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix usage of print on the servlet output stream if the processor never used

-        a writer (fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix logic of sameSameObjects used to determine correct wrapping of request and

-        response objects (fhanik)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Update TLD scan lists, and disable caching for now (remm)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Add system property to WebappClassLoader to allow disabling setting references

-        to null when stopping it (remm)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Add clustered SSO code, submitted by Fabien Carrion (remm)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.3 (remm)/Coyote"><!--()--></a><a name="Tomcat_6.0.3_(remm)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=40860">40860</a>: Log exceptions and other problems during parameter

-        processing. (markt)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Enable JMX for trust store attributes for SSL connector. (markt)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Port memory usage reduction changes to the java.io HTTP connector. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        MessageBytes.setString(null) will remove the String value. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41057">41057</a>: Caching large strings is not useful and takes too much

-        memory, so don't cache these (remm)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Add keepAliveTimeout attribute to most connectors (mturk, remm)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.3 (remm)/Jasper"><!--()--></a><a name="Tomcat_6.0.3_(remm)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Relax EL type validation for litterals. (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Update some version numbers to 2.1. (funkman, remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Add xsds for JSP 2.1 (remm)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41106">41106</a>: Update validation checks for EL to also include

-        legacy 1.2 tags (remm)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.3 (remm)/Web applications"><!--()--></a><a name="Tomcat_6.0.3_(remm)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=40677">40677</a>: Update SSL documentation to indicate that PKCS11

-        keystores may be used. (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.2 (remm)"><!--()--></a><a name="Tomcat_6.0.2_(remm)"><strong>Tomcat 6.0.2 (remm)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>beta, 2006-11-23</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.2 (remm)/General"><!--()--></a><a name="Tomcat_6.0.2_(remm)/General"><strong>General</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Various tweaks to distribution (remm, funkman)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update Tomcat native to 1.1.7 (mturk)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Update to JDT 3.2.1 (remm)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.2 (remm)/Catalina"><!--()--></a><a name="Tomcat_6.0.2_(remm)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix EJB annotation interface (remm)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.2 (remm)/Coyote"><!--()--></a><a name="Tomcat_6.0.2_(remm)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        Fix passing of the keystore password for the NIO connector (fhanik)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.1 (remm)"><!--()--></a><a name="Tomcat_6.0.1_(remm)"><strong>Tomcat 6.0.1 (remm)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>alpha</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.1 (remm)/General"><!--()--></a><a name="Tomcat_6.0.1_(remm)/General"><strong>General</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=37439">37439</a>, <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=40823">40823</a>: Documentation cleanup (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.1 (remm)/Catalina"><!--()--></a><a name="Tomcat_6.0.1_(remm)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Refactor exception processing using Throwable.getCause to improve exception chaining (remm)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Remove dead code involving the Logger (funkman)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=37458">37458</a>: Fix some exceptions which could happen during classloading (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=40817">40817</a>: Fix CGI path (markt)

-      </td></tr>

-      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

-        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=34956">34956</a>: Add the possibility to enforce usage of request and response

-        wrapper objects (markt)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.1 (remm)/Jasper"><!--()--></a><a name="Tomcat_6.0.1_(remm)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Many fixes for JSP 2.1 compliance, invloving tag files handling, deferred expressions

-        validation, bom encoding support (remm)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.1 (remm)/Coyote"><!--()--></a><a name="Tomcat_6.0.1_(remm)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Many HTTP NIO connector fixes and refactorings (fhanik)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        HTTP NIO connector performance improvements (fhanik)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Add packetSize option for the classic AJP connector (jfclere)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Implement explicit flushing in AJP (mturk)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.0 (remm)"><!--()--></a><a name="Tomcat_6.0.0_(remm)"><strong>Tomcat 6.0.0 (remm)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>alpha</strong></font></td></tr><tr><td colspan="2"><blockquote>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.0 (remm)/Catalina"><!--()--></a><a name="Tomcat_6.0.0_(remm)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        SSLEngine attribute added to the AprLifecycleListener(fhanik)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Add API for Comet IO handling (remm, fhanik)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Servlet 2.5 support (remm)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.0 (remm)/Jasper"><!--()--></a><a name="Tomcat_6.0.0_(remm)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        JSP 2.1 support (jhook, remm)

-      </td></tr>

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        Unifed EL 2.1 support (jhook)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.0 (remm)/Coyote"><!--()--></a><a name="Tomcat_6.0.0_(remm)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        SSLEnabled attribute required for SSL to be turned on, on all HTTP connectors (fhanik)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Memory usage reduction for the HTTP connectors, except java.io (remm)

-      </td></tr>

-      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

-        Modeler update to use dynamic mbeans rather than model mbeans, which consume more

-        resources (costin)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 6.0.0 (remm)/Cluster"><!--()--></a><a name="Tomcat_6.0.0_(remm)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="0" cellpadding="2" cellspacing="2">

-      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

-        New cluster configuration and new documentation (fhanik)

-      </td></tr>

-    </table>

-  </blockquote></td></tr></table>

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/class-loader-howto.html b/tomcat-uid/webapps/docs/class-loader-howto.html
index e010551..2a92f5b 100644
--- a/tomcat-uid/webapps/docs/class-loader-howto.html
+++ b/tomcat-uid/webapps/docs/class-loader-howto.html
@@ -1,9 +1,84 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 6.0 (6.0.41) - Class Loader HOW-TO</title><meta name="author" content="Craig R. McClanahan"><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - Class Loader HOW-TO</title><meta name="author" content="Craig R. McClanahan"><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat 6.0</h1><h2>Class Loader HOW-TO</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Class Loader HOW-TO</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Overview">Overview</a></li><li><a href="#Class_Loader_Definitions">Class Loader Definitions</a></li><li><a href="#XML_Parsers_and_Java">XML Parsers and Java</a></li><li><a href="#Running_under_a_security_manager">Running under a security manager</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Overview"><strong>Overview</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -27,15 +102,13 @@
 organized into the following parent-child relationships, where the parent

 class loader is above the child class loader:</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-      Bootstrap

+<div class="codeBox"><pre><code>      Bootstrap

           |

        System

           |

        Common

        /     \

-  Webapp1   Webapp2 ... 

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+  Webapp1   Webapp2 ...</code></pre></div>

 

 <p>The characteristics of each of these class loaders, including the source

 of classes and resources that they make visible, are discussed in detail in

@@ -43,7 +116,7 @@
 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Class Loader Definitions"><!--()--></a><a name="Class_Loader_Definitions"><strong>Class Loader Definitions</strong></a></font></td></tr><tr><td><blockquote>

 

-<p>As indicated in the diagram above, Tomcat 6 creates the following class

+<p>As indicated in the diagram above, Tomcat creates the following class

 loaders as it is initialized:</p>

 <ul>

 <li><p><strong>Bootstrap</strong> &mdash; This class loader contains the basic

@@ -65,34 +138,26 @@
     <li><p><em>$CATALINA_HOME/bin/bootstrap.jar</em> &mdash; Contains the

         main() method that is used to initialize the Tomcat server, and the

         class loader implementation classes it depends on.</p></li>

-    <li><p><em>$CATALINA_BASE/bin/tomcat-juli.jar</em> and

+    <li><p><em>$CATALINA_BASE/bin/tomcat-juli.jar</em> or

         <em>$CATALINA_HOME/bin/tomcat-juli.jar</em> &mdash; Logging

         implementation classes. These include enhancement classes to

         <code>java.util.logging</code> API, known as Tomcat JULI,

         and a package-renamed copy of Apache Commons Logging library

         used internally by Tomcat.

         See <a href="logging.html">logging documentation</a> for more

-        details.</p></li>

+        details.</p>

+        <p>If <code>tomcat-juli.jar</code> is present in

+        <em>$CATALINA_BASE/bin</em>, it is used instead of the one in

+        <em>$CATALINA_HOME/bin</em>. It is useful in certain logging

+        configurations</p></li>

     <li><p><em>$CATALINA_HOME/bin/commons-daemon.jar</em> &mdash; The classes

         from <a href="http://commons.apache.org/daemon/">Apache Commons

-        Daemon</a> project.</p></li>

+        Daemon</a> project.

+        This JAR file is not present in the <code>CLASSPATH</code> built by

+        <code>catalina.bat</code>|<code>.sh</code> scripts, but is referenced

+        from the manifest file of <em>bootstrap.jar</em>.</p></li>

     </ul>

-    <p>The <em>tomcat-juli.jar</em> and <em>commons-daemon.jar</em> JARs in

-    <em>$CATALINA_HOME/bin</em> are not present in the <code>CLASSPATH</code>

-    built by <code>catalina.bat</code>|<code>.sh</code> scripts, but are

-    referenced from the manifest file of <em>bootstrap.jar</em>.

-    </p>

-    <p>If <em>$CATALINA_BASE</em> and <em>$CATALINA_HOME</em> do differ and

-    <em>$CATALINA_BASE/bin/tomcat-juli.jar</em> does exist, the startup scripts

-    will add it to <code>CLASSPATH</code> before <em>bootstrap.jar</em>, so

-    that Java will look into <em>$CATALINA_BASE/bin/tomcat-juli.jar</em> for

-    classes before it will look into <em>$CATALINA_HOME/bin/tomcat-juli.jar</em>

-    referenced by <em>bootstrap.jar</em>. It should work in most cases but,

-    if you are using such configuration, it might be recommended to remove

-    <em>tomcat-juli.jar</em> from <em>$CATALINA_HOME/bin</em> so that only

-    one copy of the file is present on the classpath. The next version of

-    Tomcat, Tomcat 7, takes different approach here.

-    </p></li>

+    </li>

 <li><p><strong>Common</strong> &mdash; This class loader contains additional

     classes that are made visible to both Tomcat internal classes and to all

     web applications.</p>

@@ -116,19 +181,27 @@
     <li><em>catalina-ha.jar</em> &mdash; High availability package.</li>

     <li><em>catalina-tribes.jar</em> &mdash; Group communication package.</li>

     <li><em>ecj-*.jar</em> &mdash; Eclipse JDT Java compiler.</li>

-    <li><em>el-api.jar</em> &mdash; EL 2.1 API.</li>

+    <li><em>el-api.jar</em> &mdash; EL 2.2 API.</li>

     <li><em>jasper.jar</em> &mdash; Tomcat Jasper JSP Compiler and Runtime.</li>

     <li><em>jasper-el.jar</em> &mdash; Tomcat Jasper EL implementation.</li>

-    <li><em>jsp-api.jar</em> &mdash; JSP 2.1 API.</li>

-    <li><em>servlet-api.jar</em> &mdash; Servlet 2.5 API.</li>

+    <li><em>jsp-api.jar</em> &mdash; JSP 2.2 API.</li>

+    <li><em>servlet-api.jar</em> &mdash; Servlet 3.0 API.</li>

+    <li><em>tomcat-api.jar</em> &mdash; Several interfaces defined by Tomcat.</li>

     <li><em>tomcat-coyote.jar</em> &mdash; Tomcat connectors and utility classes.</li>

     <li><em>tomcat-dbcp.jar</em> &mdash; Database connection pool

         implementation based on package-renamed copy of Apache Commons Pool

         and Apache Commons DBCP.</li>

     <li><em>tomcat-i18n-**.jar</em> &mdash; Optional JARs containing resource bundles

-        for other languages. As default bundles are also included in each 

+        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.</li>

+    <li><em>tomcat-jdbc.jar</em> &mdash; An alternative database connection pool

+        implementation, known as Tomcat JDBC pool. See

+        <a href="jdbc-pool.html">documentation</a> for more details.</li>

+    <li><em>tomcat-util.jar</em> &mdash; Common classes used by various components of

+        Apache Tomcat.</li>

+    <li><em>tomcat7-websocket.jar</em> &mdash; WebSocket 1.1 implementation</li>

+    <li><em>websocket-api.jar</em> &mdash; WebSocket 1.1 API</li>

     </ul></li>

 <li><p><strong>WebappX</strong> &mdash; A class loader is created for each web

     application that is deployed in a single Tomcat instance.  All unpacked

@@ -139,30 +212,42 @@
 </ul>

 

 <p>As mentioned above, the web application class loader diverges from the

-default Java 2 delegation model (in accordance with the recommendations in the

-Servlet Specification, version 2.4, section 9.7.2 Web Application Classloader).  

+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 <em>WebappX</em> class loader is processed,

 this class loader will look in the local repositories <strong>first</strong>,

 instead of delegating before looking.  There are exceptions. Classes which are

-part of the JRE base classes cannot be overriden. For some classes (such as

-the XML parser components in J2SE 1.4+), the J2SE 1.4 endorsed feature can be 

+part of the JRE base classes cannot be overridden. For some classes (such as

+the XML parser components in J2SE 1.4+), the J2SE 1.4 endorsed feature can be

 used.

 Last, any JAR file that contains Servlet API classes will be explicitly

 ignored by the classloader &mdash; Do not include such JARs in your web

 application.

-All other class loaders in Tomcat 6 follow the usual delegation pattern.</p>

+All other class loaders in Tomcat follow the usual delegation pattern.</p>

 

 <p>Therefore, from the perspective of a web application, class or resource

 loading looks in the following repositories, in this order:</p>

 <ul>

 <li>Bootstrap classes of your JVM</li>

-<li>System class loader classes (described above)</li>

 <li><em>/WEB-INF/classes</em> of your web application</li>

 <li><em>/WEB-INF/lib/*.jar</em> of your web application</li>

+<li>System class loader classes (described above)</li>

 <li>Common class loader classes (described above)</li>

 </ul>

 

+<p>If the web application class loader is

+<a href="config/loader.html">configured</a> with

+<code>&lt;Loader delegate="true"/&gt;</code>

+then the order becomes:</p>

+<ul>

+<li>Bootstrap classes of your JVM</li>

+<li>System class loader classes (described above)</li>

+<li>Common class loader classes (described above)</li>

+<li><em>/WEB-INF/classes</em> of your web application</li>

+<li><em>/WEB-INF/lib/*.jar</em> of your web application</li>

+</ul>

+

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="XML Parsers and Java"><!--()--></a><a name="XML_Parsers_and_Java"><strong>XML Parsers and Java</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>Starting with Java 1.4 a copy of JAXP APIs and an XML parser are packed

@@ -196,6 +281,31 @@
 file. See <a href="security-manager-howto.html">Security Manager HOW-TO</a>

 for further information.</p>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/class-loader-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/cluster-howto.html b/tomcat-uid/webapps/docs/cluster-howto.html
index b2ae68d..ac90474 100644
--- a/tomcat-uid/webapps/docs/cluster-howto.html
+++ b/tomcat-uid/webapps/docs/cluster-howto.html
@@ -1,36 +1,119 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 6.0 (6.0.41) - Clustering/Session Replication HOW-TO</title><meta name="author" content="Filip Hanik"><meta name="author" content="Peter Rossbach"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - Clustering/Session Replication HOW-TO</title><meta name="author" content="Filip Hanik"><meta name="author" content="Peter Rossbach"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat 6.0</h1><h2>Clustering/Session Replication HOW-TO</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Important Note"><!--()--></a><a name="Important_Note"><strong>Important Note</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Clustering/Session Replication HOW-TO</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Important Note"><!--()--></a><a name="Important_Note"><strong>Important Note</strong></a></font></td></tr><tr><td><blockquote>

 <p><b>You can also check the <a href="config/cluster.html">configuration reference documentation.</a></b>

 </p>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

-<ul><li><a href="#For_the_impatient">For the impatient</a></li><li><a href="#Cluster_Basics">Cluster Basics</a></li><li><a href="#Overview">Overview</a></li><li><a href="#Cluster_Information">Cluster Information</a></li><li><a href="#Bind_session_after_crash_to_failover_node">Bind session after crash to failover node</a></li><li><a href="#Configuration_Example">Configuration Example</a></li><li><a href="#Cluster_Architecture">Cluster Architecture</a></li><li><a href="#How_it_Works">How it Works</a></li><li><a href="#FAQ">FAQ</a></li></ul>

+<ul><li><a href="#For_the_impatient">For the impatient</a></li><li><a href="#Security">Security</a></li><li><a href="#Cluster_Basics">Cluster Basics</a></li><li><a href="#Overview">Overview</a></li><li><a href="#Cluster_Information">Cluster Information</a></li><li><a href="#Bind_session_after_crash_to_failover_node">Bind session after crash to failover node</a></li><li><a href="#Configuration_Example">Configuration Example</a></li><li><a href="#Cluster_Architecture">Cluster Architecture</a></li><li><a href="#How_it_Works">How it Works</a></li><li><a href="#Monitoring_your_Cluster_with_JMX">Monitoring your Cluster with JMX</a></li><li><a href="#FAQ">FAQ</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="For the impatient"><!--()--></a><a name="For_the_impatient"><strong>For the impatient</strong></a></font></td></tr><tr><td><blockquote>

   <p>

-    Simply add <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>&lt;Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/&gt;</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    Simply add

+  </p>

+  <div class="codeBox"><pre><code>&lt;Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/&gt;</code></pre></div>

+  <p>

     to your <code>&lt;Engine&gt;</code> or your <code>&lt;Host&gt;</code> element to enable clustering.

   </p>

   <p>

     Using the above configuration will enable all-to-all session replication

-    using the <code>DeltaManager</code> 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).

+    using the <code>DeltaManager</code> 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.<br>

     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.

-    <br>

-    Here are some of the important default values:<br>

-    1. Multicast address is 228.0.0.4<br>

-    2. Multicast port is 45564 (the port and the address together determine cluster membership.<br>

-    3. The IP broadcasted is <code>java.net.InetAddress.getLocalHost().getHostAddress()</code> (make sure you don't broadcast 127.0.0.1, this is a common error)<br>

-    4. The TCP port listening for replication messages is the first available server socket in range <code>4000-4100</code><br>

-    5. Two listeners are configured <code>ClusterSessionListener</code> and <code>JvmRouteSessionIDBinderListener</code><br>

-    6. Two interceptors are configured <code>TcpFailureDetector</code> and <code>MessageDispatch15Interceptor</code><br>

-    The following is the default cluster configuration:<br>

-    <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-        &lt;Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"

+  </p>

+  <p>

+    Here are some of the important default values:

+  </p>

+  <ol>

+    <li>Multicast address is 228.0.0.4</li>

+    <li>Multicast port is 45564 (the port and the address together determine cluster membership.</li>

+    <li>The IP broadcasted is <code>java.net.InetAddress.getLocalHost().getHostAddress()</code> (make sure you don't broadcast 127.0.0.1, this is a common error)</li>

+    <li>The TCP port listening for replication messages is the first available server socket in range <code>4000-4100</code></li>

+    <li>Listener is configured <code>ClusterSessionListener</code></li>

+    <li>Two interceptors are configured <code>TcpFailureDetector</code> and <code>MessageDispatch15Interceptor</code></li>

+  </ol>

+  <p>

+    The following is the default cluster configuration:

+  </p>

+  <div class="codeBox"><pre><code>        &lt;Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"

                  channelSendOptions="8"&gt;

 

           &lt;Manager className="org.apache.catalina.ha.session.DeltaManager"

@@ -67,21 +150,33 @@
                     watchDir="/tmp/war-listen/"

                     watchEnabled="false"/&gt;

 

-          &lt;ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/&gt;

-          &lt;ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/&gt;

-        &lt;/Cluster&gt;    

-    </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-  </p>

+          &lt;ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"&gt;

+          &lt;ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"&gt;

+        &lt;/Cluster&gt;</code></pre></div>

   <p>Will cover this section in more detail later in this document.</p>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Security"><strong>Security</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>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.</p>

+

+<p>There are many options for providing a secure, trusted network for use by a

+Tomcat cluster. These include:</p>

+<ul>

+  <li>private LAN</li>

+  <li>a Virtual Private Network (VPN)</li>

+  <li>IPSEC</li>

+</ul>

+

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Cluster Basics"><!--()--></a><a name="Cluster_Basics"><strong>Cluster Basics</strong></a></font></td></tr><tr><td><blockquote>

 

-<p>To run session replication in your Tomcat 6.0 container, the following steps

+<p>To run session replication in your Tomcat 7.0 container, the following steps

 should be completed:</p>

 <ul>

   <li>All your session attributes must implement <code>java.io.Serializable</code></li>

   <li>Uncomment the <code>Cluster</code> element in server.xml</li>

   <li>If you have defined custom cluster valves, make sure you have the <code>ReplicationValve</code>  defined as well under the Cluster element in server.xml</li>

-  <li>If your Tomcat instances are running on the same machine, make sure the <code>tcpListenPort</code>

+  <li>If your Tomcat instances are running on the same machine, make sure the <code>Receiver.port</code>

       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</li>

   <li>Make sure your <code>web.xml</code> has the

       <code>&lt;distributable/&gt;</code> element</li>

@@ -95,37 +190,35 @@
 <p>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.</p>

 <p>Note: Clustering support currently requires the JDK version 1.5 or later.</p>

-<p>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:<code>org.apache.catalina.tribes.MESSAGES</code></p>

+<p>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: <code>org.apache.catalina.tribes.MESSAGES</code></p>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Overview"><strong>Overview</strong></a></font></td></tr><tr><td><blockquote>

 

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

 <ol>

   <li>Using session persistence, and saving the session to a shared file system (PersistenceManager + FileStore)</li>

   <li>Using session persistence, and saving the session to a shared database (PersistenceManager + JDBCStore)</li>

-  <li>Using in-memory-replication, using the SimpleTcpCluster that ships with Tomcat 6 (lib/catalina-tribes.jar + lib/catalina-ha.jar)</li>

+  <li>Using in-memory-replication, using the SimpleTcpCluster that ships with Tomcat (lib/catalina-tribes.jar + lib/catalina-ha.jar)</li>

 </ol>

 

-<p>In this release of session replication, Tomcat can perform an all-to-all replication of session state using the <code>DeltaManager</code> or 

+<p>In this release of session replication, Tomcat can perform an all-to-all replication of session state using the <code>DeltaManager</code> or

    perform backup replication to only one node using the <code>BackupManager</code>.

-   The all-to-all replication is an algorithm that is only efficient when the clusters are small. For larger clusters,  to use 

+   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. <br>

    Currently you can use the domain worker attribute (mod_jk &gt; 1.2.8) to build cluster partitions

-   with the potential of having a more scaleable cluster solution with the DeltaManager(you'll need to configure the domain interceptor for this).

+   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:

    </p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-        DNS Round Robin

+<div class="codeBox"><pre><code>        DNS Round Robin

                |

          Load Balancer

           /           \

       Cluster1      Cluster2

       /     \        /     \

-  Tomcat1 Tomcat2  Tomcat3 Tomcat4

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+  Tomcat1 Tomcat2  Tomcat3 Tomcat4</code></pre></div>

 

 <p>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

@@ -134,12 +227,12 @@
 <p>In the next section will go deeper into how session replication works and how to configure it.</p>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Cluster Information"><!--()--></a><a name="Cluster_Information"><strong>Cluster Information</strong></a></font></td></tr><tr><td><blockquote>

-<p>Membership is established using multicast heartbeats. 

-   Hence, if you wish to subdivide your clusters, you can do this by 

+<p>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 <code>&lt;Membership&gt;</code> element.

 </p>

 <p>

-   The heartbeat contains the IP address of the Tomcat node and the TCP port that 

+   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.

 </p>

 <p>

@@ -153,27 +246,27 @@
     sent over the wire and reinstantiated on all the other cluster nodes.

     Synchronous vs. asynchronous is configured using the <code>channelSendOptions</code>

     flag and is an integer value. The default value for the <code>SimpleTcpCluster/DeltaManager</code> combo is

-    8, which is asynchronous. You can read more on the <a href="tribes/introduction.html">send flag(overview)</a> or the 

-    <a href="http://tomcat.apache.org/tomcat-6.0-doc/api/org/apache/catalina/tribes/Channel.html">send flag(javadoc)</a>.

+    8, which is asynchronous. You can read more on the <a href="tribes/introduction.html">send flag(overview)</a> or the

+    <a href="http://tomcat.apache.org/tomcat-7.0-doc/api/org/apache/catalina/tribes/Channel.html">send flag(javadoc)</a>.

     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.

 </p>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Bind session after crash to failover node"><!--()--></a><a name="Bind_session_after_crash_to_failover_node"><strong>Bind session after crash to failover node</strong></a></font></td></tr><tr><td><blockquote>

 <p>

-    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 

+    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.

 </p>

-<p> 

+<p>

     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 stickyness in case of a failure for the mod_jk module.

+    Not having this valve in place, will make it harder to ensure stickiness in case of a failure for the mod_jk module.

 </p>

 <p>

     By default, if no valves are configured, the JvmRouteBinderValve is added on.

-    The cluster message listener called JvmRouteSessionIDBinderListener is also defined by default and is used to actually rewrite the 

+    The cluster message listener called JvmRouteSessionIDBinderListener is also defined by default and is used to actually rewrite the

     session id on the other nodes in the cluster once a fail over has occurred.

     Remember, if you are adding your own valves or cluster listeners in server.xml then the defaults are no longer valid,

     make sure that you add in all the appropriate valves and listeners as defined by the default.

@@ -181,21 +274,19 @@
 <p>

     <b>Hint:</b><br>

     With attribute <i>sessionIdAttribute</i> you can change the request attribute name that included the old session id.

-    Default attribute name is <i>org.apache.catalina.cluster.session.JvmRouteOrignalSessionID</i>.

+    Default attribute name is <i>org.apache.catalina.ha.session.JvmRouteOrignalSessionID</i>.

 </p>

 <p>

     <b>Trick:</b><br>

     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. 

+    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.

 </p>

 

 

-

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Configuration Example"><!--()--></a><a name="Configuration_Example"><strong>Configuration Example</strong></a></font></td></tr><tr><td><blockquote>

-    <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-        &lt;Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"

+    <div class="codeBox"><pre><code>        &lt;Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"

                  channelSendOptions="6"&gt;

 

           &lt;Manager className="org.apache.catalina.ha.session.BackupManager"

@@ -206,7 +297,7 @@
           &lt;Manager className="org.apache.catalina.ha.session.DeltaManager"

                    expireSessionsOnShutdown="false"

                    notifyListenersOnReplication="true"/&gt;

-          --&gt;        

+          --&gt;

           &lt;Channel className="org.apache.catalina.tribes.group.GroupChannel"&gt;

             &lt;Membership className="org.apache.catalina.tribes.membership.McastService"

                         address="228.0.0.4"

@@ -228,7 +319,7 @@
           &lt;/Channel&gt;

 

           &lt;Valve className="org.apache.catalina.ha.tcp.ReplicationValve"

-                 filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/&gt;

+                 filter=".*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html|.*\.css|.*\.txt"/&gt;

 

           &lt;Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"

                     tempDir="/tmp/war-temp/"

@@ -237,27 +328,23 @@
                     watchEnabled="false"/&gt;

 

           &lt;ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/&gt;

-        &lt;/Cluster&gt;

-    </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+        &lt;/Cluster&gt;</code></pre></div>

     <p>

       Break it down!!

     </p>

-    <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-        &lt;Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"

-                 channelSendOptions="6"&gt;

-    </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <div class="codeBox"><pre><code>        &lt;Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"

+                 channelSendOptions="6"&gt;</code></pre></div>

     <p>

       The main element, inside this element all cluster details can be configured.

       The <code>channelSendOptions</code> 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 <a href="http://tomcat.apache.org/tomcat-6.0-doc/api/org/apache/catalina/tribes/Channel.html">

+      The description of the send flags is available at <a href="http://tomcat.apache.org/tomcat-7.0-doc/api/org/apache/catalina/tribes/Channel.html">

       our javadoc site</a>

       The <code>DeltaManager</code> sends information using the SimpleTcpCluster.send method, while the backup manager

       sends it itself directly through the channel.

       <br>For more info, Please visit the <a href="config/cluster.html">reference documentation</a>

     </p>

-    <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-          &lt;Manager className="org.apache.catalina.ha.session.BackupManager"

+    <div class="codeBox"><pre><code>          &lt;Manager className="org.apache.catalina.ha.session.BackupManager"

                    expireSessionsOnShutdown="false"

                    notifyListenersOnReplication="true"

                    mapSendOptions="6"/&gt;

@@ -265,50 +352,43 @@
           &lt;Manager className="org.apache.catalina.ha.session.DeltaManager"

                    expireSessionsOnShutdown="false"

                    notifyListenersOnReplication="true"/&gt;

-          --&gt;        

-    </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+          --&gt;</code></pre></div>

     <p>

         This is a template for the manager configuration that will be used if no manager is defined in the &lt;Context&gt;

         element. In Tomcat 5.x each webapp marked distributable had to use the same manager, this is no longer the case

-        since Tomcat 6 you can define a manager class for each webapp, so that you can mix managers in your cluster.

+        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 &lt;distributable/&gt; Tomcat will take this manager configuration 

+        If no manager has been specified for the webapp, and the webapp is marked &lt;distributable/&gt; Tomcat will take this manager configuration

         and create a manager instance cloning this configuration.

         <br>For more info, Please visit the <a href="config/cluster-manager.html">reference documentation</a>

     </p>

-    <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-          &lt;Channel className="org.apache.catalina.tribes.group.GroupChannel"&gt;

-    </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <div class="codeBox"><pre><code>          &lt;Channel className="org.apache.catalina.tribes.group.GroupChannel"&gt;</code></pre></div>

     <p>

         The channel element is <a href="tribes/introduction.html">Tribes</a>, the group communication framework

         used inside Tomcat. This element encapsulates everything that has to do with communication and membership logic.

         <br>For more info, Please visit the <a href="config/cluster-channel.html">reference documentation</a>

     </p>

-    <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-            &lt;Membership className="org.apache.catalina.tribes.membership.McastService"

+    <div class="codeBox"><pre><code>            &lt;Membership className="org.apache.catalina.tribes.membership.McastService"

                         address="228.0.0.4"

                         port="45564"

                         frequency="500"

-                        dropTime="3000"/&gt;

-    </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+                        dropTime="3000"/&gt;</code></pre></div>

     <p>

-        Membership is done using multicasting. Please note that Tribes also supports static memberships using the 

+        Membership is done using multicasting. Please note that Tribes also supports static memberships using the

         <code>StaticMembershipInterceptor</code> 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 the the production cluster.<br>

-        The membership component broadcasts TCP adress/port of itselt 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 

+        have the QA cluster be on a separate multicast address/port combination than the production cluster.<br>

+        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

         <code>Receiver.address</code> attribute.

         <br>For more info, Please visit the <a href="config/cluster-membership.html">reference documentation</a>

     </p>

-    <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-            &lt;Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"

+    <div class="codeBox"><pre><code>            &lt;Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"

                       address="auto"

                       port="5000"

                       selectorTimeout="100"

-                      maxThreads="6"/&gt;

-    </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+                      maxThreads="6"/&gt;</code></pre></div>

     <p>

         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),

@@ -316,15 +396,12 @@
         The address attribute is the host address that will be broadcasted by the membership component to the other nodes.

         <br>For more info, Please visit the <a href="config/cluster-receiver.html">reference documentation</a>

     </p>

-    <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-

-            &lt;Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"&gt;

+    <div class="codeBox"><pre><code>            &lt;Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"&gt;

               &lt;Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/&gt;

-            &lt;/Sender&gt;

-    </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+            &lt;/Sender&gt;</code></pre></div>

     <p>

         The sender component, as the name indicates is responsible for sending messages to other nodes.

-        The sender has a shell component, the <code>ReplicationTransmitter</code> but the real stuff done is done in the 

+        The sender has a shell component, the <code>ReplicationTransmitter</code> but the real stuff done is done in the

         sub component, <code>Transport</code>.

         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.<br>

@@ -332,76 +409,67 @@
         at the same time.

         <br>For more info, Please visit the <a href="config/cluster-sender.html">reference documentation</a>

     </p>

-    <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-            &lt;Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/&gt;

+    <div class="codeBox"><pre><code>            &lt;Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/&gt;

             &lt;Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/&gt;

             &lt;Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/&gt;

-          &lt;/Channel&gt;

-    </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+          &lt;/Channel&gt;</code></pre></div>

     <p>

-        Tribes uses a stack to send messages through. Each element in the stack is called an interceptor, and works much like the valves do 

+        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 managable pieces of code. The interceptors configured above are:<br>

+        Using interceptors, logic can be broken into more manageable pieces of code. The interceptors configured above are:<br>

         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.<br>

-        MessageDispatch15Interceptor - dispatches messages to a thread (thread pool) to send message asynchrously.<br>

+        MessageDispatch15Interceptor - dispatches messages to a thread (thread pool) to send message asynchronously.<br>

         ThroughputInterceptor - prints out simple stats on message traffic.<br>

-        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 

+        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.

         <br>For more info, Please visit the <a href="config/cluster-interceptor.html">reference documentation</a>

     </p>

-    <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-          &lt;Valve className="org.apache.catalina.ha.tcp.ReplicationValve"

-                 filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/&gt;

-    </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <div class="codeBox"><pre><code>          &lt;Valve className="org.apache.catalina.ha.tcp.ReplicationValve"

+                 filter=".*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html|.*\.css|.*\.txt"/&gt;</code></pre></div>

     <p>

         The cluster uses valves to track requests to web applications, we've mentioned the ReplicationValve and the JvmRouteBinderValve above.

         The &lt;Cluster&gt; element itself is not part of the pipeline in Tomcat, instead the cluster adds the valve to its parent container.

         If the &lt;Cluster&gt; elements is configured in the &lt;Engine&gt; element, the valves get added to the engine and so on.

         <br>For more info, Please visit the <a href="config/cluster-valve.html">reference documentation</a>

     </p>

-    <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-          &lt;Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"

+    <div class="codeBox"><pre><code>          &lt;Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"

                     tempDir="/tmp/war-temp/"

                     deployDir="/tmp/war-deploy/"

                     watchDir="/tmp/war-listen/"

-                    watchEnabled="false"/&gt;

-    </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+                    watchEnabled="false"/&gt;</code></pre></div>

     <p>

         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 

+        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.

         <br>For more info, Please visit the <a href="config/cluster-deployer.html">reference documentation</a>

     </p>

-    <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-          &lt;ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/&gt;

-        &lt;/Cluster&gt;

-    </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <div class="codeBox"><pre><code>          &lt;ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/&gt;

+        &lt;/Cluster&gt;</code></pre></div>

     <p>

-        Since the SimpleTcpCluster itself is a sender and receiver of the Channel object, components can register themselves as listeners to 

+        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 <code>ClusterSessionListener</code> listens for DeltaManager replication messages

         and applies the deltas to the manager that in turn applies it to the session.

         <br>For more info, Please visit the <a href="config/cluster-listener.html">reference documentation</a>

     </p>

-    

+

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Cluster Architecture"><!--()--></a><a name="Cluster_Architecture"><strong>Cluster Architecture</strong></a></font></td></tr><tr><td><blockquote>

 

-<p><b>Component Levels:</b>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-         Server

+<p><b>Component Levels:</b></p>

+<div class="codeBox"><pre><code>         Server

            |

          Service

            |

          Engine

-           |  \ 

+           |  \

            |  --- Cluster --*

            |

          Host

            |

          ------

         /      \

-     Cluster    Context(1-N)                 

+     Cluster    Context(1-N)

         |             \

         |             -- Manager

         |                   \

@@ -422,22 +490,21 @@
                                          -- Valve

                                          |      \

                                          |       -- ReplicationValve

-                                         |       -- JvmRouteBinderValve 

+                                         |       -- JvmRouteBinderValve

                                          |

-                                         -- LifecycleListener 

+                                         -- LifecycleListener

                                          |

-                                         -- ClusterListener 

+                                         -- ClusterListener

                                          |      \

                                          |       -- ClusterSessionListener

                                          |       -- JvmRouteSessionIDBinderListener

                                          |

-                                         -- Deployer 

+                                         -- Deployer

                                                 \

                                                  -- FarmWarDeployer

-      

-      

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-</p>

+

+</code></pre></div>

+

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="How it Works"><!--()--></a><a name="How_it_Works"><strong>How it Works</strong></a></font></td></tr><tr><td><blockquote>

 <p>To make it easy to understand how clustering works, We are gonna take you through a series of scenarios.

@@ -456,7 +523,7 @@
 <li><code>TomcatA</code> The session <code>S2</code> expires due to inactivity.</li>

 </ol>

 

-<p>Ok, now that we have a good sequence, we will take you through exactly what happens in the session repliction code</p>

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

 

 <ol>

 <li><b><code>TomcatA</code> starts up</b>

@@ -468,7 +535,7 @@
         Tomcat will create a <code>DeltaManager</code> for that context instead of a <code>StandardManager</code>.

         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.

-    </p><p></p>

+    </p>

 </li>

 <li><b><code>TomcatB</code> starts up</b>

     <p>

@@ -481,21 +548,21 @@
         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.

-    </p><p></p>

+    </p>

 </li>

 <li><B><code>TomcatA</code> receives a request, a session <code>S1</code> is created.</B>

     <p>

         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 <code>ReplicationValve</code> 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 replicata the

+        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.

-    </p><p></p>

+    </p>

 

 </li>

 <li><b><code>TomcatA</code> crashes</b>

@@ -505,11 +572,11 @@
         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.

-    </p><p></p>

+    </p>

 </li>

 <li><b><code>TomcatB</code> receives a request for session <code>S1</code></b>

     <p>Nothing exciting, TomcatB will process the request as any other request.

-    </p><p></p>

+    </p>

 </li>

 <li><b><code>TomcatA</code> starts up</b>

     <p>Upon start up, before TomcatA starts taking new request and making itself

@@ -517,27 +584,27 @@
     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.

-    </p><p></p>

+    </p>

 </li>

 <li><b><code>TomcatA</code> receives a request, invalidate is called on the session (<code>S1</code>)</b>

-    <p>The invalidate is call is intercepted, and the session is queued with invalidated sessions.

+    <p>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.

-    </p><p></p>

+    </p>

 

 </li>

 <li><b><code>TomcatB</code> receives a request, for a new session (<code>S2</code>)</b>

     <p>Same scenario as in step 3)

-    </p><p></p>

+    </p>

 

 

 </li>

 <li><code>TomcatA</code> The session <code>S2</code> expires due to inactivity.

-    <p>The invalidate is call is intercepted the same was as when a session is invalidated by the user,

+    <p>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 invalidet session will not be replicated across until

+       At this point, the invalidated session will not be replicated across until

        another request comes through the system and checks the invalid queue.

-    </p><p></p>

+    </p>

 </li>

 </ol>

 

@@ -565,12 +632,103 @@
     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

-    simultanously using multiple requests, then the last request

+    simultaneously using multiple requests, then the last request

     will override the other sessions in the cluster.

 </p>

 

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Monitoring your Cluster with JMX"><!--()--></a><a name="Monitoring_your_Cluster_with_JMX"><strong>Monitoring your Cluster with JMX</strong></a></font></td></tr><tr><td><blockquote>

+<p>Monitoring is a very important question when you use a cluster. Some of the cluster objects are JMX MBeans </p>

+<p>Add the following parameter to your startup script with Java 5:</p>

+<div class="codeBox"><pre><code>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</code></pre></div>

+

+<p>

+  List of Cluster Mbeans

+</p>

+<table class="defaultTable">

+

+  <tr>

+    <th>Name</th>

+    <th>Description</th>

+    <th>MBean ObjectName - Engine</th>

+    <th>MBean ObjectName - Host</th>

+  </tr>

+

+  <tr>

+    <td>Cluster</td>

+    <td>The complete cluster element</td>

+    <td><code>type=Cluster</code></td>

+    <td><code>type=Cluster,host=${HOST}</code></td>

+  </tr>

+

+  <tr>

+    <td>DeltaManager</td>

+    <td>This manager control the sessions and handle session replication </td>

+    <td><code>type=Manager,context=${APP.CONTEXT.PATH}, host=${HOST}</code></td>

+    <td><code>type=Manager,context=${APP.CONTEXT.PATH}, host=${HOST}</code></td>

+  </tr>

+

+  <tr>

+    <td>FarmWarDeployer</td>

+    <td>Manages the process of deploying an application to all nodes in the cluster</td>

+    <td>Not supported</td>

+    <td><code>type=Cluster, host=${HOST}, component=deployer</code></td>

+  </tr>

+

+  <tr>

+    <td>Member</td>

+    <td>Represents a node in the cluster</td>

+    <td>type=Cluster, component=member, name=${NODE_NAME}</td>

+    <td><code>type=Cluster, host=${HOST}, component=member, name=${NODE_NAME}</code></td>

+  </tr>

+

+  <tr>

+    <td>ReplicationValve</td>

+    <td>This valve control the replication to the backup nodes</td>

+    <td><code>type=Valve,name=ReplicationValve</code></td>

+    <td><code>type=Valve,name=ReplicationValve,host=${HOST}</code></td>

+  </tr>

+

+  <tr>

+    <td>JvmRouteBinderValve</td>

+    <td>This is a cluster fallback valve to change the Session ID to the current tomcat jvmroute.</td>

+    <td><code>type=Valve,name=JvmRouteBinderValve,

+              context=${APP.CONTEXT.PATH}</code></td>

+    <td><code>type=Valve,name=JvmRouteBinderValve,host=${HOST},

+              context=${APP.CONTEXT.PATH}</code></td>

+  </tr>

+

+</table>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="FAQ"><strong>FAQ</strong></a></font></td></tr><tr><td><blockquote>

 <p>Please see <a href="http://wiki.apache.org/tomcat/FAQ/Clustering">the clustering section of the FAQ</a>.</p>

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/cluster-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/comments.html b/tomcat-uid/webapps/docs/comments.html
new file mode 100644
index 0000000..9e8e92d
--- /dev/null
+++ b/tomcat-uid/webapps/docs/comments.html
@@ -0,0 +1,182 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - Documentation User Comments</title><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Documentation User Comments</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>The Tomcat documentation integrates the

+<a href="https://comments.apache.org/help.html">Apache Comments System</a>.

+It allows users to add comments to most documentation pages. The comments

+section can be found at the end of each page.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Allowed Content"><!--()--></a><a name="Allowed_Content"><strong>Allowed Content</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>Please use the Apache Comments System responsibly. We can only provide

+this service to the community as long as it isn't misused.</p>

+

+<p>The comments are not for general Q&amp;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 <a href="http://tomcat.apache.org/lists.html">mailing lists</a>.</p>

+

+<p>Comments may be removed by moderators if they are either

+implemented or considered invalid/off-topic.</p>

+

+<p>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.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="License"><strong>License</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>Any submitted comments must be contributed under the terms of the

+<a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Verified Users"><!--()--></a><a name="Verified_Users"><strong>Verified Users</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>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

+<a href="http://tomcat.apache.org/lists.html#tomcat-users">users mailing list</a>.</p>

+

+<p>All ASF committers are automatically verified users.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Moderators"><strong>Moderators</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>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.</p>

+

+<p>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.</p>

+

+<p>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

+<a href="http://tomcat.apache.org/lists.html#tomcat-users">users mailing list</a>.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Privacy Policy"><!--()--></a><a name="Privacy_Policy"><strong>Privacy Policy</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>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.</p>

+

+<p>To prevent spam and unsolicited comments, we use a digest of

+visitors' IPs to keep track of comments posted by them.</p>

+

+<p>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.</p>

+

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/comments.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/config/ajp.html b/tomcat-uid/webapps/docs/config/ajp.html
index 528ac6d..772e332 100644
--- a/tomcat-uid/webapps/docs/config/ajp.html
+++ b/tomcat-uid/webapps/docs/config/ajp.html
@@ -1,35 +1,112 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat Configuration Reference (6.0.41) - The AJP Connector</title><meta name="author" content="Remy Maucherat"><meta name="author" content="Yoav Shapira"><meta name="author" content="Andrew R. Jaquith"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.77) - The AJP Connector</title><meta name="author" content="Remy Maucherat"><meta name="author" content="Yoav Shapira"><meta name="author" content="Andrew R. Jaquith"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

     The Apache Tomcat Servlet/JSP Container

-  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat Configuration Reference</h1><h2>The AJP Connector</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

-<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#Standard_Implementations">Standard Implementations</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li></ul>

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="sessionidgenerator.html">SessionIdGenerator</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The AJP Connector</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#Standard_Implementations">Standard Implementations</a></li><li><a href="#Java_TCP_socket_attributes">Java TCP socket attributes</a></li><li><a href="#NIO_specific_configuration">NIO specific configuration</a></li><li><a href="#APR/native_specific_configuration">APR/native specific configuration</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Special_Features">Special Features</a><ol><li><a href="#Proxy_Support">Proxy Support</a></li><li><a href="#Connector_Comparison">Connector Comparison</a></li></ol></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

   <p>The <strong>AJP Connector</strong> element represents a

   <strong>Connector</strong> component that communicates with a web

   connector via the <code>AJP</code> protocol.  This is used for cases

-  where you wish to invisibly integrate Tomcat 6 into an existing (or new)

+  where you wish to invisibly integrate Tomcat into an existing (or new)

   Apache installation, and you want Apache to handle the static content

   contained in the web application, and/or utilize Apache's SSL

   processing.</p>

 

   <p>This connector supports load balancing when used in conjunction with

-  the <code>jvmRoute</code> attribute of the 

+  the <code>jvmRoute</code> attribute of the

   <a href="engine.html">Engine</a>.</p>

 

-<p>The native connectors supported with this Tomcat release are:

-<ul>

-  <li>JK 1.2.x with any of the supported servers</li>

-  <li>mod_proxy on Apache httpd 2.x (included by default in Apache HTTP Server 2.2), 

-      with AJP enabled: see

-      <a href="http://httpd.apache.org/docs/2.2/mod/mod_proxy_ajp.html">the httpd docs</a>

+  <p>The native connectors supported with this Tomcat release are:</p>

+    <ul>

+      <li>JK 1.2.x with any of the supported servers. See

+      <a href="http://tomcat.apache.org/connectors-doc/">the JK docs</a>

       for details.</li>

-</ul>

-</p>

+      <li>mod_proxy on Apache httpd 2.x (included by default in Apache HTTP

+      Server 2.2), with AJP enabled: see

+      <a href="http://httpd.apache.org/docs/2.2/mod/mod_proxy_ajp.html">the

+      httpd docs</a> for details.</li>

+    </ul>

 

-<p><b>Other native connectors supporting AJP may work, but are no longer supported.</b></p>

+  <p><b>Other native connectors supporting AJP may work, but are no longer

+  supported.</b></p>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -38,37 +115,49 @@
   <p>All implementations of <strong>Connector</strong>

   support the following attributes:</p>

 

-  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>allowTrace</code></td><td align="left" valign="center">

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">ajpFlush</code></td><td align="left" valign="center">

+      <p>A boolean value which can be used to enable or disable sending

+      AJP flush messages to the fronting proxy whenever an explicit

+      flush happens. The default value is <code>true</code>.<br>

+      An AJP flush message is a SEND_BODY_CHUNK packet with no body content.

+      Proxy implementations like mod_jk or mod_proxy_ajp will flush the

+      data buffered in the web server to the client when they receive

+      such a packet. Setting this to <code>false</code> can reduce

+      AJP packet traffic but might delay sending packets to the client.

+      At the end of the response, AJP does always flush to the client.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">allowTrace</code></td><td align="left" valign="center">

       <p>A boolean value which can be used to enable or disable the TRACE

       HTTP method. If not specified, this attribute is set to false.</p>

-    </td></tr><tr><td align="left" valign="center"><code>emptySessionPath</code></td><td align="left" valign="center">

-      <p>If set to <code>true</code>, all paths for session cookies will be set

-      to <code>/</code>. This can be useful for portlet specification implementations.

-      If not specified, this attribute is set to <code>false</code>.</p>

-    </td></tr><tr><td align="left" valign="center"><code>enableLookups</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">asyncTimeout</code></td><td align="left" valign="center">

+      <p>The default timeout for asynchronous requests in milliseconds. If not

+      specified, this attribute is set to 10000 (10 seconds).</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">enableLookups</code></td><td align="left" valign="center">

       <p>Set to <code>true</code> if you want calls to

       <code>request.getRemoteHost()</code> to perform DNS lookups in

       order to return the actual host name of the remote client.  Set

       to <code>false</code> to skip the DNS lookup and return the IP

       address in String form instead (thereby improving performance).

       By default, DNS lookups are disabled.</p>

-    </td></tr><tr><td align="left" valign="center"><code>maxHeaderCount</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxHeaderCount</code></td><td align="left" valign="center">

       <p>The maximum number of headers in a request that are allowed by the

       container. A request that contains more headers than the specified limit

       will be rejected. A value of less than 0 means no limit.

       If not specified, a default of 100 is used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>maxParameterCount</code></td><td align="left" valign="center">

-      <p>The maximum number of parameters (GET plus POST) which will be

-      automatically parsed by the container. A value of less than 0 means no

-      limit. If not specified, a default of 10000 is used. Note that

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxParameterCount</code></td><td align="left" valign="center">

+      <p>The maximum number of parameter and value pairs (GET plus POST) which

+      will be automatically parsed by the container. Parameter and value pairs

+      beyond this limit will be ignored. A value of less than 0 means no limit.

+      If not specified, a default of 10000 is used. Note that

       <code>FailedRequestFilter</code> <a href="filter.html">filter</a> can be

       used to reject requests that hit the limit.</p>

-    </td></tr><tr><td align="left" valign="center"><code>maxPostSize</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxPostSize</code></td><td align="left" valign="center">

       <p>The maximum size in bytes of the POST which will be handled by

-      the container FORM URL parameter parsing. The feature can be disabled by

-      setting this attribute to a value less than or equal to 0.

-      If not specified, this attribute is set to 2097152 (2 megabytes).</p>

-    </td></tr><tr><td align="left" valign="center"><code>maxSavePostSize</code></td><td align="left" valign="center">

+      the container FORM URL parameter parsing. The limit can be disabled by

+      setting this attribute to a value less than zero. If not specified, this

+      attribute is set to 2097152 (2 megabytes). Note that the

+      <a href="filter.html#Failed_Request_Filter"><code>FailedRequestFilter</code></a>

+      can be used to reject requests that exceed this limit.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxSavePostSize</code></td><td align="left" valign="center">

       <p>The maximum size in bytes of the POST which will be saved/buffered by

       the container during FORM or CLIENT-CERT authentication. For both types

       of authentication, the POST will be saved/buffered before the user is

@@ -81,78 +170,85 @@
       attribute to -1. Setting the attribute to zero will disable the saving of

       POST data during authentication. If not specified, this attribute is set

       to 4096 (4 kilobytes).</p>

-    </td></tr><tr><td align="left" valign="center"><code>parseBodyMethods</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">parseBodyMethods</code></td><td align="left" valign="center">

       <p>A comma-separated list of HTTP methods for which request

       bodies will be parsed for request parameters identically

       to POST. This is useful in RESTful applications that want to

       support POST-style semantics for PUT requests.

       Note that any setting other than <code>POST</code> causes Tomcat

-      to behave in a way that does against the intent of the servlet

+      to behave in a way that goes against the intent of the servlet

       specification.

       The HTTP method TRACE is specifically forbidden here in accordance

       with the HTTP specification.

       The default is <code>POST</code></p>

-    </td></tr><tr><td align="left" valign="center"><strong><code>port</code></strong></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">port</code></strong></td><td align="left" valign="center">

       <p>The TCP port number on which this <strong>Connector</strong>

       will create a server socket and await incoming connections.  Your

       operating system will allow only one server application to listen

-      to a particular port number on a particular IP address.</p>

-    </td></tr><tr><td align="left" valign="center"><code>protocol</code></td><td align="left" valign="center">

-      <p>Sets the protocol to handle incoming traffic. The default value is

-        <code>AJP/1.3</code> and configures

-        <code>org.apache.jk.server.JkCoyoteHandler</code> the original blocking

-        Java connector by default.<br>

-        If the <code>PATH</code> (Windows) or <code>LD_LIBRARY_PATH</code>

-        (on most unix systems) environment variables contain the Tomcat

-        native library, the native/APR connector will automatically be

-        configured instead.<br>

+      to a particular port number on a particular IP address. If the special

+      value of 0 (zero) is used, then Tomcat will select a free port at random

+      to use for this connector. This is typically only useful in embedded and

+      testing applications.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">protocol</code></td><td align="left" valign="center">

+      <p>Sets the protocol to handle incoming traffic. To configure an AJP

+        connector this must be specified. If no value for protocol is provided,

+        an <a href="http.html">HTTP connector</a> rather than an AJP connector

+        will be configured.<br>

+        The standard protocol value for an AJP connector is <code>AJP/1.3</code>

+        which uses an auto-switching mechanism to select either a Java based

+        connector or an APR/native based connector. If the

+        <code>PATH</code> (Windows) or <code>LD_LIBRARY_PATH</code> (on most unix

+        systems) environment variables contain the Tomcat native library, the

+        native/APR connector will be used. If the native library cannot be

+        found, the Java BIO based connector will be used.<br>

         To use an explicit protocol rather than rely on the auto-switching

         mechanism described above, the following values may be used:<br>

-        <code>org.apache.jk.server.JkCoyoteHandler</code>

-        - original blocking Java connector<br>

         <code>org.apache.coyote.ajp.AjpProtocol</code>

-        - new blocking Java connector that supports an executor<br>

+        - blocking Java connector<br>

+        <code>org.apache.coyote.ajp.AjpNioProtocol</code>

+        - non blocking Java connector.<br>

         <code>org.apache.coyote.ajp.AjpAprProtocol</code>

         - the APR/native connector.<br>

-      Custom implementations may also be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>proxyName</code></td><td align="left" valign="center">

+        Custom implementations may also be used.<br>

+        Take a look at our <a href="#Connector_Comparison">Connector

+        Comparison</a> chart.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">proxyName</code></td><td align="left" valign="center">

       <p>If this <strong>Connector</strong> is being used in a proxy

       configuration, configure this attribute to specify the server name

       to be returned for calls to <code>request.getServerName()</code>.

-      See <a href="#Proxy Support">Proxy Support</a> for more

+      See <a href="#Proxy_Support">Proxy Support</a> for more

       information.</p>

-    </td></tr><tr><td align="left" valign="center"><code>proxyPort</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">proxyPort</code></td><td align="left" valign="center">

       <p>If this <strong>Connector</strong> is being used in a proxy

       configuration, configure this attribute to specify the server port

       to be returned for calls to <code>request.getServerPort()</code>.

-      See <a href="#Proxy Support">Proxy Support</a> for more

+      See <a href="#Proxy_Support">Proxy Support</a> for more

       information.</p>

-    </td></tr><tr><td align="left" valign="center"><code>redirectPort</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">redirectPort</code></td><td align="left" valign="center">

       <p>If this <strong>Connector</strong> is supporting non-SSL

       requests, and a request is received for which a matching

       <code>&lt;security-constraint&gt;</code> requires SSL transport,

       Catalina will automatically redirect the request to the port

       number specified here.</p>

-    </td></tr><tr><td align="left" valign="center"><code>request.registerRequests</code></td><td align="left" valign="center">

-      <p>This attribute controls request registration for JMX monitoring

-      of the Connector.  It is enabled by default, but may be turned

-      it off to save a bit of memory.</p>

-    </td></tr><tr><td align="left" valign="center"><code>scheme</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">scheme</code></td><td align="left" valign="center">

       <p>Set this attribute to the name of the protocol you wish to have

       returned by calls to <code>request.getScheme()</code>.  For

       example, you would set this attribute to "<code>https</code>"

       for an SSL Connector.  The default value is "<code>http</code>".

-      See <a href="#SSL Support">SSL Support</a> for more information.</p>

-    </td></tr><tr><td align="left" valign="center"><code>secure</code></td><td align="left" valign="center">

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">secure</code></td><td align="left" valign="center">

       <p>Set this attribute to <code>true</code> if you wish to have

       calls to <code>request.isSecure()</code> to return <code>true</code>

-      for requests received by this Connector (you would want this on an

-      SSL Connector).  The default value is <code>false</code>.</p>

-    </td></tr><tr><td align="left" valign="center"><code>URIEncoding</code></td><td align="left" valign="center">

+      for requests received by this Connector. You would want this on an

+      SSL Connector or a non SSL connector that is receiving data from a

+      SSL accelerator, like a crypto card, a SSL appliance or even a webserver.

+      The default value is <code>false</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">URIEncoding</code></td><td align="left" valign="center">

       <p>This specifies the character encoding used to decode the URI bytes,

       after %xx decoding the URL. If not specified, ISO-8859-1 will be used.

       </p>

-    </td></tr><tr><td align="left" valign="center"><code>useBodyEncodingForURI</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">useBodyEncodingForURI</code></td><td align="left" valign="center">

       <p>This specifies if the encoding specified in contentType should be used

       for URI query parameters, instead of using the URIEncoding. This

       setting is present for compatibility with Tomcat 4.1.x, where the

@@ -160,11 +256,13 @@
       Request.setCharacterEncoding method was also used for the parameters from

       the URL. The default value is <code>false</code>.

       </p>

-    </td></tr><tr><td align="left" valign="center"><code>useIPVHosts</code></td><td align="left" valign="center">

+      <p><em>Notes:</em> See notes on this attribute in

+      <a href="http.html">HTTP Connector</a> documentation.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">useIPVHosts</code></td><td align="left" valign="center">

       <p>Set this attribute to <code>true</code> to cause Tomcat to use

-      the ServerName passed by the native web server to determine the Host

+      the IP address passed by the native web server to determine the Host

       to send the request to.  The default value is <code>false</code>.</p>

-    </td></tr><tr><td align="left" valign="center"><code>xpoweredBy</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">xpoweredBy</code></td><td align="left" valign="center">

       <p>Set this attribute to <code>true</code> to cause Tomcat to advertise

       support for the Servlet specification using the header recommended in the

       specification.  The default value is <code>false</code>.</p>

@@ -174,31 +272,42 @@
 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Standard Implementations"><!--()--></a><a name="Standard_Implementations"><strong>Standard Implementations</strong></a></font></td></tr><tr><td><blockquote>

 

-  <p>To use AJP, you

-  must specify the protocol attribute (see above).</p>

+  <p>To use AJP, you must specify the protocol attribute (see above).</p>

 

-  <p><strong>These implementations support the AJP 1.3 protocol.</strong></p>

+  <p>The standard AJP connectors (BIO, NIO and APR/native) all support the

+  following attributes in addition to the common Connector attributes listed

+  above.</p>

 

-  <p>They support the following additional attributes (in addition to the

-  common attributes listed above):</p>

-

-  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>address</code></td><td align="left" valign="center">

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">acceptCount</code></td><td align="left" valign="center">

+      <p>The maximum queue length for incoming connection requests when

+      all possible request processing threads are in use.  Any requests

+      received when the queue is full will be refused.  The default

+      value is 100.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">acceptorThreadCount</code></td><td align="left" valign="center">

+      <p>The number of threads to be used to accept connections. Increase this

+      value on a multi CPU machine, although you would never really need more

+      than <code>2</code>. Also, with a lot of non keep alive connections, you

+      might want to increase this value as well. Default value is

+      <code>1</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">acceptorThreadPriority</code></td><td align="left" valign="center">

+      <p>The priority of the acceptor threads. The threads used to accept

+      new connections. The default value is <code>5</code> (the value of the

+      <code>java.lang.Thread.NORM_PRIORITY</code> constant). See the JavaDoc

+      for the <code>java.lang.Thread</code> class for more details on what

+      this priority means.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">address</code></td><td align="left" valign="center">

       <p>For servers with more than one IP address, this attribute

       specifies which address will be used for listening on the specified

       port.  By default, this port will be used on all IP addresses

       associated with the server. A value of <code>127.0.0.1</code>

       indicates that the Connector will only listen on the loopback

       interface.</p>

-    </td></tr><tr><td align="left" valign="center"><code>backlog</code></td><td align="left" valign="center">

-      <p>The maximum queue length for incoming connection requests when

-      all possible request processing threads are in use.  Any requests

-      received when the queue is full will be refused.  The default

-      value is 100.</p>

-    </td></tr><tr><td align="left" valign="center"><code>bufferSize</code></td><td align="left" valign="center">

-      <p>The size of the output buffer to use.  If less than or equal to zero,

-         then output buffering is disabled.  The default value is -1

-         (i.e. buffering disabled)</p>

-    </td></tr><tr><td align="left" valign="center"><code>clientCertProvider</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">bindOnInit</code></td><td align="left" valign="center">

+      <p>Controls when the socket used by the connector is bound. By default it

+      is bound when the connector is initiated and unbound when the connector is

+      destroyed. If set to <code>false</code>, the socket will be bound when the

+      connector is started and unbound when it is stopped.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">clientCertProvider</code></td><td align="left" valign="center">

       <p>When client certificate information is presented in a form other than

       instances of <code>java.security.cert.X509Certificate</code> it needs to

       be converted before it can be used and this property controls which JSSE

@@ -207,67 +316,288 @@
       with the <a href="valve.html#SSL_Authenticator_Valve">

       org.apache.catalina.valves.SSLValve</a>.If not specified, the default

       provider will be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>connectionTimeout</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">connectionLinger</code></td><td align="left" valign="center">

+      <p>The number of seconds during which the sockets used by this

+      <strong>Connector</strong> will linger when they are closed. The default

+      value is <code>-1</code> which disables socket linger.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">connectionTimeout</code></td><td align="left" valign="center">

       <p>The number of milliseconds this <strong>Connector</strong> will wait,

       after accepting a connection, for the request URI line to be

-      presented.  The default value is infinite (i.e. no timeout).</p>

-    </td></tr><tr><td align="left" valign="center"><code>deferAccept</code></td><td align="left" valign="center">

-      <p>Sets the <code>TCP_DEFER_ACCEPT</code> flag on the listening socket for

-      this connector. The default value is <code>true</code> where

-      <code>TCP_DEFER_ACCEPT</code> is supported by the operating system,

-      otherwise it is <code>false</code>.</p>

-    </td></tr><tr><td align="left" valign="center"><code>executor</code></td><td align="left" valign="center">

-      <p>A reference to the name in an <a href="executor.html">Executor</a> element.

-         If this attribute is enabled, and the named executor exists, the connector will

-         use the executor, and all the other thread attributes will be ignored.

-         This attribute is not supported by the original blocking Java

-         connector.</p>

-    </td></tr><tr><td align="left" valign="center"><code>keepAliveTimeout</code></td><td align="left" valign="center">

+      presented.  The default value for AJP protocol connectors

+      is <code>-1</code> (i.e. infinite).</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">executor</code></td><td align="left" valign="center">

+      <p>A reference to the name in an <a href="executor.html">Executor</a>

+      element. If this attribute is set, and the named executor exists, the

+      connector will use the executor, and all the other thread attributes will

+      be ignored. Note that if a shared executor is not specified for a

+      connector then the connector will use a private, internal executor to

+      provide the thread pool.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">executorTerminationTimeoutMillis</code></td><td align="left" valign="center">

+      <p>The time that the private internal executor will wait for request

+      processing threads to terminate before continuing with the process of

+      stopping the connector. If not set, the default is <code>0</code> (zero)

+      for the BIO connector and <code>5000</code> (5 seconds) for the NIO and

+      APR/native connectors.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">keepAliveTimeout</code></td><td align="left" valign="center">

       <p>The number of milliseconds this <strong>Connector</strong> will wait for

        another AJP request before closing the connection.

        The default value is to use the value that has been set for the

        connectionTimeout attribute.</p>

-    </td></tr><tr><td align="left" valign="center"><code>maxThreads</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxConnections</code></td><td align="left" valign="center">

+      <p>The maximum number of connections that the server will accept and

+      process at any given time. When this number has been reached, the server

+      will accept, but not process, one further connection. This additional

+      connection be blocked until the number of connections being processed

+      falls below <strong>maxConnections</strong> at which point the server will

+      start accepting and processing new connections again. Note that once the

+      limit has been reached, the operating system may still accept connections

+      based on the <code>acceptCount</code> setting. The default value varies by

+      connector type. For BIO the default is the value of

+      <strong>maxThreads</strong> unless an <a href="executor.html">Executor</a>

+      is used in which case the default will be the value of maxThreads from the

+      executor. For NIO the default is <code>10000</code>.

+      For APR/native, the default is <code>8192</code>.</p>

+      <p>Note that for APR/native on Windows, the configured value will be

+      reduced to the highest multiple of 1024 that is less than or equal to

+      maxConnections. This is done for performance reasons.<br>

+      If set to a value of -1, the maxConnections feature is disabled 

+      and connections are not counted.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxCookieCount</code></td><td align="left" valign="center">

+      <p>The maximum number of cookies that are permitted for a request. A value

+      of less than zero means no limit. If not specified, a default value of 200

+      will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxThreads</code></td><td align="left" valign="center">

       <p>The maximum number of request processing threads to be created

       by this <strong>Connector</strong>, which therefore determines the

       maximum number of simultaneous requests that can be handled.  If

       not specified, this attribute is set to 200. If an executor is associated

-      with this connector, this attribute is ignored as the connector will 

-      execute tasks using the executor rather than an internal thread pool.</p>

-    </td></tr><tr><td align="left" valign="center"><code>packetSize</code></td><td align="left" valign="center">

+      with this connector, this attribute is ignored as the connector will

+      execute tasks using the executor rather than an internal thread pool. Note

+      that if an executor is configured any value set for this attribute will be

+      recorded correctly but it will be reported (e.g. via JMX) as

+      <code>-1</code> to make clear that it is not used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">minSpareThreads</code></td><td align="left" valign="center">

+      <p>The minimum number of threads always kept running. If not specified,

+      the default of <code>10</code> is used. If an executor is associated

+      with this connector, this attribute is ignored as the connector will

+      execute tasks using the executor rather than an internal thread pool. Note

+      that if an executor is configured any value set for this attribute will be

+      recorded correctly but it will be reported (e.g. via JMX) as

+      <code>-1</code> to make clear that it is not used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">packetSize</code></td><td align="left" valign="center">

       <p>This attribute sets the maximum AJP packet size in Bytes. The maximum

       value is 65536. It should be the same as the <code>max_packet_size</code>

       directive configured for mod_jk. Normally it is not necessary to change

       the maximum packet size. Problems with the default value have been

       reported when sending certificates or certificate chains. The default

-      value is 8192.</p>

-    </td></tr><tr><td align="left" valign="center"><strong><code>port</code></strong></td><td align="left" valign="center">

-      <p>The TCP port number on which this <strong>Connector</strong>

-      will create a server socket and await incoming connections.  Your

-      operating system will allow only one server application to listen

-      to a particular port number on a particular IP address.</p>

-    </td></tr><tr><td align="left" valign="center"><code>request.secret</code></td><td align="left" valign="center">

+      value is 8192. If set to less than 8192 then the setting will ignored and

+      the default value of 8192 used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">processorCache</code></td><td align="left" valign="center">

+      <p>The protocol handler caches Processor objects to speed up performance.

+      This setting dictates how many of these objects get cached.

+      <code>-1</code> means unlimited, default is <code>200</code>. If not using

+      Servlet 3.0 asynchronous processing, a good default is to use the same as

+      the maxThreads setting. If using Servlet 3.0 asynchronous processing, a

+      good default is to use the larger of maxThreads and the maximum number of

+      expected concurrent requests (synchronous and asynchronous).</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">requiredSecret</code></td><td align="left" valign="center">

       <p>Only requests from workers with this secret keyword will be accepted.

       </p>

-    </td></tr><tr><td align="left" valign="center"><code>request.shutdownEnabled</code></td><td align="left" valign="center">

-      <p>If true and a secret has been configured, a correctly formatted AJP

-      request (that includes the secret) will shutdown the Tomcat instance

-      associated with this connector. This is set to <code>false</code> by

-      default.</p>

-    </td></tr><tr><td align="left" valign="center"><code>request.useSecret</code></td><td align="left" valign="center">

-      <p>If set to <code>true</code>, then a random value for

-      <code>request.secret</code> will be generated. It is for use with

-      <code>request.shutdownEnabled</code>. This is set to <code>false</code>

-      by default.</p>

-    </td></tr><tr><td align="left" valign="center"><code>tcpNoDelay</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">tcpNoDelay</code></td><td align="left" valign="center">

       <p>If set to <code>true</code>, the TCP_NO_DELAY option will be

       set on the server socket, which improves performance under most

       circumstances.  This is set to <code>true</code> by default.</p>

-    </td></tr><tr><td align="left" valign="center"><code>tomcatAuthentication</code></td><td align="left" valign="center">

-      <p>If set to <code>true</code>, the authentication will be done in Tomcat. 

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">threadPriority</code></td><td align="left" valign="center">

+      <p>The priority of the request processing threads within the JVM.

+      The default value is <code>5</code> (the value of the

+      <code>java.lang.Thread.NORM_PRIORITY</code> constant). See the JavaDoc

+      for the <code>java.lang.Thread</code> class for more details on what

+      this priority means.If an executor is associated

+      with this connector, this attribute is ignored as the connector will

+      execute tasks using the executor rather than an internal thread pool. Note

+      that if an executor is configured any value set for this attribute will be

+      recorded correctly but it will be reported (e.g. via JMX) as

+      <code>-1</code> to make clear that it is not used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">tomcatAuthentication</code></td><td align="left" valign="center">

+      <p>If set to <code>true</code>, the authentication will be done in Tomcat.

       Otherwise, the authenticated principal will be propagated from the native

-      webserver and used for authorization in Tomcat.  

-      The default value is <code>true</code>.</p>

+      webserver and used for authorization in Tomcat. Note that this principal

+      will have no roles associated with it.

+      The default value is <code>true</code>. If

+      <code>tomcatAuthorization</code> is set to <code>true</code> this

+      attribute has no effect.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">tomcatAuthorization</code></td><td align="left" valign="center">

+      <p>If set to <code>true</code>, the authenticated principal will be

+      propagated from the native webserver and considered already authenticated

+      in Tomcat. If the web application has one or more security constraints,

+      authorization will then be performed by Tomcat and roles assigned to the

+      authenticated principal. If the appropriate Tomcat Realm for the request

+      does not recognise the provided user name, a Principal will be still be

+      created but it will have no roles. The default value is

+      <code>false</code>.</p>

+    </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Java TCP socket attributes"><!--()--></a><a name="Java_TCP_socket_attributes"><strong>Java TCP socket attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The BIO and NIO implementation support the following Java TCP socket

+    attributes in addition to the common Connector and HTTP attributes listed

+    above.</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">socket.rxBufSize</code></td><td align="left" valign="center">

+        <p>(int)The socket receive buffer (SO_RCVBUF) size in bytes. JVM default

+        used if not set.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.txBufSize</code></td><td align="left" valign="center">

+        <p>(int)The socket send buffer (SO_SNDBUF) size in bytes. JVM default

+        used if not set.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.tcpNoDelay</code></td><td align="left" valign="center">

+        <p>(bool)This is equivalent to standard attribute

+        <strong>tcpNoDelay</strong>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.soKeepAlive</code></td><td align="left" valign="center">

+        <p>(bool)Boolean value for the socket's keep alive setting

+        (SO_KEEPALIVE). JVM default used if not set.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.ooBInline</code></td><td align="left" valign="center">

+        <p>(bool)Boolean value for the socket OOBINLINE setting. JVM default

+        used if not set.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.soReuseAddress</code></td><td align="left" valign="center">

+        <p>(bool)Boolean value for the sockets reuse address option

+        (SO_REUSEADDR). JVM default used if not set.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.soLingerOn</code></td><td align="left" valign="center">

+        <p>(bool)Boolean value for the sockets so linger option (SO_LINGER).

+        A value for the standard attribute <strong>connectionLinger</strong>

+        that is &gt;=0 is equivalent to setting this to <code>true</code>.

+        A value for the standard attribute <strong>connectionLinger</strong>

+        that is &lt;0 is equivalent to setting this to <code>false</code>.

+        Both this attribute and <code>soLingerTime</code> must be set else the

+        JVM defaults will be used for both.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.soLingerTime</code></td><td align="left" valign="center">

+        <p>(int)Value in seconds for the sockets so linger option (SO_LINGER).

+        This is equivalent to standard attribute

+        <strong>connectionLinger</strong>.

+        Both this attribute and <code>soLingerOn</code> must be set else the

+        JVM defaults will be used for both.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.soTimeout</code></td><td align="left" valign="center">

+        <p>This is equivalent to standard attribute

+        <strong>connectionTimeout</strong>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.performanceConnectionTime</code></td><td align="left" valign="center">

+        <p>(int)The first value for the performance settings. See

+        <a href="http://docs.oracle.com/javase/6/docs/api/java/net/Socket.html#setPerformancePreferences(int,%20int,%20int)">Socket Performance Options</a>

+        All three performance attributes must be set else the JVM defaults will

+        be used for all three.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.performanceLatency</code></td><td align="left" valign="center">

+        <p>(int)The second value for the performance settings. See

+        <a href="http://docs.oracle.com/javase/6/docs/api/java/net/Socket.html#setPerformancePreferences(int,%20int,%20int)">Socket Performance Options</a>

+        All three performance attributes must be set else the JVM defaults will

+        be used for all three.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.performanceBandwidth</code></td><td align="left" valign="center">

+        <p>(int)The third value for the performance settings. See

+        <a href="http://docs.oracle.com/javase/6/docs/api/java/net/Socket.html#setPerformancePreferences(int,%20int,%20int)">Socket Performance Options</a>

+        All three performance attributes must be set else the JVM defaults will

+        be used for all three.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.unlockTimeout</code></td><td align="left" valign="center">

+        <p>(int) The timeout for a socket unlock. When a connector is stopped, it will try to release the acceptor thread by opening a connector to itself.

+           The default value is <code>250</code> and the value is in milliseconds</p>

+      </td></tr></table>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="NIO specific configuration"><!--()--></a><a name="NIO_specific_configuration"><strong>NIO specific configuration</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The following attributes are specific to the NIO connector.</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">socket.directBuffer</code></td><td align="left" valign="center">

+        <p>(bool)Boolean value, whether to use direct ByteBuffers or java mapped

+        ByteBuffers. Default is <code>false</code>.<br>

+        When you are using direct buffers, make sure you allocate the

+        appropriate amount of memory for the direct memory space. On Sun's JDK

+        that would be something like <code>-XX:MaxDirectMemorySize=256m</code>.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.appReadBufSize</code></td><td align="left" valign="center">

+        <p>(int)Each connection that is opened up in Tomcat get associated with

+        a read ByteBuffer. This attribute controls the size of this buffer. By

+        default this read buffer is sized at <code>8192</code> bytes. For lower

+        concurrency, you can increase this to buffer more data. For an extreme

+        amount of keep alive connections, decrease this number or increase your

+        heap size.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.appWriteBufSize</code></td><td align="left" valign="center">

+        <p>(int)Each connection that is opened up in Tomcat get associated with

+        a write ByteBuffer. This attribute controls the size of this buffer. By

+        default this write buffer is sized at <code>8192</code> bytes. For low

+        concurrency you can increase this to buffer more response data. For an

+        extreme amount of keep alive connections, decrease this number or

+        increase your heap size.<br>

+        The default value here is pretty low, you should up it if you are not

+        dealing with tens of thousands concurrent connections.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.bufferPool</code></td><td align="left" valign="center">

+        <p>(int)The NIO connector uses a class called NioChannel that holds

+        elements linked to a socket. To reduce garbage collection, the NIO

+        connector caches these channel objects. This value specifies the size of

+        this cache. The default value is <code>500</code>, and represents that

+        the cache will hold 500 NioChannel objects. Other values are

+        <code>-1</code> for unlimited cache and <code>0</code> for no cache.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.bufferPoolSize</code></td><td align="left" valign="center">

+        <p>(int)The NioChannel pool can also be size based, not used object

+        based. The size is calculated as follows:<br>

+        NioChannel

+        <code>buffer size = read buffer size + write buffer size</code><br>

+        SecureNioChannel <code>buffer size = application read buffer size +

+        application write buffer size + network read buffer size +

+        network write buffer size</code><br>

+        The value is in bytes, the default value is <code>1024*1024*100</code>

+        (100MB).</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.processorCache</code></td><td align="left" valign="center">

+        <p>(int)Tomcat will cache SocketProcessor objects to reduce garbage

+        collection. The integer value specifies how many objects to keep in the

+        cache at most. The default is <code>500</code>. Other values are

+        <code>-1</code> for unlimited cache and <code>0</code> for no cache.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.keyCache</code></td><td align="left" valign="center">

+        <p>(int)Tomcat will cache KeyAttachment objects to reduce garbage

+        collection. The integer value specifies how many objects to keep in the

+        cache at most. The default is <code>500</code>. Other values are

+        <code>-1</code> for unlimited cache and <code>0</code> for no cache.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.eventCache</code></td><td align="left" valign="center">

+        <p>(int)Tomcat will cache PollerEvent objects to reduce garbage

+        collection. The integer value specifies how many objects to keep in the

+        cache at most. The default is <code>500</code>. Other values are

+        <code>-1</code> for unlimited cache and <code>0</code> for no cache.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">selectorPool.maxSelectors</code></td><td align="left" valign="center">

+        <p>(int)The max selectors to be used in the pool, to reduce selector

+        contention. Use this option when the command line

+        <code>org.apache.tomcat.util.net.NioSelectorShared</code> value is set

+        to false. Default value is <code>200</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">selectorPool.maxSpareSelectors</code></td><td align="left" valign="center">

+        <p>(int)The max spare selectors to be used in the pool, to reduce

+        selector contention. When a selector is returned to the pool, the system

+        can decide to keep it or let it be GC'd. Use this option when the

+        command line <code>org.apache.tomcat.util.net.NioSelectorShared</code>

+        value is set to false. Default value is <code>-1</code> (unlimited).</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">command-line-options</code></td><td align="left" valign="center">

+        <p>The following command line options are available for the NIO

+        connector:<br>

+        <code>-Dorg.apache.tomcat.util.net.NioSelectorShared=true|false</code>

+        - default is <code>true</code>. Set this value to <code>false</code> if you wish to

+        use a selector for each thread. When you set it to <code>false</code>, you can

+        control the size of the pool of selectors by using the

+        <strong>selectorPool.maxSelectors</strong> attribute.</p>

+      </td></tr></table>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="APR/native specific configuration"><!--()--></a><a name="APR/native_specific_configuration"><strong>APR/native specific configuration</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The APR/native implementation supports the following attributes in

+    addition to the common Connector and AJP attributes listed above.</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">pollTime</code></td><td align="left" valign="center">

+        <p>Duration of a poll call in microseconds. Lowering this value will

+        slightly decrease latency of connections being kept alive in some cases

+        , but will use more CPU as more poll calls are being made. The default

+        value is 2000 (2ms).

+        </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">pollerSize</code></td><td align="left" valign="center">

+      <p>Amount of sockets that the poller responsible for polling kept alive

+      connections can hold at a given time. Extra connections will be closed

+      right away. The default value is 8192, corresponding to 8192 keep-alive

+      connections.</p>

     </td></tr></table>

 

   </blockquote></td></tr></table>

@@ -276,6 +606,70 @@
 

   <p>None at this time.</p>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Special Features"><!--()--></a><a name="Special_Features"><strong>Special Features</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Proxy Support"><!--()--></a><a name="Proxy_Support"><strong>Proxy Support</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>The <code>proxyName</code> and <code>proxyPort</code> attributes can

+  be used when Tomcat is run behind a proxy server.  These attributes

+  modify the values returned to web applications that call the

+  <code>request.getServerName()</code> and <code>request.getServerPort()</code>

+  methods, which are often used to construct absolute URLs for redirects.

+  Without configuring these attributes, the values returned would reflect

+  the server name and port on which the connection from the proxy server

+  was received, rather than the server name and port to whom the client

+  directed the original request.</p>

+

+  <p>For more information, see the

+  <a href="../proxy-howto.html">Proxy Support HOW-TO</a>.</p>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Connector Comparison"><!--()--></a><a name="Connector_Comparison"><strong>Connector Comparison</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>Below is a small chart that shows how the connectors differ.</p>

+    <div class="codeBox"><pre><code>

+                       Java Blocking Connector   Java Nio Blocking Connector   APR/native Connector

+                                 BIO                         NIO                       APR

+    Classname                AjpProtocol               AjpNioProtocol           AjpAprProtocol

+    Tomcat Version           3.x onwards                 7.x onwards              5.5.x onwards

+    Support Polling              NO                          YES                       YES

+    Polling Size                 N/A                   maxConnections             maxConnections

+    Read Request Headers      Blocking                    Blocking                   Blocking

+    Read Request Body         Blocking                    Blocking                   Blocking

+    Write Response            Blocking                    Blocking                   Blocking

+    Wait for next Request     Blocking                  Non Blocking               Non Blocking

+    Max Connections        maxConnections              maxConnections             maxConnections

+

+    </code></pre></div>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/config/ajp.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/config/automatic-deployment.html b/tomcat-uid/webapps/docs/config/automatic-deployment.html
new file mode 100644
index 0000000..7e2f7fa
--- /dev/null
+++ b/tomcat-uid/webapps/docs/config/automatic-deployment.html
@@ -0,0 +1,600 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.77) - Automatic Deployment - Use cases</title><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+    The Apache Tomcat Servlet/JSP Container

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="sessionidgenerator.html">SessionIdGenerator</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Automatic Deployment - Use cases</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Key">Key</a></li><li><a href="#New_files">New files</a></li><li><a href="#Deleted_files">Deleted files</a></li><li><a href="#Modified_files">Modified files</a></li><li><a href="#Added_files">Added files</a></li><li><a href="#Notes">Notes</a></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>This page defines the expected behaviour of the automatic deployer in many

+  typical use cases. This is a complex area of Tomcat's functionality.

+  While any difference between this document and Tomcat's behaviour is a

+  bug, the fix may be to change this document, Tomcat's behaviour or

+  both.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Key"><strong>Key</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table class="detail-table">

+    <tr>

+      <td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Term</font></td><td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Description</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">XML</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">An XML configuration file located in the Host's

+          <em>configBase</em>. It must contain a single &lt;Context&gt; element

+          and may contain optional nested elements. It does not define an

+          explicit <em>docBase</em> attribute. It represents a single web

+          application. It is often referred to as a context.xml file.</font></td>

+    </tr><tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">XML+EW</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">An XML configuration file located in the Host's

+          <em>configBase</em>. It must contain a single &lt;Context&gt; element

+          and may contain optional nested elements. It includes an explicit

+          <em>docBase</em> attribute that points to an external WAR. It

+          represents a single web application. It is often referred to as a

+          context.xml file.</font></td>

+    </tr><tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">XML+ED</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">An XML configuration file located in the Host's

+          <em>configBase</em>. It must contain a single &lt;Context&gt; element

+          and may contain optional nested elements. It includes an explicit

+          <em>docBase</em> attribute that points to an external directory. It

+          represents a single web application. It is often referred to as a

+          context.xml file.</font></td>

+    </tr><tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">WAR</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">A WAR file located in the Host's <em>appBase</em>. The WAR does

+          not include an embedded context.xml file.</font></td>

+    </tr><tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">WAR+XML</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">A WAR file located in the Host's <em>appBase</em>. The WAR does

+          include an embedded context.xml file.</font></td>

+    </tr><tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">DIR</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">A directory located in the Host's <em>appBase</em>. The directory

+          does not include an embedded context.xml file.</font></td>

+    </tr><tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">DIR+XML</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">A directory located in the Host's <em>appBase</em>. The directory

+          does include an embedded context.xml file.</font></td>

+    </tr><tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">redeploy</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">The Context object that represents the web application is destroyed

+          and a new Context object is created. If present and permitted by the

+          configuration, this new Context object is created by parsing the

+          context.xml file. The web.xml file is parsed during the application

+          start process. Any sessions stored in the standard Manager in the

+          default configuration will not be persisted. Any requests to the web

+          application during the redeploy will be handled as if the web

+          application is not deployed.</font></td>

+    </tr><tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">reload</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">The Context object that represents the web application is stopped and

+          then started. The web.xml file is parsed during the application start

+          process. Any sessions stored in the standard Manager in the default

+          configuration will not be persisted. Any requests to the web

+          application during the reload will be held until the reload completes

+          at which point they will continue using the reloaded web application.

+          </font></td>

+    </tr>

+  </table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="New files"><!--()--></a><a name="New_files"><strong>New files</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>This section describes Tomcat's behaviour when the automatic

+  deployment process discovers a new web application.</p>

+

+  <table class="detail-table">

+    <tr>

+      <td bgcolor="#039acc" valign="top" rowspan="2"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Starting artifact(s)</font></td>

+      <td bgcolor="#039acc" valign="top" colspan="3"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Configuration Settings</font></td>

+      <td bgcolor="#039acc" valign="top" colspan="4"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Result</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">deployXML</font></td><td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">copyXML</font></td><td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">unpackWARs</font></td>

+      <td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">XML</font></td><td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">WAR</font></td><td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">DIR</font></td><td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Notes</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">XML</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">either</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">either</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">either</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">1, 2, 3</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">XML+EW</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">either</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">either</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">false</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">1</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">XML+EW</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">either</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">either</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">true</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">1</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">XML+ED</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">either</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">either</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">either</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">1, 2</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">WAR+XML</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">false</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">either</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">false</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">4</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">WAR+XML</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">false</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">either</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">true</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">4</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">WAR+XML</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">true</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">false</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">false</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"></font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">WAR+XML</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">true</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">false</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">true</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"></font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">WAR+XML</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">true</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">true</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">false</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"></font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">WAR+XML</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">true</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">true</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">true</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"></font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">WAR</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">either</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">either</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">false</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"></font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">WAR</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">either</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">either</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">true</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"></font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">DIR+XML</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">false</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">either</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">either</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">4</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">DIR+XML</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">true</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">false</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">either</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"></font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">DIR+XML</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">true</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">true</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">either</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"></font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">DIR</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">false</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">either</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">either</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"></font></td>

+    </tr>

+  </table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deleted files"><!--()--></a><a name="Deleted_files"><strong>Deleted files</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>This section describes Tomcat's behaviour when the automatic

+  deployment process detects that a web application file has been deleted.</p>

+

+  <p>When a file is deleted or modified any redeploy resources that are listed

+  after the modified/deleted resource are themselves deleted (and possibly

+  re-created). The order of redeploy resources is:</p>

+

+  <ol>

+    <li>WAR</li>

+    <li>DIR</li>

+    <li>XML</li>

+    <li>global resources</li>

+  </ol>

+

+  <p>There are some exceptions to the deletion rule above:</p>

+

+  <ul>

+    <li>global resources are never deleted</li>

+    <li>external resources are never deleted</li>

+    <li>if the WAR or DIR has been modified then the XML file is only deleted if

+       <em>copyXML</em> is <code>true</code> and <em>deployXML</em> is

+       <code>true</code></li>

+  </ul>

+

+  <p>In the following table:</p>

+

+  <ul>

+    <li>'-' means "unchanged from not present". i.e. the artifact wasn't present

+        before the change and isn't present after it either. '-' rather than 'N'

+        is used to focus attention on what changes.</li>

+    <li>'R' means that the directory is re-created by expanding the WAR file.

+        This will only happen if <em>unpackWARs</em> is <code>true</code>.</li>

+    <li>'XW' means that the if the WAR contains a META-INF/context.xml file it

+        will be extracted and placed in the Host's <em>configBase</em>.

+        This only happens if <em>copyXML</em> is <code>true</code> and

+        <em>deployXML</em> is <code>true</code>.</li>

+    <li>'XD' means that the if the directory contains a META-INF/context.xml

+        file it will be copied to the Host's <em>configBase</em>. This only

+        happens if <em>copyXML</em> is <code>true</code> and <em>deployXML</em>

+        is <code>true</code>.</li>

+  </ul>

+

+  <table class="detail-table">

+    <tr>

+      <td bgcolor="#039acc" valign="top" colspan="3"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Artifacts present</font></td>

+      <td bgcolor="#039acc" valign="top" rowspan="2"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Artifact removed</font></td>

+      <td bgcolor="#039acc" valign="top" colspan="4"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Artifacts remaining</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">XML</font></td><td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">WAR</font></td><td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">DIR</font></td>

+      <td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">XML</font></td><td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">WAR</font></td><td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">DIR</font></td><td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Notes</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">DIR</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">-</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">-</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"></font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">WAR</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">-</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">-</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"></font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">DIR</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">-</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">R</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"></font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">WAR</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">-</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"></font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">XML</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">-</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">-</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"></font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">DIR</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">-</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">5</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">XML</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">XD</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">-</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"></font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">WAR</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">-</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">5</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">XML</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">XW</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">-</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"></font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">DIR</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">XW</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">R</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"></font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">WAR</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"></font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">XML</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">XW</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"></font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y (external)</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">WAR</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">-</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">3</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y (external)</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">XML</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y (external)</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">-</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">6</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y (external)</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">DIR</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">-</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">3</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y (external)</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">XML</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">-</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y (external)</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">6</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y (external)</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">DIR</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y (external)</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">R</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"></font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y (external)</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">WAR</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">3</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y (external)</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">XML</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y (external)</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">6</font></td>

+    </tr>

+  </table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Modified files"><!--()--></a><a name="Modified_files"><strong>Modified files</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>This section describes Tomcat's behaviour when the automatic

+  deployment process detects that a web application file has been modified.</p>

+

+  <p>In the following table:</p>

+

+  <ul>

+    <li>'-' means "unchanged from not present". i.e. the artifact wasn't present

+        before the change and isn't present after it either. '-' rather than 'N'

+        is used to focus attention on what changes.</li>

+    <li>'M' means that the artifact has been modified.</li>

+    <li>'R' means that the directory is deleted and re-created by expanding the

+        WAR file. This will only happen if <em>unpackWARs</em> is

+        <code>true</code>.</li>

+  </ul>

+

+  <table class="detail-table">

+    <tr>

+      <td bgcolor="#039acc" valign="top" colspan="3"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Artifacts present</font></td>

+      <td bgcolor="#039acc" valign="top" rowspan="2"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Artifact modified</font></td>

+      <td bgcolor="#039acc" valign="top" colspan="4"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Artifacts remaining</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">XML</font></td><td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">WAR</font></td><td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">DIR</font></td>

+      <td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">XML</font></td><td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">WAR</font></td><td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">DIR</font></td><td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Action</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">DIR</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">-</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">-</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">M</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">None</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">WAR</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">-</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">M</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">-</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Redeploy</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">DIR</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">-</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">M</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">None</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">WAR</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">-</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">M</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">R</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Redeploy</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">XML</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">M</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">-</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">-</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Redeploy</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">DIR</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">-</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">M</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">None</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">XML</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">M</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">-</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Redeploy</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">WAR</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">M</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">-</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Reload</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">XML</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">M</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">-</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Redeploy</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">DIR</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">M</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">None</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">WAR</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">M</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">R</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Reload</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">XML</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">M</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Redeploy</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y(external)</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">WAR</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">M(external)</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">-</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Reload</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y(external)</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">XML</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">M</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y(external)</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">-</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Redeploy</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y(external)</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">DIR</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">-</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">M(external)</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">None</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">N</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y(external)</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">XML</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">M</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">-</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y(external)</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Redeploy</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y(external)</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">DIR</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y(external)</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">M</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">None</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y(external)</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">WAR</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">M(external)</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">R</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Reload</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y(external)</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">XML</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">M</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y(external)</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Y</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Redeploy</font></td>

+    </tr>

+  </table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Added files"><!--()--></a><a name="Added_files"><strong>Added files</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>This is treated as if the added file has been modified with the following

+  additional actions:</p>

+

+  <ul>

+    <li>If a WAR is added, any DIR is removed and may be recreated depending on

+        <em>unpackWARs</em>.</li>

+    <li>If an XML file is added that refers to an external <em>docBase</em> any

+        WAR or DIR in the appBase will be removed. The DIR may be recreated if

+        the external resource is a WAR and <em>unpackWARs</em> is true.</li>

+    <li>If a DIR is added when a WAR already exists and <em>unpackWARs</em> is

+        <code>false</code>, the DIR will be ignored but a warning will be

+        logged when the DIR is first detected. If the WAR is removed, the DIR

+        will be left and may be deployed via automatic deployment.</li>

+    <li>If a WAR is added to the <em>appBase</em> when an external WAR already

+        exists, the WAR in the <em>appBase</em> will be ignored but a warning

+        will be logged when the WAR in the <em>appBase</em> is first detected.

+        If the external WAR is removed, the WAR in the <em>appBase</em> will be

+        left and may be deployed via automatic deployment.</li>

+    <li>If an XML file is added to the META-INF directory of an application

+        deployed from that DIR, the application will always be redeployed. The

+        result will be the same as for a new deployment.</li>

+  </ul>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Notes"><strong>Notes</strong></a></font></td></tr><tr><td><blockquote>

+

+  <ol>

+    <li><em>deployXML</em> and <em>copyXML</em> are ignored since an XML file

+        was discovered in the <em>configBase</em>.</li>

+    <li><em>unpackWARs</em> is ignored since there is no WAR file.</li>

+    <li>The context will fail to start because there is no content in the

+        expected <em>docBase</em>.</li>

+    <li>The web application fails to deploy because it contains an embedded

+        META-INF/context.xml, <em>deployXML</em> is <code>false</code> and an

+        XML has not been provided in the <em>configBase</em>.</li>

+    <li>The XML file is only deleted if <em>copyXML</em> is <code>true</code>

+        and <em>deployXML</em> is <code>true</code>.</li>

+    <li>Although the external resource is still present, the web application is

+        fully undeployed as Tomcat has no knowledge of the external resource.

+        </li>

+  </ol>

+

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/config/automatic-deployment.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/config/cluster-channel.html b/tomcat-uid/webapps/docs/config/cluster-channel.html
index 98e586f..415ff5d 100644
--- a/tomcat-uid/webapps/docs/config/cluster-channel.html
+++ b/tomcat-uid/webapps/docs/config/cluster-channel.html
@@ -1,29 +1,104 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat Configuration Reference (6.0.41) - The Cluster Channel object</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.77) - The Cluster Channel object</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

     The Apache Tomcat Servlet/JSP Container

-  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat Configuration Reference</h1><h2>The Cluster Channel object</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

-<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li></ol></li></ul>

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="sessionidgenerator.html">SessionIdGenerator</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Cluster Channel object</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#org.apache.catalina.tribes.group.GroupChannel_Attributes">org.apache.catalina.tribes.group.GroupChannel Attributes</a></li></ol></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

   The cluster channel is the main component of a small framework we've nicknamed Apache Tribes.<br>

   The channel manages a set of sub components and together they create a group communication framework.<br>

   This framework is then used internally by the components that need to send messages between different Tomcat instances.

   <br>

   A few examples of these components would be the SimpleTcpCluster that does the messaging for the DeltaManager,

-  or the BackupManager that uses a different replication strategy. The ReplicatedContext object does also 

+  or the BackupManager that uses a different replication strategy. The ReplicatedContext object does also

   use the channel object to communicate context attribute changes.

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Nested Components"><!--()--></a><a name="Nested_Components"><strong>Nested Components</strong></a></font></td></tr><tr><td><blockquote>

   <p><b><a href="cluster-membership.html">Channel/Membership</a>:</b> <br>

     The Membership component is responsible for auto discovering new nodes in the cluster

     and also to provide for notifications for any nodes that have not responded with a heartbeat.

     The default implementation uses multicast.<br>

-    In the membership component you configure how your nodes, aka. members, are to be discovered and/or 

-    divided up. 

+    In the membership component you configure how your nodes, aka. members, are to be discovered and/or

+    divided up.

     You can always find out more about <a href="../tribes/introduction.html">Apache Tribes</a>

   </p>

   <p><b><a href="cluster-sender.html">Channel/Sender</a>:</b> <br>

-    The Sender component manages all outbound connections and data messages that are sent 

+    The Sender component manages all outbound connections and data messages that are sent

     over the network from one node to another.

     This component allows messages to be sent in parallel.

     The default implementation uses TCP client sockets, and socket tuning for outgoing messages are

@@ -43,7 +118,7 @@
     You can always find out more about <a href="../tribes/introduction.html">Apache Tribes</a>

   </p>

   <p><b><a href="cluster-interceptor.html">Channel/Interceptor</a>:</b> <br>

-    The channel will send messages through an interceptor stack. Because of this, you have the ability to 

+    The channel will send messages through an interceptor stack. Because of this, you have the ability to

     customize the way messages are sent and received, and even how membership is handled.<br>

     You can always find out more about <a href="../tribes/introduction.html">Apache Tribes</a>

   </p>

@@ -51,7 +126,7 @@
 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Attributes"><!--()--></a><a name="Common_Attributes"><strong>Common Attributes</strong></a></font></td></tr><tr><td><blockquote>

 

-  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>className</code></strong></td><td align="left" valign="center">

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

        The default value here is <code>org.apache.catalina.tribes.group.GroupChannel</code> and is

        currently the only implementation available.

     </td></tr></table>

@@ -59,7 +134,49 @@
 

   </blockquote></td></tr></table>

 

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.catalina.tribes.group.GroupChannel Attributes"><!--()--></a><a name="org.apache.catalina.tribes.group.GroupChannel_Attributes"><strong>org.apache.catalina.tribes.group.GroupChannel Attributes</strong></a></font></td></tr><tr><td><blockquote>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">heartbeat</code></td><td align="left" valign="center">

+         Flag whether the channel manages its own heartbeat.

+         If set to true,  the channel start a local thread for the heart beat.

+         If set this flag to false, you must set SimpleTcpCluster#heartbeatBackgroundEnabled

+         to true. default value is true.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">heartbeatSleeptime</code></td><td align="left" valign="center">

+        If heartbeat == true, specifies the interval of heartbeat thread in milliseconds.

+        The default is 5000 (5 seconds).

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">optionCheck</code></td><td align="left" valign="center">

+        If set to true, the GroupChannel will check the option flags that each

+        interceptor is using. Reports an error if two interceptor share the same

+        flag. The default is false.

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/config/cluster-channel.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/config/cluster-deployer.html b/tomcat-uid/webapps/docs/config/cluster-deployer.html
index 907015b..a751b23 100644
--- a/tomcat-uid/webapps/docs/config/cluster-deployer.html
+++ b/tomcat-uid/webapps/docs/config/cluster-deployer.html
@@ -1,26 +1,163 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat Configuration Reference (6.0.41) - The Cluster Deployer object</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.77) - The Cluster Deployer object</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

     The Apache Tomcat Servlet/JSP Container

-  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat Configuration Reference</h1><h2>The Cluster Deployer object</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

-<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li></ol></li></ul>

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="sessionidgenerator.html">SessionIdGenerator</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Cluster Deployer object</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#org.apache.catalina.ha.deploy.FarmWarDeployer">org.apache.catalina.ha.deploy.FarmWarDeployer</a><ol><li><a href="#Attributes">Attributes</a></li></ol></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

-  <p>TODO - Complete documentation</p>

-  

+  <p>The Farm War Deployer can deploy and undeploy web applications on the other

+  nodes in the cluster.</p>

+  <p><strong>Note: </strong>FarmWarDeployer can be configured at host level

+  cluster only.

+  </p>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.catalina.ha.deploy.FarmWarDeployer"><strong>org.apache.catalina.ha.deploy.FarmWarDeployer</strong></a></font></td></tr><tr><td><blockquote>

 

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

 

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Attributes"><!--()--></a><a name="Common_Attributes"><strong>Common Attributes</strong></a></font></td></tr><tr><td><blockquote>

-

-  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>className</code></strong></td><td align="left" valign="center">

-

-    </td></tr></table>

-

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+        The cluster deployer class, currently only one is available,

+        <code>org.apache.catalina.ha.deploy.FarmWarDeployer.</code>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">deployDir</code></strong></td><td align="left" valign="center">

+        Deployment directory. This is the pathname of a directory where deploy

+        the web applications. You may specify an absolute pathname, or a

+        pathname that is relative to the $CATALINA_BASE directory. In the

+        current implementation, this attribute must be the same value as the

+        <strong>Host's appBase</strong>.

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">tempDir</code></strong></td><td align="left" valign="center">

+        The temporaryDirectory to store binary data when downloading a war from

+        the cluster. You may specify an absolute pathname, or a pathname that is

+        relative to the $CATALINA_BASE directory.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">watchDir</code></td><td align="left" valign="center">

+        This is the pathname of a directory where watch for changes(add/modify/remove)

+        of web applications. You may specify an absolute pathname, or a pathname

+        that is relative to the $CATALINA_BASE directory.

+        <strong>Note: </strong> if <strong>watchEnabled</strong> is false, this

+        attribute will have no effect.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">watchEnabled</code></td><td align="left" valign="center">

+        Set to true if you want to watch for changes of web applications.

+        Only when this attribute set to true, you can trigger a deploy/undeploy

+        of web applications. The flag's value defaults to false.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">processDeployFrequency</code></td><td align="left" valign="center">

+        Frequency of the Farm watchDir check. Cluster wide deployment will be

+        done once for the specified amount of backgroundProcess calls (ie, the

+        lower the amount, the most often the checks will occur). The minimum

+        value is 1, and the default value is 2.

+        <strong>Note: </strong> if <strong>watchEnabled</strong> is false, this

+        attribute will have no effect.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxValidTime</code></td><td align="left" valign="center">

+        The maximum valid time(in seconds) of FileMessageFactory.

+        FileMessageFactory will be removed immediately after receiving the

+        complete WAR file but when failing to receive a FileMessage which was

+        sent dividing, FileMessageFactory will leak without being removed.

+        FileMessageFactory that is leaking will be automatically removed after

+        maxValidTime. If a negative value specified, FileMessageFactory will

+        never be removed. If the attribute is not provided, a default of 300

+        seconds (5 minutes) is used.

+      </td></tr></table>

 

   </blockquote></td></tr></table>

 

-

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/config/cluster-deployer.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/config/cluster-interceptor.html b/tomcat-uid/webapps/docs/config/cluster-interceptor.html
index 6cab439..a32b1b5 100644
--- a/tomcat-uid/webapps/docs/config/cluster-interceptor.html
+++ b/tomcat-uid/webapps/docs/config/cluster-interceptor.html
@@ -1,17 +1,91 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat Configuration Reference (6.0.41) - The Channel Interceptor object</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.77) - The Channel Interceptor object</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

     The Apache Tomcat Servlet/JSP Container

-  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat Configuration Reference</h1><h2>The Channel Interceptor object</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

-<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Available_Interceptors">Available Interceptors</a></li><li><a href="#Static_Membership">Static Membership</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#org.apache.catalina.tribes.group.interceptors.DomainFilterInterceptor_Attributes">org.apache.catalina.tribes.group.interceptors.DomainFilterInterceptor Attributes</a></li><li><a href="#org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor_Attributes">org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor Attributes</a></li><li><a href="#org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor_Attributes">org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor Attributes</a></li><li><a href="#org.apache.catalina.tribes.group.interceptors.TcpFailureDetector_Attributes">org.apache.catalina.tribes.group.interceptors.TcpFailureDetector Attributes</a></li><li><a href="#org.apache.catalina.tribes.group.interceptors.TcpPingInterceptor_Attributes">org.apache.catalina.tribes.group.interceptors.TcpPingInterceptor Attributes</a></li><li><a href="#org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor_Attributes">org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor Attributes</a></li><li><a href="#Nested_element_StaticMember_Attributes">Nested element StaticMember Attributes</a></li></ol></li></ul>

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="sessionidgenerator.html">SessionIdGenerator</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Channel Interceptor object</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Available_Interceptors">Available Interceptors</a></li><li><a href="#Static_Membership">Static Membership</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#org.apache.catalina.tribes.group.interceptors.DomainFilterInterceptor_Attributes">org.apache.catalina.tribes.group.interceptors.DomainFilterInterceptor Attributes</a></li><li><a href="#org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor_Attributes">org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor Attributes</a></li><li><a href="#org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor_Attributes">org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor Attributes</a></li><li><a href="#org.apache.catalina.tribes.group.interceptors.TcpFailureDetector_Attributes">org.apache.catalina.tribes.group.interceptors.TcpFailureDetector Attributes</a></li><li><a href="#org.apache.catalina.tribes.group.interceptors.TcpPingInterceptor_Attributes">org.apache.catalina.tribes.group.interceptors.TcpPingInterceptor Attributes</a></li><li><a href="#org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor_Attributes">org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor Attributes</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a><ol><li><a href="#StaticMember_Attributes">StaticMember Attributes</a></li></ol></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

   <p>

   Apache Tribes supports an interceptor architecture to intercept both messages and membership notifications.

   This architecture allows decoupling of logic and opens the way for some very kewl feature add ons.

   </p>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Available Interceptors"><!--()--></a><a name="Available_Interceptors"><strong>Available Interceptors</strong></a></font></td></tr><tr><td><blockquote>

- <p>

    <ul>

     <li><code>org.apache.catalina.tribes.group.interceptors.TcpFailureDetector</code></li>

     <li><code>org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor</code></li>

@@ -27,7 +101,6 @@
     <li><code>org.apache.catalina.tribes.group.interceptors.GzipInterceptor</code></li>

     <li><code>org.apache.catalina.tribes.group.interceptors.TcpPingInterceptor</code></li>

    </ul>

- </p>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Static Membership"><!--()--></a><a name="Static_Membership"><strong>Static Membership</strong></a></font></td></tr><tr><td><blockquote>

   <p>

    In addition to dynamic discovery, Apache Tribes also supports static membership, with membership verification.

@@ -35,25 +108,24 @@
    underneath the <code>org.apache.catalina.tribes.group.interceptors.TcpFailureDetector</code> interceptor.

    Inside the <code>StaticMembershipInterceptor</code> you can add the static members you wish to have.

    The <code>TcpFailureDetector</code> will do a health check on the static members,and also monitor them for crashes

-   so they will have the same level of notification mechanism as the members that are automatically discovered.

-   <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-     &lt;Interceptor className="org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor"&gt;

+   so they will have the same level of notification mechanism as the members that are automatically discovered.</p>

+   <div class="codeBox"><pre><code>     &lt;Interceptor className="org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor"&gt;

+       &lt;LocalMember className="org.apache.catalina.tribes.membership.StaticMember"

+                  domain="staging-cluster"

+                  uniqueId="{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,1}"/&gt;

        &lt;Member className="org.apache.catalina.tribes.membership.StaticMember"

                   port="5678"

                   securePort="-1"

                   host="tomcat01.mydomain.com"

                   domain="staging-cluster"

                   uniqueId="{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}"/&gt;

-     &lt;/Interceptor&gt;

-   

-   </pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-  </p>

+     &lt;/Interceptor&gt;</code></pre></div>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Attributes"><!--()--></a><a name="Common_Attributes"><strong>Common Attributes</strong></a></font></td></tr><tr><td><blockquote>

-   <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>className</code></strong></td><td align="left" valign="center">

-       Required, as there is no default 

-     </td></tr><tr><td align="left" valign="center"><code>optionFlag</code></td><td align="left" valign="center">

+   <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+       Required, as there is no default

+     </td></tr><tr><td align="left" valign="center"><code class="attributeName">optionFlag</code></td><td align="left" valign="center">

        If you want the interceptor to trigger on certain message depending on the message's option flag,

        you can setup the interceptors flag here.

        The default value is <code>0</code>, meaning this interceptor will trigger on all messages.

@@ -61,63 +133,72 @@
   </blockquote></td></tr></table>

 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.catalina.tribes.group.interceptors.DomainFilterInterceptor Attributes"><!--()--></a><a name="org.apache.catalina.tribes.group.interceptors.DomainFilterInterceptor_Attributes"><strong>org.apache.catalina.tribes.group.interceptors.DomainFilterInterceptor Attributes</strong></a></font></td></tr><tr><td><blockquote>

-   <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>domain</code></strong></td><td align="left" valign="center">

+   <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">domain</code></strong></td><td align="left" valign="center">

        The logical cluster domain that this Interceptor accepts.

        Two different type of values are possible:<br>

-       1. Regular string values like "staging-domain" or "tomcat-cluster" will be converted into bytes 

+       1. Regular string values like "staging-domain" or "tomcat-cluster" will be converted into bytes

        using ISO-8859-1 encoding.<br>

        2. byte array in string form, for example {216,123,12,3}<br>

+     </td></tr><tr><td align="left" valign="center"><code class="attributeName">logInterval</code></td><td align="left" valign="center">

+       This value indicates the interval for logging for messages from different domains.

+       The default is 100, which means that to log  per 100 messages.

      </td></tr></table>

   </blockquote></td></tr></table>

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor Attributes"><!--()--></a><a name="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor_Attributes"><strong>org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor Attributes</strong></a></font></td></tr><tr><td><blockquote>

-   <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>className</code></strong></td><td align="left" valign="center">

-       Required, This dispatcher uses JDK 1.5 java.util.concurrent package 

-     </td></tr><tr><td align="left" valign="center"><code>optionFlag</code></td><td align="left" valign="center">

+   <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+       Required, This dispatcher uses JDK 1.5 java.util.concurrent package

+     </td></tr><tr><td align="left" valign="center"><code class="attributeName">optionFlag</code></td><td align="left" valign="center">

        The default and hard coded value is <code>8 (org.apache.catalina.tribes.Channel.SEND_OPTIONS_ASYNCHRONOUS)</code>.

        The dispatcher will trigger on this value only, as it is predefined by Tribes.

        The other attributes are inherited from its base class <code>org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor</code>.

-     </td></tr><tr><td align="left" valign="center"><code>maxThreads</code></td><td align="left" valign="center">

+     </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxThreads</code></td><td align="left" valign="center">

        The maximum number of threads in this pool, default is 10.

-     </td></tr><tr><td align="left" valign="center"><code>maxSpareThreads</code></td><td align="left" valign="center">

+     </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxSpareThreads</code></td><td align="left" valign="center">

        The number of threads to keep in the pool, default is 2.

-     </td></tr><tr><td align="left" valign="center"><code>keepAliveTime</code></td><td align="left" valign="center">

+     </td></tr><tr><td align="left" valign="center"><code class="attributeName">keepAliveTime</code></td><td align="left" valign="center">

        Maximum number of milliseconds of until Idle thread terminates. Default value is 5000(5 seconds).

      </td></tr></table>

   </blockquote></td></tr></table>

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor Attributes"><!--()--></a><a name="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor_Attributes"><strong>org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor Attributes</strong></a></font></td></tr><tr><td><blockquote>

-   <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>className</code></strong></td><td align="left" valign="center">

+   <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

        Required, Same implementation as <code>MessageDispatch15Interceptor</code>, but with JDK 1.4 compliance.

-     </td></tr><tr><td align="left" valign="center"><code>optionFlag</code></td><td align="left" valign="center">

+     </td></tr><tr><td align="left" valign="center"><code class="attributeName">optionFlag</code></td><td align="left" valign="center">

        The default and hard coded value is <code>8 (org.apache.catalina.tribes.Channel.SEND_OPTIONS_ASYNCHRONOUS)</code>.

        The dispatcher will trigger on this value only, as it is predefined by Tribes.

-     </td></tr><tr><td align="left" valign="center"><code>alwaysSend</code></td><td align="left" valign="center">

+     </td></tr><tr><td align="left" valign="center"><code class="attributeName">alwaysSend</code></td><td align="left" valign="center">

        What behavior should be executed when the dispatch queue is full. If <code>true</code> (default), then the message is

-       is sent synchronously, if <code>false</code> an error is thrown.   

-     </td></tr><tr><td align="left" valign="center"><code>maxQueueSize</code></td><td align="left" valign="center">

+       is sent synchronously, if <code>false</code> an error is thrown.

+     </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxQueueSize</code></td><td align="left" valign="center">

        Size in bytes of the dispatch queue, the default value is <code> 1024*1024*64 (64MB)</code> sets the maximum queue size for the dispatch queue

        if the queue fills up, one can trigger the behavior, if <code>alwaysSend</code> is set to true, the message will be sent synchronously

-       if the flag is false, an error is thrown  

+       if the flag is false, an error is thrown

      </td></tr></table>

   </blockquote></td></tr></table>

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector Attributes"><!--()--></a><a name="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector_Attributes"><strong>org.apache.catalina.tribes.group.interceptors.TcpFailureDetector Attributes</strong></a></font></td></tr><tr><td><blockquote>

-   <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>connectTimeout</code></td><td align="left" valign="center">

+   <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">connectTimeout</code></td><td align="left" valign="center">

        Specifies the timeout, in milliseconds, to use when attempting a TCP connection

        to the suspect node. Default is 1000.

-     </td></tr><tr><td align="left" valign="center"><code>performSendTest</code></td><td align="left" valign="center">

+     </td></tr><tr><td align="left" valign="center"><code class="attributeName">performSendTest</code></td><td align="left" valign="center">

        If true is set, send a test message to the suspect node. Default is true.

-     </td></tr><tr><td align="left" valign="center"><code>performReadTest</code></td><td align="left" valign="center">

+     </td></tr><tr><td align="left" valign="center"><code class="attributeName">performReadTest</code></td><td align="left" valign="center">

        If true is set, read the response of the test message that sent. Default is false.

        <strong>Note: </strong>if <code>performSendTest</code> is false, this attribute will have no effect.

-     </td></tr><tr><td align="left" valign="center"><code>readTestTimeout</code></td><td align="left" valign="center">

+     </td></tr><tr><td align="left" valign="center"><code class="attributeName">readTestTimeout</code></td><td align="left" valign="center">

        Specifies the timeout, in milliseconds, to use when performing a read test

        to the suspicious node. Default is 5000.

+     </td></tr><tr><td align="left" valign="center"><code class="attributeName">removeSuspectsTimeout</code></td><td align="left" valign="center">

+       The maximum time(in seconds)  for remove from removeSuspects. Member of

+       removeSuspects will be automatically removed after removeSuspectsTimeout.

+       If a negative value specified, the removeSuspects members never be

+       removed until disappeared really. If the attribute is not provided,

+       a default of 300 seconds (5 minutes) is used.

      </td></tr></table>

   </blockquote></td></tr></table>

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.catalina.tribes.group.interceptors.TcpPingInterceptor Attributes"><!--()--></a><a name="org.apache.catalina.tribes.group.interceptors.TcpPingInterceptor_Attributes"><strong>org.apache.catalina.tribes.group.interceptors.TcpPingInterceptor Attributes</strong></a></font></td></tr><tr><td><blockquote>

-   <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>interval</code></td><td align="left" valign="center">

+   <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">interval</code></td><td align="left" valign="center">

        If useThread == true, defines the interval of sending a ping message.

        default is 1000 ms.

-     </td></tr><tr><td align="left" valign="center"><code>useThread</code></td><td align="left" valign="center">

+     </td></tr><tr><td align="left" valign="center"><code class="attributeName">useThread</code></td><td align="left" valign="center">

        Flag of whether to start a thread for sending a ping message.

        If set to true, this interceptor will start a local thread for sending a ping message.

        if set to false, channel heartbeat will send a ping message.

@@ -125,42 +206,97 @@
      </td></tr></table>

   </blockquote></td></tr></table>

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor Attributes"><!--()--></a><a name="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor_Attributes"><strong>org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor Attributes</strong></a></font></td></tr><tr><td><blockquote>

-   <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>interval</code></td><td align="left" valign="center">

+   <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">interval</code></td><td align="left" valign="center">

        Defines the interval in number of messages when we are to report the throughput statistics.

        The report is logged to the <code>org.apache.juli.logging.LogFactory.getLog(ThroughputInterceptor.class)</code>

        logger under the <code>INFO</code> level.

        Default value is to report every <code>10000</code> messages.

      </td></tr></table>

   </blockquote></td></tr></table>

-  

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Nested element StaticMember Attributes"><!--()--></a><a name="Nested_element_StaticMember_Attributes"><strong>Nested element StaticMember Attributes</strong></a></font></td></tr><tr><td><blockquote>

-   <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>className</code></strong></td><td align="left" valign="center">

-       Only one implementation available:<code>org.apache.catalina.tribes.membership.StaticMember</code>

-     </td></tr><tr><td align="left" valign="center"><strong><code>port</code></strong></td><td align="left" valign="center">

-       The port that this static member listens to for cluster messages

-     </td></tr><tr><td align="left" valign="center"><code>securePort</code></td><td align="left" valign="center">

-       The secure port this static member listens to for encrypted cluster messages

-       default value is <code>-1</code>, this value means the member is not listening on a secure port

-     </td></tr><tr><td align="left" valign="center"><strong><code>host</code></strong></td><td align="left" valign="center">

-       The host (or network interface) that this static member listens for cluster messages.

-       Three different type of values are possible:<br>

-       1. IP address in the form of "216.123.1.23"<br>

-       2. Hostnames like "tomcat01.mydomain.com" or "tomcat01" as long as they resolve correctly<br>

-       3. byte array in string form, for example {216,123,12,3}<br>

-     </td></tr><tr><td align="left" valign="center"><strong><code>domain</code></strong></td><td align="left" valign="center">

-       The logical cluster domain for this this static member listens for cluster messages.

-       Two different type of values are possible:<br>

-       1. Regular string values like "staging-domain" or "tomcat-cluster" will be converted into bytes 

-       using ISO-8859-1 encoding.

-       2. byte array in string form, for example {216,123,12,3}<br>

-     </td></tr><tr><td align="left" valign="center"><strong><code>uniqueId</code></strong></td><td align="left" valign="center">

-       A universally uniqueId for this static member.

-       The values must be 16 bytes in the following form:<br>

-       1. byte array in string form, for example {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}<br>

-     </td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Nested Components"><!--()--></a><a name="Nested_Components"><strong>Nested Components</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="StaticMember Attributes"><!--()--></a><a name="StaticMember_Attributes"><strong>StaticMember Attributes</strong></a></font></td></tr><tr><td><blockquote>

+    <p><b>LocalMember:</b> <br>

+    Static member that is the local member of the static cluster group.

+    </p>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+        Only one implementation available:<code>org.apache.catalina.tribes.membership.StaticMember</code>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">port</code></td><td align="left" valign="center">

+        There is no need to set.

+        The value of this attribute inherits from the cluster receiver setting.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">securePort</code></td><td align="left" valign="center">

+        There is no need to set.

+        The value of this attribute inherits from the cluster receiver setting.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">host</code></td><td align="left" valign="center">

+        There is no need to set.

+        The value of this attribute inherits from the cluster receiver setting.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">domain</code></td><td align="left" valign="center">

+        The logical cluster domain for that this static member listens for cluster messages.

+        Two different type of values are possible:<br>

+        1. Regular string values like "staging-domain" or "tomcat-cluster" will be converted into bytes

+        using ISO-8859-1 encoding.

+        2. byte array in string form, for example {216,123,12,3}<br>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">uniqueId</code></strong></td><td align="left" valign="center">

+        A universally uniqueId for this static member.

+        The values must be 16 bytes in the following form:<br>

+        1. byte array in string form, for example {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}<br>

+      </td></tr></table>

+

+    <p><b>Member:</b> <br>

+    Static member that add to the static cluster group.

+    </p>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+        Only one implementation available:<code>org.apache.catalina.tribes.membership.StaticMember</code>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">port</code></strong></td><td align="left" valign="center">

+        The port that this static member listens to for cluster messages

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">securePort</code></td><td align="left" valign="center">

+        The secure port this static member listens to for encrypted cluster messages

+        default value is <code>-1</code>, this value means the member is not listening on a secure port

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">host</code></strong></td><td align="left" valign="center">

+        The host (or network interface) that this static member listens for cluster messages.

+        Three different type of values are possible:<br>

+        1. IP address in the form of "216.123.1.23"<br>

+        2. Hostnames like "tomcat01.mydomain.com" or "tomcat01" as long as they resolve correctly<br>

+        3. byte array in string form, for example {216,123,12,3}<br>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">domain</code></td><td align="left" valign="center">

+        The logical cluster domain for that this static member listens for cluster messages.

+        Two different type of values are possible:<br>

+        1. Regular string values like "staging-domain" or "tomcat-cluster" will be converted into bytes

+        using ISO-8859-1 encoding.<br>

+        2. byte array in string form, for example {216,123,12,3}<br>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">uniqueId</code></strong></td><td align="left" valign="center">

+        A universally uniqueId for this static member.

+        The values must be 16 bytes in the following form:<br>

+        1. byte array in string form, for example {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}<br>

+      </td></tr></table>

   </blockquote></td></tr></table>

   

-  

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/config/cluster-interceptor.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/config/cluster-listener.html b/tomcat-uid/webapps/docs/config/cluster-listener.html
index 095fb8f..d41bedb 100644
--- a/tomcat-uid/webapps/docs/config/cluster-listener.html
+++ b/tomcat-uid/webapps/docs/config/cluster-listener.html
@@ -1,19 +1,94 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat Configuration Reference (6.0.41) - The ClusterListener object</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.77) - The ClusterListener object</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

     The Apache Tomcat Servlet/JSP Container

-  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat Configuration Reference</h1><h2>The ClusterListener object</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="sessionidgenerator.html">SessionIdGenerator</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The ClusterListener object</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Introduction">Introduction</a></li><li><a href="#org.apache.catalina.ha.session.ClusterSessionListener">org.apache.catalina.ha.session.ClusterSessionListener</a></li><li><a href="#org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener">org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li></ol></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

   <p>

-    The <code>org.apache.catalina.ha.ClusterListener</code> base class 

+    The <code>org.apache.catalina.ha.ClusterListener</code> base class

     lets you listen in on messages that are received by the <code>Cluster</code> component.

-  </p>  

+  </p>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.catalina.ha.session.ClusterSessionListener"><strong>org.apache.catalina.ha.session.ClusterSessionListener</strong></a></font></td></tr><tr><td><blockquote>

   <p>

-   When using the DeltaManager, the messages are received by the Cluster object and are propagated to the 

+   When using the DeltaManager, the messages are received by the Cluster object and are propagated to the

    to the manager through this listener.

    </p>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"><strong>org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener</strong></a></font></td></tr><tr><td><blockquote>

@@ -27,7 +102,7 @@
 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Attributes"><!--()--></a><a name="Common_Attributes"><strong>Common Attributes</strong></a></font></td></tr><tr><td><blockquote>

 

-  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>className</code></strong></td><td align="left" valign="center">

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

 

     </td></tr></table>

 

@@ -35,6 +110,31 @@
   </blockquote></td></tr></table>

 

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/config/cluster-listener.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/config/cluster-manager.html b/tomcat-uid/webapps/docs/config/cluster-manager.html
index 2e945a8..5dcfa2f 100644
--- a/tomcat-uid/webapps/docs/config/cluster-manager.html
+++ b/tomcat-uid/webapps/docs/config/cluster-manager.html
@@ -1,12 +1,87 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat Configuration Reference (6.0.41) - The ClusterManager object</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.77) - The ClusterManager object</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

     The Apache Tomcat Servlet/JSP Container

-  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat Configuration Reference</h1><h2>The ClusterManager object</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

-<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#The_<Manager>">The &lt;Manager&gt;</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#org.apache.catalina.ha.session.DeltaManager_Attributes">org.apache.catalina.ha.session.DeltaManager Attributes</a></li><li><a href="#org.apache.catalina.ha.session.BackupManager_Attributes">org.apache.catalina.ha.session.BackupManager Attributes</a></li></ol></li></ul>

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="sessionidgenerator.html">SessionIdGenerator</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The ClusterManager object</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#The_<Manager>">The &lt;Manager&gt;</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#org.apache.catalina.ha.session.DeltaManager_Attributes">org.apache.catalina.ha.session.DeltaManager Attributes</a></li><li><a href="#org.apache.catalina.ha.session.BackupManager_Attributes">org.apache.catalina.ha.session.BackupManager Attributes</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

-  <p>A cluster manager is an extension to Tomcat's session manager interface, 

+  <p>A cluster manager is an extension to Tomcat's session manager interface,

   <code>org.apache.catalina.Manager</code>.

   A cluster manager must implement the

   <code>org.apache.catalina.ha.ClusterManager</code> and is solely  responsible

@@ -29,84 +104,246 @@
   implementation on a per web application basis, by putting the

   <code>&lt;Manager&gt;</code> inside the <code>&lt;Context&gt;</code> element

   either in the <code><a href="context.html">context.xml</a></code> file or the

-  <code><a href="index.html">server.xml</a></code> file.</p> 

+  <code><a href="index.html">server.xml</a></code> file.</p>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Attributes"><!--()--></a><a name="Common_Attributes"><strong>Common Attributes</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>className</code></strong></td><td align="left" valign="center">

-      </td></tr><tr><td align="left" valign="center"><code>name</code></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">name</code></td><td align="left" valign="center">

         <b>The name of this cluster manager, the name is used to identify a

         session manager on a node. The name might get modified by the

         <code>Cluster</code> element to make it unique in the container.</b>

-      </td></tr><tr><td align="left" valign="center"><code>defaultMode</code></td><td align="left" valign="center">

-        <b>Deprecated since 6.0.0</b>

-      </td></tr><tr><td align="left" valign="center"><code>notifyListenersOnReplication</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">notifyListenersOnReplication</code></td><td align="left" valign="center">

         Set to <code>true</code> if you wish to have session listeners notified

         when session attributes are being replicated or removed across Tomcat

         nodes in the cluster.

-      </td></tr><tr><td align="left" valign="center"><code>expireSessionsOnShutdown</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">expireSessionsOnShutdown</code></td><td align="left" valign="center">

         When a web application is being shutdown, Tomcat issues an expire call

         to each session to notify all the listeners. If you wish for all

         sessions to expire on all nodes when a shutdown occurs on one node, set

         this value to <code>true</code>. Default value is <code>false</code>.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxInactiveInterval</code></td><td align="left" valign="center">

+        <p><strong>Deprecated</strong>: This should be configured via the

+        Context.</p>

+        <p>The initial maximum time interval, in seconds,

+        between client requests before a session is invalidated. A negative value

+        will result in sessions never timing out. If the attribute is not provided,

+        a default of 1800 seconds (30 minutes) is used.</p>

+        <p>This attribute provides the initial value whenever a

+        new session is created, but the interval may be dynamically

+        varied by a servlet via the

+        <code>setMaxInactiveInterval</code> method of the <code>HttpSession</code> object.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sessionIdLength</code></td><td align="left" valign="center">

+       <p>The length of session ids created by this Manager, measured in bytes,

+        excluding subsequent conversion to a hexadecimal string and

+        excluding any JVM route information used for load balancing.

+        The default is 16. You should set the length on a nested

+        <strong>SessionIdGenerator</strong> element instead.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">processExpiresFrequency</code></td><td align="left" valign="center">

+        <p>Frequency of the session expiration, and related manager operations.

+        Manager operations will be done once for the specified amount of

+        backgroundProcess calls (i.e., the lower the amount, the more often the

+        checks will occur). The minimum value is 1, and the default value is 6.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomClass</code></td><td align="left" valign="center">

+        <p>Name of the Java class that extends

+        <code>java.security.SecureRandom</code> to use to generate session IDs.

+        If not specified, the default value is

+        <code>java.security.SecureRandom</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomProvider</code></td><td align="left" valign="center">

+        <p>Name of the provider to use to create the

+        <code>java.security.SecureRandom</code> instances that generate session

+        IDs. If an invalid algorithm and/or provider is specified, the Manager

+        will use the platform default provider and the default algorithm. If not

+        specified, the platform default provider will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomAlgorithm</code></td><td align="left" valign="center">

+        <p>Name of the algorithm to use to create the

+        <code>java.security.SecureRandom</code> instances that generate session

+        IDs. If an invalid algorithm and/or provider is specified, the Manager

+        will use the platform default provider and the default algorithm. If not

+        specified, the default algorithm of SHA1PRNG will be used. If the

+        default algorithm is not supported, the platform default will be used.

+        To specify that the platform default should be used, do not set the

+        secureRandomProvider attribute and set this attribute to the empty

+        string.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">recordAllActions</code></td><td align="left" valign="center">

+        <p>Flag whether send all actions for session across Tomcat cluster

+        nodes. If set to false, if already done something to the same attribute,

+        make sure don't send multiple actions across Tomcat cluster nodes.

+        In that case, sends only the actions that have been added at last.

+        Default is <code>false</code>.</p>

       </td></tr></table>

-  </blockquote></td></tr></table> 

+  </blockquote></td></tr></table>

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.catalina.ha.session.DeltaManager Attributes"><!--()--></a><a name="org.apache.catalina.ha.session.DeltaManager_Attributes"><strong>org.apache.catalina.ha.session.DeltaManager Attributes</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>domainReplication</code></td><td align="left" valign="center">

-        <b>Deprecated since 6.0.0</b><br>

-        If you wish sessions to be replicated only to members that have the 

-        same logical domain set, use 

-        <code><a href="cluster-interceptor.html">DomainFilterInterceptor </a></code>.

-      </td></tr><tr><td align="left" valign="center"><code>expireSessionsOnShutdown</code></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">expireSessionsOnShutdown</code></td><td align="left" valign="center">

         When a web application is being shutdown, Tomcat issues an expire call

         to each session to notify all the listeners. If you wish for all

         sessions to expire on all nodes when a shutdown occurs on one node, set

         this value to <code>true</code>.

         Default value is <code>false</code>.

-      </td></tr><tr><td align="left" valign="center"><code>maxActiveSessions</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxActiveSessions</code></td><td align="left" valign="center">

         The maximum number of active sessions that will be created by this

         Manager, or -1 (the default) for no limit. For this manager, all

         sessions are counted as active sessions irrespective if whether or not

         the current node is the primary node for the session.

-      </td></tr><tr><td align="left" valign="center"><code>notifySessionListenersOnReplication</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">notifySessionListenersOnReplication</code></td><td align="left" valign="center">

         Set to <code>true</code> if you wish to have session listeners notified

         when sessions are created and expired across Tomcat nodes in the

         cluster.

-      </td></tr><tr><td align="left" valign="center"><code>notifyContainerListenersOnReplication</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">notifyContainerListenersOnReplication</code></td><td align="left" valign="center">

         Set to <code>true</code> if you wish to have container listeners notified

         across Tomcat nodes in the cluster.

-      </td></tr><tr><td align="left" valign="center"><code>stateTransferTimeout</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">stateTransferTimeout</code></td><td align="left" valign="center">

         The time in seconds to wait for a session state transfer to complete

         from another node when a node is starting up.

         Default value is <code>60</code> seconds.

-      </td></tr><tr><td align="left" valign="center"><code>sessionAttributeFilter</code></td><td align="left" valign="center">

-        A regular expression used to filter, which session attributes will

-        be replicated. An attribute will only be replicated, if its name

-        matches this pattern. If the pattern is not set (default), all

-        attributes are eligible for replication. As an example, the value

-        <code>^(userName|sessionHistory)$</code> will only replicate the two

-        session attributes named <code>userName</code> and

-        <code>sessionHistory</code>.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sendAllSessions</code></td><td align="left" valign="center">

+        Flag whether send sessions as split blocks.

+        If set to <code>true</code>, send all sessions as one big block.

+        If set to <code>false</code>, send sessions as split blocks.

+        Default value is <code>true</code>.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sendAllSessionsSize</code></td><td align="left" valign="center">

+        The number of sessions in a session block message. This value is

+        effective only when <code>sendAllSessions</code> is <code>false</code>.

+        Default is <code>1000</code>.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sendAllSessionsWaitTime</code></td><td align="left" valign="center">

+        Wait time between sending of session block messages. This value is

+        effective only when <code>sendAllSessions</code> is <code>false</code>.

+        Default is <code>2000</code> milliseconds.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sessionAttributeNameFilter</code></td><td align="left" valign="center">

+        <p>A regular expression used to filter which session attributes will be

+        replicated. An attribute will only be replicated if its name matches

+        this pattern. If the pattern is zero length or <code>null</code>, all

+        attributes are eligible for replication. The pattern is anchored so the

+        session attribute name must fully match the pattern. As an example, the

+        value <code>(userName|sessionHistory)</code> will only replicate the

+        two session attributes named <code>userName</code> and

+        <code>sessionHistory</code>. If not specified, the default value of

+        <code>null</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sessionAttributeValueClassNameFilter</code></td><td align="left" valign="center">

+        <p>A regular expression used to filter which session attributes will be

+        replicated. An attribute will only be replicated if the implementation

+        class name of the value matches this pattern. If the pattern is zero

+        length or <code>null</code>, all attributes are eligible for

+        replication. The pattern is anchored so the fully qualified class name

+        must fully match the pattern. If not specified, the default value of

+        <code>null</code> will be used unless a <code>SecurityManager</code> is

+        enabled in which case the default will be

+        <code>java\\.lang\\.(?:Boolean|Integer|Long|Number|String)</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">stateTimestampDrop</code></td><td align="left" valign="center">

+        When this node sends a <code>GET_ALL_SESSIONS</code> message to other

+        node, all session messages that are received as a response are queued.

+        If this attribute is set to <code>true</code>, the received session

+        messages (except any <code>GET_ALL_SESSIONS</code> sent by other nodes)

+        are filtered by their timestamp. A message is dropped if it is not a

+        <code>GET_ALL_SESSIONS</code> message and its timestamp is earlier than

+        the timestamp of our <code>GET_ALL_SESSIONS</code> message.

+        If set to <code>false</code>, all queued session messages are handled.

+        Default is <code>true</code>.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">warnOnSessionAttributeFilterFailure</code></td><td align="left" valign="center">

+        <p>If <strong>sessionAttributeNameFilter</strong> or

+        <strong>sessionAttributeValueClassNameFilter</strong> blocks an

+        attribute, should this be logged at <code>WARN</code> level? If

+        <code>WARN</code> level logging is disabled then it will be logged at

+        <code>DEBUG</code>. The default value of this attribute is

+        <code>false</code> unless a <code>SecurityManager</code> is enabled in

+        which case the default will be <code>true</code>.</p>

       </td></tr></table>

   </blockquote></td></tr></table>

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.catalina.ha.session.BackupManager Attributes"><!--()--></a><a name="org.apache.catalina.ha.session.BackupManager_Attributes"><strong>org.apache.catalina.ha.session.BackupManager Attributes</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>mapSendOptions</code></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">mapSendOptions</code></td><td align="left" valign="center">

         The backup manager uses a replicated map, this map is sending and

         receiving messages. You can setup the flag for how this map is sending

         messages, the default value is <code>6</code>(synchronous).<br>

         Note that if you use asynchronous messaging it is possible for update

         messages for a session to be processed by the receiving node in a

         different order to the order in which they were sent.

-      </td></tr><tr><td align="left" valign="center"><code>maxActiveSessions</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxActiveSessions</code></td><td align="left" valign="center">

         The maximum number of active sessions that will be created by this

         Manager, or -1 (the default) for no limit. For this manager, only

         sessions where the current node is the primary node for the session are

         considered active sessions.

-      </td></tr><tr><td align="left" valign="center"><code>rpcTimeout</code></td><td align="left" valign="center">

-        Timeout for RPC message used for broadcast and transfer state from 

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">rpcTimeout</code></td><td align="left" valign="center">

+        Timeout for RPC message used for broadcast and transfer state from

         another map.

         Default value is <code>15000</code> milliseconds.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sessionAttributeNameFilter</code></td><td align="left" valign="center">

+        <p>A regular expression used to filter which session attributes will be

+        replicated. An attribute will only be replicated if its name matches

+        this pattern. If the pattern is zero length or <code>null</code>, all

+        attributes are eligible for replication. The pattern is anchored so the

+        session attribute name must fully match the pattern. As an example, the

+        value <code>(userName|sessionHistory)</code> will only replicate the

+        two session attributes named <code>userName</code> and

+        <code>sessionHistory</code>. If not specified, the default value of

+        <code>null</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sessionAttributeValueClassNameFilter</code></td><td align="left" valign="center">

+        <p>A regular expression used to filter which session attributes will be

+        replicated. An attribute will only be replicated if the implementation

+        class name of the value matches this pattern. If the pattern is zero

+        length or <code>null</code>, all attributes are eligible for

+        replication. The pattern is anchored so the fully qualified class name

+        must fully match the pattern. If not specified, the default value of

+        <code>null</code> will be used unless a <code>SecurityManager</code> is

+        enabled in which case the default will be

+        <code>java\\.lang\\.(?:Boolean|Integer|Long|Number|String)</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">terminateOnStartFailure</code></td><td align="left" valign="center">

+        Set to true if you wish to terminate replication map when replication

+        map fails to start. If replication map is terminated, associated context

+        will fail to start. If you set this attribute to false, replication map

+        does not end. It will try to join the map membership in the heartbeat.

+        Default value is <code>false</code> .

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">warnOnSessionAttributeFilterFailure</code></td><td align="left" valign="center">

+        <p>If <strong>sessionAttributeNameFilter</strong> or

+        <strong>sessionAttributeValueClassNameFilter</strong> blocks an

+        attribute, should this be logged at <code>WARN</code> level? If

+        <code>WARN</code> level logging is disabled then it will be logged at

+        <code>DEBUG</code>. The default value of this attribute is

+        <code>false</code> unless a <code>SecurityManager</code> is enabled in

+        which case the default will be <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">accessTimeout</code></td><td align="left" valign="center">

+        The timeout for a ping message. If a remote map does not respond within

+        this timeout period, its regarded as disappeared.

+        Default value is <code>5000</code> milliseconds.

       </td></tr></table>

   </blockquote></td></tr></table>

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Nested Components"><!--()--></a><a name="Nested_Components"><strong>Nested Components</strong></a></font></td></tr><tr><td><blockquote>

+  <h3>All Manager Implementations</h3>

+  <p>All Manager implementations allow nesting of a

+  <strong>&lt;SessionIdGenerator&gt;</strong> element. It defines

+  the behavior of session id generation.  All implementations

+  of the <a href="sessionidgenerator.html">SessionIdGenerator</a> allow the

+  following attributes:

+  </p>

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">sessionIdLength</code></td><td align="left" valign="center">

+      <p>The length of the session ID may be changed with the

+      <strong>sessionIdLength</strong> attribute.

+      </p>

+    </td></tr></table>

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/config/cluster-manager.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/config/cluster-membership.html b/tomcat-uid/webapps/docs/config/cluster-membership.html
index 38afba2..58bc373 100644
--- a/tomcat-uid/webapps/docs/config/cluster-membership.html
+++ b/tomcat-uid/webapps/docs/config/cluster-membership.html
@@ -1,9 +1,84 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat Configuration Reference (6.0.41) - The Cluster Membership object</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.77) - The Cluster Membership object</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

     The Apache Tomcat Servlet/JSP Container

-  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat Configuration Reference</h1><h2>The Cluster Membership object</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="sessionidgenerator.html">SessionIdGenerator</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Cluster Membership object</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Default_Implementation">Default Implementation</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Multicast_Attributes">Multicast Attributes</a></li></ol></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

   <p>

@@ -24,90 +99,121 @@
 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Multicast Attributes"><!--()--></a><a name="Multicast_Attributes"><strong>Multicast Attributes</strong></a></font></td></tr><tr><td><blockquote>

 

-  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>className</code></strong></td><td align="left" valign="center">

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

       <p>

       The default value is <code>org.apache.catalina.tribes.membership.McastService</code>

       and is currently the only implementation.

       This implementation uses multicast heartbeats for member discovery.

       </p>

-    </td></tr><tr><td align="left" valign="center"><code>address</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">address</code></td><td align="left" valign="center">

       <p>

       The multicast address that the membership will broadcast its presence and listen

       for other heartbeats on. The default value is <code>228.0.0.4</code>

       Make sure your network is enabled for multicast traffic.<br>

-      The multicast address, in conjunction with the <code>port</code> is what 

-      creates a cluster group. To divide up your farm into several different group, or to 

+      The multicast address, in conjunction with the <code>port</code> is what

+      creates a cluster group. To divide up your farm into several different group, or to

       split up QA from production, change the <code>port</code> or the <code>address</code>

       <br>Previously known as mcastAddr.

       </p>

-    </td></tr><tr><td align="left" valign="center"><code>port</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">port</code></td><td align="left" valign="center">

       <p>

       The multicast port, the default value is <code>45564</code><br>

-      The multicast port, in conjunction with the <code>address</code> is what 

-      creates a cluster group. To divide up your farm into several different group, or to 

+      The multicast port, in conjunction with the <code>address</code> is what

+      creates a cluster group. To divide up your farm into several different group, or to

       split up QA from production, change the <code>port</code> or the <code>address</code>

       </p>

-    </td></tr><tr><td align="left" valign="center"><code>frequency</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">frequency</code></td><td align="left" valign="center">

       <p>

       The frequency in milliseconds in which heartbeats are sent out. The default value is <code>500</code> ms.<br>

       In most cases the default value is sufficient. Changing this value, simply changes the interval in between heartbeats.

       </p>

-    </td></tr><tr><td align="left" valign="center"><code>dropTime</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">dropTime</code></td><td align="left" valign="center">

       <p>

-      The membership component will time out members and notify the Channel if a member fails to send a heartbeat within 

-      a give time. The default value is <code>3000</code> ms. This means, that if a heartbeat is not received from a 

+      The membership component will time out members and notify the Channel if a member fails to send a heartbeat within

+      a give time. The default value is <code>3000</code> ms. This means, that if a heartbeat is not received from a

       member in that timeframe, the membership component will notify the cluster of this.<br>

       On a high latency network you may wish to increase this value, to protect against false positives.<br>

-      Apache Tribes also provides a <a href="cluster-interceptor.html#tcpfailuredetector"><code>TcpFailureDetector</code></a> that will

+      Apache Tribes also provides a <a href="cluster-interceptor.html#org.apache.catalina.tribes.group.interceptors.TcpFailureDetector_Attributes"><code>TcpFailureDetector</code></a> that will

       verify a timeout using a TCP connection when a heartbeat timeout has occurred. This protects against false positives.

       </p>

-    </td></tr><tr><td align="left" valign="center"><code>bind</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">bind</code></td><td align="left" valign="center">

       <p>

       Use this attribute if you wish to bind your multicast traffic to a specific network interface.

       By default, or when this attribute is unset, it tries to bind to <code>0.0.0.0</code> and sometimes on multihomed hosts

       this becomes a problem.

       </p>

-    </td></tr><tr><td align="left" valign="center"><code>ttl</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">ttl</code></td><td align="left" valign="center">

       <p>

       The time-to-live setting for the multicast heartbeats.

       This setting should be a value between 0 and 255. The default value is VM implementation specific.

       </p>

-    </td></tr><tr><td align="left" valign="center"><code>domain</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">domain</code></td><td align="left" valign="center">

       <p>

       Apache Tribes has the ability to logically group members into domains, by using this domain attribute.

       The <code>org.apache.catalina.tribes.Member.getDomain()</code> method returns the value specified here.

       </p>

-    </td></tr><tr><td align="left" valign="center"><code>soTimeout</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">soTimeout</code></td><td align="left" valign="center">

       <p>

       The sending and receiving of heartbeats is done on a single thread, hence to avoid blocking this thread forever,

       you can control the <code>SO_TIMEOUT</code> value on this socket.<br>

       If a value smaller or equal to 0 is presented, the code will default this value to frequency

       </p>

-    </td></tr><tr><td align="left" valign="center"><code>recoveryEnabled</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">recoveryEnabled</code></td><td align="left" valign="center">

       <p>

       In case of a network failure, Java multicast socket don't transparently fail over, instead the socket will continuously

       throw IOException upon each receive request. When recoveryEnabled is set to true, this will close the multicast socket

       and open a new socket with the same properties as defined above.<br>

       The default is <code>true</code>. <br>

       </p>

-    </td></tr><tr><td align="left" valign="center"><code>recoveryCounter</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">recoveryCounter</code></td><td align="left" valign="center">

       <p>

-      When <code>recoveryEnabled==true</code> this value indicates how many times we will try recovery.

-      The default is <code>10</code>. <br>

+      When <code>recoveryEnabled==true</code> this value indicates how many

+      times an error has to occur before recovery is attempted. The default is

+      <code>10</code>. <br>

       </p>

-    </td></tr><tr><td align="left" valign="center"><code>recoverySleepTime</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">recoverySleepTime</code></td><td align="left" valign="center">

       <p>

       When <code>recoveryEnabled==true</code> this value indicates how long time (in milliseconds)

-      the system will sleep in between recovery attempts, until we either recovered successfully or we have reached the

-      recoveryCounter limit.

+      the system will sleep in between recovery attempts, until it recovers successfully.

       The default is <code>5000</code> (5 seconds). <br>

       </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">localLoopbackDisabled</code></td><td align="left" valign="center">

+      <p>

+      Membership uses multicast, it will call <code>java.net.MulticastSocket.setLoopbackMode(localLoopbackDisabled)</code>.

+      When <code>localLoopbackDisabled==true</code> multicast messages will not reach other nodes on the same local machine.

+      The default is <code>false</code>. <br>

+      </p>

     </td></tr></table>

 

 

   </blockquote></td></tr></table>

 

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/config/cluster-membership.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/config/cluster-receiver.html b/tomcat-uid/webapps/docs/config/cluster-receiver.html
index 608faeb..e8a6e8a 100644
--- a/tomcat-uid/webapps/docs/config/cluster-receiver.html
+++ b/tomcat-uid/webapps/docs/config/cluster-receiver.html
@@ -1,15 +1,90 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat Configuration Reference (6.0.41) - The Cluster Receiver object</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.77) - The Cluster Receiver object</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

     The Apache Tomcat Servlet/JSP Container

-  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat Configuration Reference</h1><h2>The Cluster Receiver object</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="sessionidgenerator.html">SessionIdGenerator</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Cluster Receiver object</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Blocking_vs_Non-Blocking_Receiver">Blocking vs Non-Blocking Receiver</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#NioReceiver">NioReceiver</a></li><li><a href="#BioReceiver">BioReceiver</a></li></ol></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

   <p>

   The receiver component is responsible for receiving cluster messages.

   As you might notice through the configuration, is that the receiving of messages

-  and sending of messages are two different components, this is different from many other 

+  and sending of messages are two different components, this is different from many other

   frameworks, but there is a good reason for it, to decouple the logic for how messages are sent from

   how messages are received.<br>

   The receiver is very much like the Tomcat Connector, its the base of the thread pool

@@ -18,7 +93,7 @@
   </p>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Blocking vs Non-Blocking Receiver"><!--()--></a><a name="Blocking_vs_Non-Blocking_Receiver"><strong>Blocking vs Non-Blocking Receiver</strong></a></font></td></tr><tr><td><blockquote>

   <p>

-  The receiver supports both a non blocking, <code>org.apache.catalina.tribes.transport.nio.NioReceiver</code>, and a 

+  The receiver supports both a non blocking, <code>org.apache.catalina.tribes.transport.nio.NioReceiver</code>, and a

   blocking, <code>org.apache.catalina.tribes.transport.bio.BioReceiver</code>. It is preferred to use the non blocking receiver

   to be able to grow your cluster without running into thread starvation.<br>

   Using the non blocking receiver allows you to with a very limited thread count to serve a large number of messages.

@@ -27,73 +102,78 @@
   </p>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Attributes"><!--()--></a><a name="Common_Attributes"><strong>Common Attributes</strong></a></font></td></tr><tr><td><blockquote>

-  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>className</code></strong></td><td align="left" valign="center">

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

       The implementation of the receiver component. Two implementations available,

-      <code>org.apache.catalina.tribes.transport.nio.NioReceiver</code> and 

+      <code>org.apache.catalina.tribes.transport.nio.NioReceiver</code> and

       <code>org.apache.catalina.tribes.transport.bio.BioReceiver</code>.<br>

-      The <code>org.apache.catalina.tribes.transport.nio.NioReceiver</code> is the 

+      The <code>org.apache.catalina.tribes.transport.nio.NioReceiver</code> is the

       preferred implementation

-    </td></tr><tr><td align="left" valign="center"><code>address</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">address</code></td><td align="left" valign="center">

       The address (network interface) to listen for incoming traffic.

       Same as the bind address. The default value is <code>auto</code> and translates to

       <code>java.net.InetAddress.getLocalHost().getHostAddress()</code>.

-    </td></tr><tr><td align="left" valign="center"><code>direct</code></td><td align="left" valign="center">

-      Possible values are <code>true</code> or <code>false</code>. 

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">direct</code></td><td align="left" valign="center">

+      Possible values are <code>true</code> or <code>false</code>.

       Set to true if you want the receiver to use direct bytebuffers when reading data

       from the sockets.

-    </td></tr><tr><td align="left" valign="center"><code>port</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">port</code></td><td align="left" valign="center">

       The listen port for incoming data. The default value is <code>4000</code>.

-      To avoid port conflicts the receiver will automatically bind to a free port within the range of 

-      <code> port &lt;= bindPort &lt;= port+autoBind</code>

-      So for example, if port is 4000, and autoBind is set to 10, then the receiver will open up 

-      a server socket on the first available port in the range 4000-4100.

-    </td></tr><tr><td align="left" valign="center"><code>autoBind</code></td><td align="left" valign="center">

+      To avoid port conflicts the receiver will automatically bind to a free port within the range of

+      <code> port &lt;= bindPort &lt; port+autoBind</code>

+      So for example, if port is 4000, and autoBind is set to 10, then the receiver will open up

+      a server socket on the first available port in the range 4000-4009.

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">autoBind</code></td><td align="left" valign="center">

       Default value is <code>100</code>.

-      Use this value if you wish to automatically avoid port conflicts the cluster receiver will try to open a 

+      Use this value if you wish to automatically avoid port conflicts the cluster receiver will try to open a

       server socket on the <code>port</code> attribute port, and then work up <code>autoBind</code> number of times.

-    </td></tr><tr><td align="left" valign="center"><code>securePort</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">securePort</code></td><td align="left" valign="center">

       The secure listen port. This port is SSL enabled. If this attribute is omitted no SSL port is opened up.

       There default value is unset, meaning there is no SSL socket available.

-    </td></tr><tr><td align="left" valign="center"><code>selectorTimeout</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">udpPort</code></td><td align="left" valign="center">

+      The UDP listen port. If this attribute is omitted no UDP port is opened up.

+      There default value is unset, meaning there is no UDP listener available.

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">selectorTimeout</code></td><td align="left" valign="center">

       The value in milliseconds for the polling timeout in the <code>NioReceiver</code>. On older versions of the JDK

       there have been bugs, that should all now be cleared out where the selector never woke up.

       The default value is a very high <code>5000</code> milliseconds.

-    </td></tr><tr><td align="left" valign="center"><code>maxThreads</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxThreads</code></td><td align="left" valign="center">

       The maximum number of threads in the receiver thread pool. The default value is <code>6</code>

-      Adjust this value relative to the number of nodes in the cluster, the number of messages being exchanged and 

-      the hardware you are running on. A higher value doesn't mean more efficiency, tune this value according to your 

+      Adjust this value relative to the number of nodes in the cluster, the number of messages being exchanged and

+      the hardware you are running on. A higher value doesn't mean more efficiency, tune this value according to your

       own test results.

-    </td></tr><tr><td align="left" valign="center"><code>minThreads</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">minThreads</code></td><td align="left" valign="center">

       Minimum number of threads to be created when the receiver is started up. Default value is <code>6</code>

-    </td></tr><tr><td align="left" valign="center"><code>ooBInline</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">ooBInline</code></td><td align="left" valign="center">

       Boolean value for the socket OOBINLINE option. Possible values are <code>true</code> or <code>false</code>.

-    </td></tr><tr><td align="left" valign="center"><code>rxBufSize</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">rxBufSize</code></td><td align="left" valign="center">

       The receiver buffer size on the receiving sockets. Value is in bytes, the default value is <code>43800</code> bytes.

-    </td></tr><tr><td align="left" valign="center"><code>txBufSize</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">txBufSize</code></td><td align="left" valign="center">

       The sending buffer size on the receiving sockets. Value is in bytes, the default value is <code>25188</code> bytes.

-    </td></tr><tr><td align="left" valign="center"><code>soKeepAlive</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">udpRxBufSize</code></td><td align="left" valign="center">

+        The receive buffer size on the datagram socket.

+        Default value is <code>25188</code> bytes.

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">udpTxBufSize</code></td><td align="left" valign="center">

+       The send buffer size on the datagram socket.

+       Default value is <code>43800</code> bytes.

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">soKeepAlive</code></td><td align="left" valign="center">

       Boolean value for the socket SO_KEEPALIVE option. Possible values are <code>true</code> or <code>false</code>.

-    </td></tr><tr><td align="left" valign="center"><code>soLingerOn</code></td><td align="left" valign="center">

-      Boolean value to determine whether to use the SO_LINGER socket option. 

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">soLingerOn</code></td><td align="left" valign="center">

+      Boolean value to determine whether to use the SO_LINGER socket option.

       Possible values are <code>true</code> or <code>false</code>. Default value is <code>true</code>.

-    </td></tr><tr><td align="left" valign="center"><code>soLingerTime</code></td><td align="left" valign="center">

-      Sets the SO_LINGER socket option time value. The value is in seconds. 

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">soLingerTime</code></td><td align="left" valign="center">

+      Sets the SO_LINGER socket option time value. The value is in seconds.

       The default value is <code>3</code> seconds.

-    </td></tr><tr><td align="left" valign="center"><code>soReuseAddress</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">soReuseAddress</code></td><td align="left" valign="center">

      Boolean value for the socket SO_REUSEADDR option. Possible values are <code>true</code> or <code>false</code>.

-    </td></tr><tr><td align="left" valign="center"><code>soTrafficClass</code></td><td align="left" valign="center">

-     Sets the traffic class level for the socket, the value is between 0 and 255.

-     Different values are defined in <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/net/Socket.html#setTrafficClass(int)">

-     java.net.Socket#setTrafficClass(int)</a>.

-    </td></tr><tr><td align="left" valign="center"><code>tcpNoDelay</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">tcpNoDelay</code></td><td align="left" valign="center">

      Boolean value for the socket TCP_NODELAY option. Possible values are <code>true</code> or <code>false</code>.

      The default value is <code>true</code>

-    </td></tr><tr><td align="left" valign="center"><code>timeout</code></td><td align="left" valign="center">

-     Sets the SO_TIMEOUT option on the socket. The value is in milliseconds and the default value is <code>3000</code> 

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">timeout</code></td><td align="left" valign="center">

+     Sets the SO_TIMEOUT option on the socket. The value is in milliseconds and the default value is <code>3000</code>

      milliseconds.

-    </td></tr><tr><td align="left" valign="center"><code>useBufferPool</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">useBufferPool</code></td><td align="left" valign="center">

      Boolean value whether to use a shared buffer pool of cached <code>org.apache.catalina.tribes.io.XByteBuffer</code>

-     objects. If set to true, the XByteBuffer that is used to pass a message up the channel, will be recycled at the end 

+     objects. If set to true, the XByteBuffer that is used to pass a message up the channel, will be recycled at the end

      of the requests. This means that interceptors in the channel must not maintain a reference to the object

      after the <code>org.apache.catalina.tribes.ChannelInterceptor#messageReceived</code> method has exited.

     </td></tr></table>

@@ -103,6 +183,31 @@
   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="BioReceiver"><strong>BioReceiver</strong></a></font></td></tr><tr><td><blockquote>

   </blockquote></td></tr></table>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/config/cluster-receiver.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/config/cluster-sender.html b/tomcat-uid/webapps/docs/config/cluster-sender.html
index a9b93ea..a501ff3 100644
--- a/tomcat-uid/webapps/docs/config/cluster-sender.html
+++ b/tomcat-uid/webapps/docs/config/cluster-sender.html
@@ -1,10 +1,85 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat Configuration Reference (6.0.41) - The Cluster Sender object</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.77) - The Cluster Sender object</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

     The Apache Tomcat Servlet/JSP Container

-  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat Configuration Reference</h1><h2>The Cluster Sender object</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

-<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Concurrent_Parallel_Delivery">Concurrent Parallel Delivery</a></li><li><a href="#Nested_Elements">Nested Elements</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Sender_Attributes">Common Sender Attributes</a></li><li><a href="#Common_Transport_Attributes">Common Transport Attributes</a></li><li><a href="#PooledParallelSender_Attributes">PooledParallelSender Attributes</a></li></ol></li></ul>

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="sessionidgenerator.html">SessionIdGenerator</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Cluster Sender object</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Concurrent_Parallel_Delivery">Concurrent Parallel Delivery</a></li><li><a href="#Nested_Elements">Nested Elements</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Sender_Attributes">Common Sender Attributes</a></li><li><a href="#Common_Transport_Attributes">Common Transport Attributes</a></li><li><a href="#Common_PooledSender_Attributes">Common PooledSender Attributes</a></li></ol></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

   <p>

   The channel sender component is responsible for delivering outgoing cluster messages over the network.

@@ -15,99 +90,134 @@
 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Concurrent Parallel Delivery"><!--()--></a><a name="Concurrent_Parallel_Delivery"><strong>Concurrent Parallel Delivery</strong></a></font></td></tr><tr><td><blockquote>

   <p>

   In the default <code>transport</code> implementation, <code>org.apache.catalina.tribes.transport.nio.PooledParallelSender</code>,

-  Apache Tribes implements what we like to call "Concurrent Parallel Delivery". 

+  Apache Tribes implements what we like to call "Concurrent Parallel Delivery".

   This means that we can send a message to more than one destination at the same time(parallel), and

-  deliver two messages to the same destination at the same time(concurrent). Combine these two and we have 

+  deliver two messages to the same destination at the same time(concurrent). Combine these two and we have

   "Concurrent Parallel Delivery".

   </p>

   <p>

   When is this useful? The simplest example we can think of is when part of your code is sending a 10MB message,

   like a war file being deployed, and you need to push through a small 10KB message, say a session being replicated,

-  you don't have to wait for the 10MB message to finish, as a separate thread will push in the small message 

+  you don't have to wait for the 10MB message to finish, as a separate thread will push in the small message

   transmission at the same time. Currently there is no interrupt, pause or priority mechanism available, but check back soon.

   </p>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Nested Elements"><!--()--></a><a name="Nested_Elements"><strong>Nested Elements</strong></a></font></td></tr><tr><td><blockquote>

  <p>

-   The nested element <code>&lt;Transport&gt;</code> is is not required, by encouraged, as this is where

+   The nested element <code>&lt;Transport&gt;</code> is not required, but encouraged, as this is where

    you would set all the socket options for the outgoing messages. Please see its attributes below.

    There are two implementations, in a similar manner to the <a href="cluster-receiver.html">receiver</a>, one is non-blocking

    based and the other is built using blocking IO. <br>

-   <code>org.apache.catalina.tribes.transport.bio.PooledMultiSender</code> is the blocking implementation and 

+   <code>org.apache.catalina.tribes.transport.bio.PooledMultiSender</code> is the blocking implementation and

    <code>org.apache.catalina.tribes.transport.nio.PooledParallelSender</code>.

    Parallel delivery is not available for the blocking implementation due to the fact that it is blocking a thread on sending data.

  </p>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Sender Attributes"><!--()--></a><a name="Common_Sender_Attributes"><strong>Common Sender Attributes</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>className</code></strong></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

         Required, only available implementation is <code>org.apache.catalina.tribes.transport.ReplicationTransmitter</code>

       </td></tr></table>

   </blockquote></td></tr></table>

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Transport Attributes"><!--()--></a><a name="Common_Transport_Attributes"><strong>Common Transport Attributes</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>className</code></strong></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

         Required, an implementation of the <code>org.apache.catalina.tribes.transport.MultiPointSender</code>.<br>

         Non-blocking implementation is <code>org.apache.catalina.tribes.transport.nio.PooledParallelSender</code><br>

         Blocking implementation is <code>org.apache.catalina.tribes.transport.bio.PooledMultiSender</code>

-      </td></tr><tr><td align="left" valign="center"><code>rxBufSize</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">rxBufSize</code></td><td align="left" valign="center">

         The receive buffer size on the socket.

         Default value is <code>25188</code> bytes.

-      </td></tr><tr><td align="left" valign="center"><code>txBufSize</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">txBufSize</code></td><td align="left" valign="center">

        The send buffer size on the socket.

        Default value is <code>43800</code> bytes.

-      </td></tr><tr><td align="left" valign="center"><code>directBuffer</code></td><td align="left" valign="center">

-       Possible values are <code>true</code> or <code>false</code>. 

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">udpRxBufSize</code></td><td align="left" valign="center">

+        The receive buffer size on the datagram socket.

+        Default value is <code>25188</code> bytes.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">udpTxBufSize</code></td><td align="left" valign="center">

+       The send buffer size on the datagram socket.

+       Default value is <code>43800</code> bytes.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">directBuffer</code></td><td align="left" valign="center">

+       Possible values are <code>true</code> or <code>false</code>.

        Set to true if you want the receiver to use direct bytebuffers when writing data

        to the sockets. Default value is <code>false</code>

-      </td></tr><tr><td align="left" valign="center"><code>keepAliveCount</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">keepAliveCount</code></td><td align="left" valign="center">

        The number of requests that can go through the socket before the socket is closed, and reopened

        for the next request. The default value is <code>-1</code>, which is unlimited.

-      </td></tr><tr><td align="left" valign="center"><code>keepAliveTime</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">keepAliveTime</code></td><td align="left" valign="center">

        The number of milliseconds a connection is kept open after its been opened.

        The default value is <code>-1</code>, which is unlimited.

-      </td></tr><tr><td align="left" valign="center"><code>timeout</code></td><td align="left" valign="center">

-        Sets the SO_TIMEOUT option on the socket. The value is in milliseconds and the default value is <code>3000</code> 

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">timeout</code></td><td align="left" valign="center">

+        Sets the SO_TIMEOUT option on the socket. The value is in milliseconds and the default value is <code>3000</code>

         milliseconds.(3 seconds) This timeout starts when a message send attempt is starting, until the transfer has been completed.

         For the NIO sockets, this will mean, that the caller can guarantee that we will not attempt sending the message

         longer than this timeout value. For the blocking IO implementation, this translated directly to the soTimeout.<br>

         A timeout will not spawn a retry attempt, in order to guarantee the return of the application thread.

-      </td></tr><tr><td align="left" valign="center"><code>maxRetryAttempts</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxRetryAttempts</code></td><td align="left" valign="center">

         How many times do we retry a failed message, that received a IOException at the socket level.

-        The default value is <code>1</code>, meaning we will retry a message that has failed once. 

-        In other words, we will attempt a message send no more than twice. One is the original send, and one is the 

+        The default value is <code>1</code>, meaning we will retry a message that has failed once.

+        In other words, we will attempt a message send no more than twice. One is the original send, and one is the

         <code>maxRetryAttempts</code>.

-      </td></tr><tr><td align="left" valign="center"><code>ooBInline</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">ooBInline</code></td><td align="left" valign="center">

         Boolean value for the socket OOBINLINE option. Possible values are <code>true</code> or <code>false</code>.

-      </td></tr><tr><td align="left" valign="center"><code>soKeepAlive</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">soKeepAlive</code></td><td align="left" valign="center">

         Boolean value for the socket SO_KEEPALIVE option. Possible values are <code>true</code> or <code>false</code>.

-      </td></tr><tr><td align="left" valign="center"><code>soLingerOn</code></td><td align="left" valign="center">

-        Boolean value to determine whether to use the SO_LINGER socket option. 

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">soLingerOn</code></td><td align="left" valign="center">

+        Boolean value to determine whether to use the SO_LINGER socket option.

         Possible values are <code>true</code> or <code>false</code>. Default value is <code>true</code>.

-      </td></tr><tr><td align="left" valign="center"><code>soLingerTime</code></td><td align="left" valign="center">

-        Sets the SO_LINGER socket option time value. The value is in seconds. 

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">soLingerTime</code></td><td align="left" valign="center">

+        Sets the SO_LINGER socket option time value. The value is in seconds.

         The default value is <code>3</code> seconds.

-      </td></tr><tr><td align="left" valign="center"><code>soReuseAddress</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">soReuseAddress</code></td><td align="left" valign="center">

        Boolean value for the socket SO_REUSEADDR option. Possible values are <code>true</code> or <code>false</code>.

-      </td></tr><tr><td align="left" valign="center"><code>soTrafficClass</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">soTrafficClass</code></td><td align="left" valign="center">

        Sets the traffic class level for the socket, the value is between 0 and 255.

        Default value is <code>int soTrafficClass = 0x04 | 0x08 | 0x010;</code>

-       Different values are defined in <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/net/Socket.html#setTrafficClass(int)">

+       Different values are defined in <a href="http://docs.oracle.com/javase/6/docs/api/java/net/Socket.html#setTrafficClass(int)">

        java.net.Socket#setTrafficClass(int)</a>.

-      </td></tr><tr><td align="left" valign="center"><code>tcpNoDelay</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">tcpNoDelay</code></td><td align="left" valign="center">

        Boolean value for the socket TCP_NODELAY option. Possible values are <code>true</code> or <code>false</code>.

        The default value is <code>true</code>

-      </td></tr><tr><td align="left" valign="center"><code>throwOnFailedAck</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">throwOnFailedAck</code></td><td align="left" valign="center">

        Boolean value, default value is <code>true</code>.

        If set to true, the sender will throw a <code>org.apache.catalina.tribes.RemoteProcessException</code>

        when we receive a negative ack from the remote member.

        Set to false, and Tribes will treat a positive ack the same way as a negative ack, that the message was received.

       </td></tr></table>

   </blockquote></td></tr></table>

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="PooledParallelSender Attributes"><!--()--></a><a name="PooledParallelSender_Attributes"><strong>PooledParallelSender Attributes</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>poolSize</code></td><td align="left" valign="center">

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common PooledSender Attributes"><!--()--></a><a name="Common_PooledSender_Attributes"><strong>Common PooledSender Attributes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">poolSize</code></td><td align="left" valign="center">

         The maximum number of concurrent connections from A to B.

         The value is based on a per-destination count.

         The default value is <code>25</code>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxWait</code></td><td align="left" valign="center">

+        The maximum number of milliseconds that the senderPool will wait when

+        there are no available senders. The default value is <code>3000</code>

+        milliseconds.(3 seconds).

       </td></tr></table>

   </blockquote></td></tr></table>

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/config/cluster-sender.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/config/cluster-valve.html b/tomcat-uid/webapps/docs/config/cluster-valve.html
index aa5c924..34aaf9d 100644
--- a/tomcat-uid/webapps/docs/config/cluster-valve.html
+++ b/tomcat-uid/webapps/docs/config/cluster-valve.html
@@ -1,10 +1,85 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat Configuration Reference (6.0.41) - The Cluster Valve object</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.77) - The Cluster Valve object</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

     The Apache Tomcat Servlet/JSP Container

-  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat Configuration Reference</h1><h2>The Cluster Valve object</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

-<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#org.apache.catalina.ha.tcp.ReplicationValve">org.apache.catalina.ha.tcp.ReplicationValve</a><ol><li><a href="#org.apache.catalina.ha.tcp.ReplicationValve/Attributes">Attributes</a></li></ol></li><li><a href="#org.apache.catalina.ha.session.JvmRouteBinderValve">org.apache.catalina.ha.session.JvmRouteBinderValve</a><ol><li><a href="#org.apache.catalina.ha.session.JvmRouteBinderValve/Attributes">Attributes</a></li></ol></li></ul>

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="sessionidgenerator.html">SessionIdGenerator</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Cluster Valve object</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#org.apache.catalina.ha.tcp.ReplicationValve">org.apache.catalina.ha.tcp.ReplicationValve</a><ol><li><a href="#org.apache.catalina.ha.tcp.ReplicationValve/Attributes">Attributes</a></li></ol></li><li><a href="#org.apache.catalina.ha.session.JvmRouteBinderValve">org.apache.catalina.ha.session.JvmRouteBinderValve</a><ol><li><a href="#org.apache.catalina.ha.session.JvmRouteBinderValve/Attributes">Attributes</a></li></ol></li><li><a href="#org.apache.catalina.ha.authenticator.ClusterSingleSignOn">org.apache.catalina.ha.authenticator.ClusterSingleSignOn</a><ol><li><a href="#org.apache.catalina.ha.authenticator.ClusterSingleSignOn/Attributes">Attributes</a></li></ol></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

   <p>

   A cluster valve is no different from any other <a href="valve.html">Tomcat <code>Valve</code></a>.

@@ -19,43 +94,123 @@
   The <code>ReplicationValve</code> will notify the cluster at the end of a HTTP request

   so that the cluster can make a decision whether there is data to be replicated or not.

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.catalina.ha.tcp.ReplicationValve/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>className</code></strong></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

         Set value to <code>org.apache.catalina.ha.tcp.ReplicationValve</code>

-      </td></tr><tr><td align="left" valign="center"><code>filter</code></td><td align="left" valign="center">

-        For known file extensions or urls, you can use a filter to 

-        notify the cluster that the session has not been modified during this 

-        request and the cluster doesn't have to probe the session managers for changes.

-        If there is a filter match, the cluster assumes there has been no session change.

-        An example filter would look like <code>filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"</code>

-        The filter uses regular expressions and each filter is delimited by a semi colon.

-        <code>Pattern#compile(java.lang.String)</code>

-      </td></tr><tr><td align="left" valign="center"><code>primaryIndicator</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">filter</code></td><td align="left" valign="center">

+        For known file extensions or urls, you can use this Valve to notify the

+        cluster that the session has not been modified during this  request and

+        the cluster doesn't have to probe the session managers for changes. If

+        the request matches this filter pattern, the cluster assumes there has

+        been no session change. An example filter would look like <code>

+        filter=".*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html|.*\.css|.*\.txt"

+        </code>. The filter is a regular expression using

+        <code>java.util.regex</code>.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">primaryIndicator</code></td><td align="left" valign="center">

         Boolean value, so to true, and the replication valve will insert a request attribute with the name

         defined by the <code>primaryIndicatorName</code> attribute.

-        The value inserted into the request attribute is either <code>Boolean.TRUE</code> or 

+        The value inserted into the request attribute is either <code>Boolean.TRUE</code> or

         <code>Boolean.FALSE</code>

-      </td></tr><tr><td align="left" valign="center"><code>primaryIndicatorName</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">primaryIndicatorName</code></td><td align="left" valign="center">

         Default value is <code>org.apache.catalina.ha.tcp.isPrimarySession</code>

         The value defined here is the name of the request attribute that contains the boolean value

         if the session is primary on this server or not.

-      </td></tr><tr><td align="left" valign="center"><code>statistics</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">statistics</code></td><td align="left" valign="center">

         Boolean value. Set to <code>true</code> if you want the valve to collect request statistics.

         Default value is <code>false</code>

       </td></tr></table>

   </blockquote></td></tr></table>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.catalina.ha.session.JvmRouteBinderValve"><strong>org.apache.catalina.ha.session.JvmRouteBinderValve</strong></a></font></td></tr><tr><td><blockquote>

-  In case of a mod_jk failover, the <code>JvmRouteBinderValve</code> will replace the 

+  In case of a mod_jk failover, the <code>JvmRouteBinderValve</code> will replace the

   <code>jvmWorker</code> attribute in the session Id, to make future requests stick to this

-  node. If you want failback capability, don't enable this valve, but if you want your failover to stick,

+  node. If you want fallback capability, don't enable this valve, but if you want your failover to stick,

   and for mod_jk not to have to keep probing the node that went down, you use this valve.

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.catalina.ha.session.JvmRouteBinderValve/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>className</code></strong></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

         <code>org.apache.catalina.ha.session.JvmRouteBinderValve</code>

-      </td></tr><tr><td align="left" valign="center"><code>enabled</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">enabled</code></td><td align="left" valign="center">

         Default value is <code>true</code>

         Runtime attribute to turn on and off turn over of the session's jvmRoute value.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sessionIdAttribute</code></td><td align="left" valign="center">

+        Old sessionid before failover is registered in request attributes with  this attribute.

+        Default attribute name is <code>org.apache.catalina.ha.session.JvmRouteOrignalSessionID</code>.

       </td></tr></table>

   </blockquote></td></tr></table>

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.catalina.ha.authenticator.ClusterSingleSignOn"><strong>org.apache.catalina.ha.authenticator.ClusterSingleSignOn</strong></a></font></td></tr><tr><td><blockquote>

+  The <code>ClusterSingleSignOn</code> supports feature of single sign on in cluster.

+  By using <code>ClusterSingleSignOn</code>, the security identity authenticated

+  by one web application is recognized by other web applications on the same virtual host,

+  and it is propagated to other nodes in the cluster.

+

+  <p>See the <a href="host.html#Single_Sign_On">Single Sign On</a> special

+    feature on the <strong>Host</strong> element for more information.</p>

+

+  <p><strong>Note: </strong>ClusterSingleSignOn can be configured at host level cluster only.

+  </p>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.catalina.ha.authenticator.ClusterSingleSignOn/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+        <p>Java class name of the implementation to use.  This MUST be set to

+        <strong>org.apache.catalina.ha.authenticator.ClusterSingleSignOn</strong>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cookieDomain</code></td><td align="left" valign="center">

+        <p>Sets the host domain to be used for sso cookies.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">mapSendOptions</code></td><td align="left" valign="center">

+        <p>The Valve uses a replicated map. You can setup the flag for how this

+        map sends messages. The default value is <code>6</code> (synchronous).

+        Note that if you use asynchronous messaging it is possible for update

+        messages to be processed by the receiving node in a different order to

+        the order in which they were sent.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">requireReauthentication</code></td><td align="left" valign="center">

+        <p>Default false. Flag to determine whether each request needs to be

+        reauthenticated to the security <strong>Realm</strong>. If "true", this

+        Valve uses cached security credentials (username and password) to

+        reauthenticate to the <strong>Realm</strong> each request associated

+        with an SSO session.  If "false", the Valve can itself authenticate

+        requests based on the presence of a valid SSO cookie, without

+        rechecking with the <strong>Realm</strong>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">rpcTimeout</code></td><td align="left" valign="center">

+        <p>The Valve uses a replicated map. This is the timeout for messages

+        that transfer state to/from the other nodes in the cluster. If not

+        specified, a default value of <code>15000</code> milliseconds is used.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">terminateOnStartFailure</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> if you wish this Valve to fail if the

+        underlying replication fails to start. If the Valve fails, then the

+        associated container will fail to start. If you set this attribute to

+        false, and the underlying replications fails to start, the Valve will

+        start and it will attempt to join the cluster and start replication as

+        part of the heartbeat process. If not specified, the default value of

+        <code>false</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">accessTimeout</code></td><td align="left" valign="center">

+        The timeout for a ping message. If a remote map does not respond within

+        this timeout period, its regarded as disappeared.

+        Default value is <code>5000</code> milliseconds.

+      </td></tr></table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/config/cluster-valve.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/config/cluster.html b/tomcat-uid/webapps/docs/config/cluster.html
index d6e0000..67e2a01 100644
--- a/tomcat-uid/webapps/docs/config/cluster.html
+++ b/tomcat-uid/webapps/docs/config/cluster.html
@@ -1,10 +1,85 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat Configuration Reference (6.0.41) - The Cluster object</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.77) - The Cluster object</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

     The Apache Tomcat Servlet/JSP Container

-  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat Configuration Reference</h1><h2>The Cluster object</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

-<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Engine_vs_Host_placement">Engine vs Host placement</a></li><li><a href="#Context_Attribute_Replication">Context Attribute Replication</a></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Deprecated_configuration_options">Deprecated configuration options</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#SimpleTcpCluster_Attributes">SimpleTcpCluster Attributes</a></li></ol></li></ul>

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="sessionidgenerator.html">SessionIdGenerator</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Cluster object</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Security">Security</a></li><li><a href="#Engine_vs_Host_placement">Engine vs Host placement</a></li><li><a href="#Context_Attribute_Replication">Context Attribute Replication</a></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Deprecated_configuration_options">Deprecated configuration options</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#SimpleTcpCluster_Attributes">SimpleTcpCluster Attributes</a></li></ol></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

   <p>

   The tomcat cluster implementation provides session replication, context attribute replication and

@@ -14,32 +89,47 @@
   The Tomcat Cluster implementation is very extensible, and hence we have exposed a myriad of options,

   making the configuration seem like a lot, but don't lose faith, instead you have a tremendous control

   over what is going on.</p>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Security"><strong>Security</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>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.</p>

+

+<p>There are many options for providing a secure, trusted network for use by a

+Tomcat cluster. These include:</p>

+<ul>

+  <li>private LAN</li>

+  <li>a Virtual Private Network (VPN)</li>

+  <li>IPSEC</li>

+</ul>

+

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Engine vs Host placement"><!--()--></a><a name="Engine_vs_Host_placement"><strong>Engine vs Host placement</strong></a></font></td></tr><tr><td><blockquote>

   <p>

    You can place the <code>&lt;Cluster&gt;</code> element inside either the <code>&lt;Engine&gt;</code>

    container or the <code>&lt;Host&gt;</code> container.<br>

    Placing it in the engine, means that you will support clustering in all virtual hosts of Tomcat,

    and share the messaging component. When you place the <code>&lt;Cluster&gt;</code> inside the <code>&lt;Engine&gt;</code>

-   element, the cluster will append the host name of each session manager to the managers name so that two contexts with 

+   element, the cluster will append the host name of each session manager to the managers name so that two contexts with

    the same name but sitting inside two different hosts will be distinguishable.

   </p>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Context Attribute Replication"><!--()--></a><a name="Context_Attribute_Replication"><strong>Context Attribute Replication</strong></a></font></td></tr><tr><td><blockquote>

   <p>To configure context attribute replication, simply do this by swapping out the context implementation

-  used for your application context.

-    <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>&lt;Context className="org.apache.catalina.ha.context.ReplicatedContext"/&gt;</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+  used for your application context.</p>

+  <div class="codeBox"><pre><code>&lt;Context className="org.apache.catalina.ha.context.ReplicatedContext"/&gt;</code></pre></div>

+  <p>

     This context extends the Tomcat <code><a href="context.html">StandardContext</a></code>

     so all the options from the <a href="context.html">base implementation</a> are valid.

   </p>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Nested Components"><!--()--></a><a name="Nested_Components"><strong>Nested Components</strong></a></font></td></tr><tr><td><blockquote>

   <p><b><a href="cluster-manager.html">Manager</a>:</b> <br>

     The session manager element identifies what kind of session manager is used in this cluster implementation.

-    This manager configuration is identical to the one you would use in a regular <code><a href="context.html#Nested%20xComponents">&lt;Context&gt;</a></code> configuration.

+    This manager configuration is identical to the one you would use in a regular <code><a href="context.html#Nested_Components">&lt;Context&gt;</a></code> configuration.

     <br>The default value is the <code>org.apache.catalina.ha.session.DeltaManager</code> that is closely coupled with

     the <code>SimpleTcpCluster</code> implementation. Other managers like the <code>org.apache.catalina.ha.session.BackupManager</code>

     are/could be loosely coupled and don't rely on the <code>SimpleTcpCluster</code> for its data replication.

   </p>

   <p><b><a href="cluster-channel.html">Channel</a>:</b> <br>

-    The Channel and its sub components are all part of the IO layer 

+    The Channel and its sub components are all part of the IO layer

     for the cluster group, and is a module in it's own that we have nick named "Tribes"

     <br>

     Any configuring and tuning of the network layer, the messaging and the membership logic

@@ -63,68 +153,80 @@
   <p>

     <b>Deprecated settings:</b> In the previous version of Tomcat you were able to control session

        manager settings using manager.&lt;property&gt;=value.

-       This has been discontinued, as the way it was written interferes with 

+       This has been discontinued, as the way it was written interferes with

        the ability to support multiple different manager classes under one cluster implementation,

        as the same properties might have the different effect on different managers.

   </p>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="SimpleTcpCluster Attributes"><!--()--></a><a name="SimpleTcpCluster_Attributes"><strong>SimpleTcpCluster Attributes</strong></a></font></td></tr><tr><td><blockquote>

-  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>className</code></strong></td><td align="left" valign="center">

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

       <p>The main cluster class, currently only one is available,

          <code>org.apache.catalina.ha.tcp.SimpleTcpCluster</code>

       </p>

-    </td></tr><tr><td align="left" valign="center"><strong><code>channelSendOptions</code></strong></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">channelSendOptions</code></strong></td><td align="left" valign="center">

       <p>The Tribes channel send options, default is <code>8</code>.<br>

-         This option is used to set the flag that all messages sent through the 

-         SimpleTcpCluster uses. The flag decides how the messages are sent, and is a simple logical OR.<br>

-         

-      <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-        int options= Channel.SEND_OPTIONS_ASYNCHRONOUS | 

-                     Channel.SEND_OPTIONS_SYNCHRONIZED_ACK | 

-                     Channel.SEND_OPTIONS_USE_ACK;

-      </pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-      Some of the values are:<br>

+         This option is used to set the flag that all messages sent through the

+         SimpleTcpCluster uses. The flag decides how the messages are sent, and is a simple logical OR.</p>

+

+      <div class="codeBox"><pre><code>int options = Channel.SEND_OPTIONS_ASYNCHRONOUS |

+              Channel.SEND_OPTIONS_SYNCHRONIZED_ACK |

+              Channel.SEND_OPTIONS_USE_ACK;</code></pre></div>

+      <p>Some of the values are:<br>

       <code>Channel.SEND_OPTIONS_SYNCHRONIZED_ACK = 0x0004</code><br>

       <code>Channel.SEND_OPTIONS_ASYNCHRONOUS = 0x0008</code><br>

       <code>Channel.SEND_OPTIONS_USE_ACK = 0x0002</code><br>

-      So to use ACK and ASYNC messaging, the flag would be <code>10 (8+2) or 0x000B</code><br>

+      So to use ACK and ASYNC messaging, the flag would be <code>10</code> (8+2)

+      <br>

       Note that if you use ASYNC messaging it is possible for update messages

       for a session to be processed by the receiving nodes in a different order

-      to the order in which they were sent.

-      </p>

-    </td></tr><tr><td align="left" valign="center"><code>channelStartOptions</code></td><td align="left" valign="center">

+      to the order in which they were sent.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">channelStartOptions</code></td><td align="left" valign="center">

       <p>Sets the start and stop flags for the &lt;Channel&gt; object used by the cluster.

-         The default is <code>Channel.DEFAULT</code> which starts all the channel services, such as 

+         The default is <code>Channel.DEFAULT</code> which starts all the channel services, such as

          sender, receiver, multicast sender and multicast receiver.

-         The following flags are available today:

-         <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-           Channel.DEFAULT = Channel.SND_RX_SEQ (1)| Channel.SND_TX_SEQ (2)| Channel.MBR_RX_SEQ (4)| Channel.MBR_TX_SEQ (8);

-         </pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-         To start a channel without multicasting, you would want to use the value <code>Channel.SND_RX_SEQ | Channel.SND_TX_SEQ</code>

+         The following flags are available today:</p>

+         <div class="codeBox"><pre><code>Channel.DEFAULT = Channel.SND_RX_SEQ (1) |

+                  Channel.SND_TX_SEQ (2) |

+                  Channel.MBR_RX_SEQ (4) |

+                  Channel.MBR_TX_SEQ (8);</code></pre></div>

+         <p>To start a channel without multicasting, you would want to use the value <code>Channel.SND_RX_SEQ | Channel.SND_TX_SEQ</code>

          that equals to <code>3</code>.

       </p>

-    </td></tr><tr><td align="left" valign="center"><code>heartbeatBackgroundEnabled</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">heartbeatBackgroundEnabled</code></td><td align="left" valign="center">

       <p>Flag whether invoke channel heartbeat at container background thread. Default value is false.

          Enable this flag don't forget to disable the channel heartbeat thread.

       </p>

-    </td></tr><tr><td align="left" valign="center"><code>notifyLifecycleListenerOnFailure</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">notifyLifecycleListenerOnFailure</code></td><td align="left" valign="center">

       <p>Flag whether notify LifecycleListeners if all ClusterListener couldn't accept channel message.

          Default value is false.

       </p>

-    </td></tr><tr><td align="left" valign="center"><code>doClusterLog</code></td><td align="left" valign="center">

-      <p><b>Deprecated since 6.0.0</b></p>

-      <p>Possible values are <code>true</code> or <code>false</code><br>

-         Value is inherited from Tomcat 5.5 and has no official meaning.

-         to configure logging, use the standard tomcat logging configuration.

-      </p>

-    </td></tr><tr><td align="left" valign="center"><code>clusterLogName</code></td><td align="left" valign="center">

-      <p><b>Deprecated since 6.0.0</b></p>

-      <p>

-        Value is inherited from Tomcat 5.5 and has no official meaning.

-         to configure logging, use the standard tomcat logging configuration.

-      </p>

     </td></tr></table>

   </blockquote></td></tr></table>

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/config/cluster.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/config/context.html b/tomcat-uid/webapps/docs/config/context.html
index bf7f141..04ab44f 100644
--- a/tomcat-uid/webapps/docs/config/context.html
+++ b/tomcat-uid/webapps/docs/config/context.html
@@ -1,19 +1,94 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat Configuration Reference (6.0.41) - The Context Container</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.77) - The Context Container</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

     The Apache Tomcat Servlet/JSP Container

-  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat Configuration Reference</h1><h2>The Context Container</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

-<ul><li><a href="#Introduction">Introduction</a><ol><li><a href="#Naming">Naming</a></li><li><a href="#Defining_a_context">Defining a context</a></li></ol></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#Standard_Implementation">Standard Implementation</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Special_Features">Special Features</a><ol><li><a href="#Logging">Logging</a></li><li><a href="#Access_Logs">Access Logs</a></li><li><a href="#Automatic_Context_Configuration">Automatic Context Configuration</a></li><li><a href="#Context_Parameters">Context Parameters</a></li><li><a href="#Environment_Entries">Environment Entries</a></li><li><a href="#Lifecycle_Listeners">Lifecycle Listeners</a></li><li><a href="#Request_Filters">Request Filters</a></li><li><a href="#Resource_Definitions">Resource Definitions</a></li><li><a href="#Resource_Links">Resource Links</a></li><li><a href="#Transaction">Transaction</a></li></ol></li></ul>

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="sessionidgenerator.html">SessionIdGenerator</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Context Container</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a><ol><li><a href="#Parallel_deployment">Parallel deployment</a></li><li><a href="#Naming">Naming</a></li><li><a href="#Defining_a_context">Defining a context</a></li></ol></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#Standard_Implementation">Standard Implementation</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Special_Features">Special Features</a><ol><li><a href="#Logging">Logging</a></li><li><a href="#Access_Logs">Access Logs</a></li><li><a href="#Automatic_Context_Configuration">Automatic Context Configuration</a></li><li><a href="#Context_Parameters">Context Parameters</a></li><li><a href="#Environment_Entries">Environment Entries</a></li><li><a href="#Lifecycle_Listeners">Lifecycle Listeners</a></li><li><a href="#Request_Filters">Request Filters</a></li><li><a href="#Resource_Definitions">Resource Definitions</a></li><li><a href="#Resource_Links">Resource Links</a></li><li><a href="#Transaction">Transaction</a></li><li><a href="#Virtual_webapp">Virtual webapp</a></li></ol></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

-    <blockquote><em>

-    <p>The description below uses the variable name $CATALINA_BASE to refer the

+    <p><em>

+    The description below uses the variable name $CATALINA_BASE to refer the

     base directory against which most relative paths are resolved. If you have

-    not configured Tomcat 6 for multiple instances by setting a CATALINA_BASE

+    not configured Tomcat for multiple instances by setting a CATALINA_BASE

     directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME,

-    the directory into which you have installed Tomcat 6.</p>

-    </em></blockquote>

+    the directory into which you have installed Tomcat.

+    </em></p>

 

   <p>The <strong>Context</strong> element represents a <em>web

   application</em>, which is run within a particular virtual host.

@@ -31,64 +106,123 @@
   Request URI against the <em>context path</em> of each defined Context.

   Once selected, that Context will select an appropriate servlet to

   process the incoming request, according to the servlet mappings defined

-  in the <em>web application deployment descriptor</em> file (which MUST

-  be located at <code>/WEB-INF/web.xml</code> within the web app's

-  directory hierarchy).</p>

+  by the web application deployment.</p>

 

   <p>You may define as many <strong>Context</strong> elements as you

-  wish.  Each such Context MUST have a unique context path within a virtual

-  host. In

-  addition, a Context must be present with a context path equal to

+  wish.  Each such Context MUST have a unique context name within a virtual

+  host. The context path does not need to be unique (see <em>parallel

+  deployment</em> below). In addition, a Context must be present with a

+  context path equal to

   a zero-length string.  This Context becomes the <em>default</em>

   web application for this virtual host, and is used to process all

   requests that do not match any other Context's context path.</p>

 

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Parallel deployment"><!--()--></a><a name="Parallel_deployment"><strong>Parallel deployment</strong></a></font></td></tr><tr><td><blockquote>

+  <p><b>You may deploy multiple versions of a web application with the same

+  context path at the same time.</b> The rules used to match requests to a

+  context version are as follows:

+  </p>

+  <ul>

+  <li>If no session information is present in the request, use the latest

+  version.</li>

+  <li>If session information is present in the request, check the session

+  manager of each version for a matching session and if one is found, use that

+  version.</li>

+  <li>If session information is present in the request but no matching session

+  can be found, use the latest version.</li>

+  </ul>

+  <p>The <a href="host.html">Host</a> may be configured (via the

+  <code>undeployOldVersions</code>) to remove old versions deployed in this way

+  once they are no longer in use.</p>

+  </blockquote></td></tr></table>

+

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Naming"><strong>Naming</strong></a></font></td></tr><tr><td><blockquote>

   <p>When <code>autoDeploy</code> or <code>deployOnStartup</code> operations

-  are performed by a Host, the web application is specified by a context XML

-  file in <a href="host.html">Host</a>'s <code>xmlBase</code>

-  directory or by a WAR file or a directory file in Host's

-  <code>appBase</code> directory.

-  In this case the context path is derived from the name of the file that

-  is being deployed. Consequently, the context path <strong>may not</strong>

-  be defined in a <code>META-INF/context.xml</code> embedded in

-  the application. There is, therefore, a close relationship between the

-  <em>context path</em> and

-  the <em>base file name</em> (the name minus <code>.war</code> or

-  <code>.xml</code> extension) of the file.</p>

+  are performed by a Host, the name and context path of the web application are

+  derived from the name(s) of the file(s) that define(s) the web application.

+  Consequently, the context path <strong>may not</strong> be defined in a

+  <code>META-INF/context.xml</code> embedded in the application and there is a

+  close relationship between the <em>context name</em>, <em>context path</em>,

+  <em>context version</em> and the <em>base file name</em> (the name minus any

+  <code>.war</code> or <code>.xml</code> extension) of the file.</p>

 

-  <p>Let us assume that you want to deploy your application to respond to

-  requests to URIs starting with certain context path. According to the

-  Servlet specification, the context path may be an empty string, or a

-  string starting with '/'. The rules to define the names for this context

-  path are the following:</p>

+  <p>If no version is specified then the <em>context name</em> is always the

+  same as the <em>context path</em>. If the <em>context path</em> is the empty

+  string then the <em>base name</em> will be ROOT (always in upper case)

+  otherwise the <em>base name</em> will be the <em>context path</em> with the

+  leading '/' removed and any remaining '/' characters replaced with '#'.</p>

 

-  <ul>

-    <li>If the context path is a zero length string, the <em>base name</em> is

-    <code>"ROOT"</code> (uppercase)</li>

-    <li>If the context path is not a zero length string, the <em>base

-    name</em> is the context path with the leading '/' removed and any

-    remaining '/' characters in the path replaced with '#'.</li>

-  </ul>

+  <p>If a version is specified then the <em>context path</em> remains unchanged

+  and both the <em>context name</em> and the <em>base name</em> have the string

+  '##' appended to them followed by the version identifier.</p>

 

-  <p>To help clarify these rules, some examples are given in the following

-  table.</p>

+  <p>Some examples of these naming conventions are given below.</p>

 

   <table class="detail-table">

     <tr>

       <td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Context Path</font></td>

+      <td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Context Version</font></td>

+      <td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Context Name</font></td>

       <td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Base File Name</font></td>

+      <td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Example File Names (.xml, .war &amp; directory)</font></td>

     </tr>

-    <tr><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">/foo</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">foo</font></td></tr>

     <tr>

-      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">/foo/bar</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">foo#bar</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">/foo</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"><i>None</i></font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">/foo</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">foo</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">foo.xml, foo.war, foo</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">/foo/bar</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"><i>None</i></font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">/foo/bar</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">foo#bar</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">foo#bar.xml, foo#bar.war, foo#bar</font></td>

     </tr>

     <tr>

       <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"><i>Empty String</i></font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"><i>None</i></font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"><i>Empty String</i></font></td>

       <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">ROOT</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">ROOT.xml, ROOT.war, ROOT</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">/foo</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">42</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">/foo##42</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">foo##42</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">foo##42.xml, foo##42.war, foo##42</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">/foo/bar</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">42</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">/foo/bar##42</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">foo#bar##42</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">foo#bar##42.xml, foo#bar##42.war, foo#bar##42</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"><i>Empty String</i></font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">42</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">##42</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">ROOT##42</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">ROOT##42.xml, ROOT##42.war, ROOT##42</font></td>

     </tr>

   </table>

 

+  <p>The version component is treated as a <code>String</code> both for

+  performance reasons and to allow flexibility in versioning schemes. String

+  comparisons are used to determine version order. If version is not specified,

+  it is treated as the empty string.

+  Therefore,

+  <code>foo.war</code> will be treated as an earlier version than

+  <code>foo##11.war</code> and

+  <code>foo##11.war</code> will be treated as an earlier version than

+  <code>foo##2.war</code>. If using a purely numerical versioning scheme it is

+  recommended that zero padding is used so that <code>foo##002.war</code> is

+  treated as an earlier version than <code>foo##011.war</code>.

+  </p>

+

   <p>If you want to deploy a WAR file or a directory using a context path that

   is not related to the base file name then one of the following options must

   be used to prevent double-deployment:

@@ -102,24 +236,23 @@
   </blockquote></td></tr></table>

 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Defining a context"><!--()--></a><a name="Defining_a_context"><strong>Defining a context</strong></a></font></td></tr><tr><td><blockquote>

-  <p><b>It is NOT recommended to place

-  &lt;Context&gt; elements directly in the server.xml file.</b> This

-  is because it makes modifying the <strong>Context</strong> configuration

-  more invasive since the main <code>conf/server.xml</code> file cannot be

-  reloaded without restarting Tomcat.</p>

+  <p><b>It is NOT recommended to place &lt;Context&gt; elements directly in the

+  server.xml file.</b> This is because it makes modifying the

+  <strong>Context</strong> configuration more invasive since the main

+  <code>conf/server.xml</code> file cannot be reloaded without restarting

+  Tomcat.</p>

 

   <p>Individual <strong>Context</strong> elements may be explicitly defined:

   </p>

   <ul>

   <li>In an individual file at <code>/META-INF/context.xml</code> inside the

-  application files. In Tomcat 6 this file is automatically copied to

+  application files. Optionally (based on the Host's copyXML attribute)

+  this may be copied to

   <code>$CATALINA_BASE/conf/[enginename]/[hostname]/</code> and renamed to

-  application's base file name plus a ".xml" extension.

-  (This automated copying became optional in Tomcat 7).

-  </li>

+  application's base file name plus a ".xml" extension.</li>

   <li>In individual files (with a ".xml" extension) in the

   <code>$CATALINA_BASE/conf/[enginename]/[hostname]/</code> directory.

-  The context path will be derived from the base name of the file

+  The context path and version will be derived from the base name of the file

   (the file name less the .xml extension). This file will always take precedence

   over any context.xml file packaged in the web application's META-INF

   directory.</li>

@@ -160,7 +293,6 @@
   section above for creating a <strong>Context</strong> that has a path

   that is not related to the base file name.</p>

   </blockquote></td></tr></table>

-

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Attributes"><!--()--></a><a name="Common_Attributes"><strong>Common Attributes</strong></a></font></td></tr><tr><td><blockquote>

@@ -168,47 +300,54 @@
     <p>All implementations of <strong>Context</strong>

     support the following attributes:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>backgroundProcessorDelay</code></td><td align="left" valign="center">

-        <p>This value represents the delay in seconds between the 

-        invocation of the backgroundProcess method on this context and 

-        its child containers, including all wrappers. 

-        Child containers will not be invoked if their delay value is not 

-        negative (which would mean they are using their own processing 

-        thread). Setting this to a positive value will cause 

-        a thread to be spawn. After waiting the specified amount of time, 

-        the thread will invoke the backgroundProcess method on this host 

-        and all its child containers. A context will use background 

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">allowCasualMultipartParsing</code></td><td align="left" valign="center">

+        <p>Set to true if Tomcat should automatically parse

+        multipart/form-data request bodies when HttpServletRequest.getPart*

+        or HttpServletRequest.getParameter* is called, even when the

+        target servlet isn't marked with the @MultipartConfig annotation

+        (See Servlet Specification 3.0, Section 3.2 for details).

+        Note that any setting other than <code>false</code> causes Tomcat

+        to behave in a way that is not technically spec-compliant.

+        The default is <code>false</code></p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">backgroundProcessorDelay</code></td><td align="left" valign="center">

+        <p>This value represents the delay in seconds between the

+        invocation of the backgroundProcess method on this context and

+        its child containers, including all wrappers.

+        Child containers will not be invoked if their delay value is not

+        negative (which would mean they are using their own processing

+        thread). Setting this to a positive value will cause

+        a thread to be spawn. After waiting the specified amount of time,

+        the thread will invoke the backgroundProcess method on this host

+        and all its child containers. A context will use background

         processing to perform session expiration and class monitoring for

-        reloading. If not specified, the default value for this attribute is 

-        -1, which means the context will rely on the background processing 

+        reloading. If not specified, the default value for this attribute is

+        -1, which means the context will rely on the background processing

         thread of its parent host.</p>

-      </td></tr><tr><td align="left" valign="center"><code>className</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">className</code></td><td align="left" valign="center">

         <p>Java class name of the implementation to use.  This class must

         implement the <code>org.apache.catalina.Context</code> interface.

         If not specified, the standard value (defined below) will be used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>cookies</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">containerSciFilter</code></td><td align="left" valign="center">

+        <p>The regular expression that specifies which container provided SCIs

+        should be filtered out and not used for this context. Matching uses

+        <code>java.util.regex.Matcher.find()</code> so the regular expression

+        only has to match a sub-string of the fully qualified class name of the

+        container provided SCI for it to be filtered out. If not specified,

+        no filtering will be applied.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cookies</code></td><td align="left" valign="center">

         <p>Set to <code>true</code> if you want cookies to be used for

         session identifier communication if supported by the client (this

         is the default).  Set to <code>false</code> if you want to disable

         the use of cookies for session identifier communication, and rely

         only on URL rewriting by the application.</p>

-      </td></tr><tr><td align="left" valign="center"><code>crossContext</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">crossContext</code></td><td align="left" valign="center">

         <p>Set to <code>true</code> if you want calls within this application

         to <code>ServletContext.getContext()</code> to successfully return a

         request dispatcher for other web applications running on this virtual

         host.  Set to <code>false</code> (the default) in security

         conscious environments, to make <code>getContext()</code> always

         return <code>null</code>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>disableURLRewriting</code></td><td align="left" valign="center">

-        <p>Set to <code>true</code> to disable support for using URL rewriting

-        to track session IDs for clients of this Context. URL rewriting is an

-        optional component of the servlet 2.5 specification but disabling URL

-        rewriting will result in non-compliant behaviour since the specification

-        requires that there <em>must</em> be a way to retain sessions if the

-        client doesn't allow session cookies. If not specified, the

-        specification compliant default value of <code>false</code> will be

-        used.</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>docBase</code></strong></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">docBase</code></strong></td><td align="left" valign="center">

         <p>The <em>Document Base</em> (also known as the <em>Context

         Root</em>) directory for this web application, or the pathname

         to the web application archive file (if this web application is

@@ -223,20 +362,50 @@
         symbolic link will only be effective after a Tomcat restart or

         by undeploying and redeploying the context. A context reload is not

         sufficient.</p>

-      </td></tr><tr><td align="left" valign="center"><code>override</code></td><td align="left" valign="center">

-        <p>Set to <code>true</code> to have explicit settings in this

-        Context element override any corresponding settings in either the global

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">dispatchersUseEncodedPaths</code></td><td align="left" valign="center">

+        <p>Controls whether paths used in calls to obtain a request dispatcher

+        ares expected to be encoded. This affects both how Tomcat handles calls

+        to obtain a request dispatcher as well as how Tomcat generates paths

+        used to obtain request dispatchers internally. If not specified, the

+        default value of <code>true</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">failCtxIfServletStartFails</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> to have the context fail its startup if any

+        servlet that has load-on-startup &gt;=0 fails its own startup.</p>

+        <p>If not specified, the attribute of the same name in the parent Host

+        configuration is used if specified. Otherwise the default value of

+        <code>false</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">fireRequestListenersOnForwards</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> to fire any configured

+        ServletRequestListeners  when Tomcat forwards a request. This is

+        primarily of use to users of CDI frameworks that use

+        ServletRequestListeners to configure the necessary environment for a

+        request. If not specified, the default value of <code>false</code> is

+        used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">logEffectiveWebXml</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> if you want the effective web.xml used for a

+        web application to be logged (at INFO level) when the application

+        starts. The effective web.xml is the result of combining the

+        application's web.xml with any defaults configured by Tomcat and any

+        web-fragment.xml files and annotations discovered. If not specified, the

+        default value of <code>false</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">mapperContextRootRedirectEnabled</code></td><td align="left" valign="center">

+        <p>If enabled, requests for a web application context root will be

+        redirected (adding a trailing slash) if necessary by the Mapper rather

+        than the default Servlet. This is more efficient but has the side effect

+        of confirming that the context path exists. If not specified, the

+        default value of <code>true</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">mapperDirectoryRedirectEnabled</code></td><td align="left" valign="center">

+        <p>If enabled, requests for a web application directory will be

+        redirected (adding a trailing slash) if necessary by the Mapper rather

+        than the default Servlet. This is more efficient but has the side effect

+        of confirming that the directory is exists. If not specified, the

+        default value of <code>false</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">override</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> to ignore any settings in both the global

         or <a href="host.html">Host</a> default contexts.  By default, settings

-        from a default context will be used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>privileged</code></td><td align="left" valign="center">

-        <p>Set to <code>true</code> to allow this context to use container

-        servlets, like the manager servlet. Use of the <code>privileged</code>

-        attribute will change the context's parent class loader to be the

-        <em>Server</em> class loader rather than the <em>Shared</em> class

-        loader. Note that in a default installation, the <em>Common</em> class

-        loader is used for both the <em>Server</em> and the <em>Shared</em>

-        class loaders.</p>

-      </td></tr><tr><td align="left" valign="center"><code>path</code></td><td align="left" valign="center">

+        from a default context will be used but may be overridden by a setting

+        the same attribute explicitly for the Context.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">path</code></td><td align="left" valign="center">

         <p>The <em>context path</em> of this web application, which is

         matched against the beginning of each request URI to select the

         appropriate web application for processing.  All of the context paths

@@ -253,7 +422,23 @@
         <a href="host.html">Host</a>'s <code>appBase</code> or both

         <code>deployOnStartup</code> and <code>autoDeploy</code> are false. If

         this rule is not followed, double deployment is likely to result.</p>

-      </td></tr><tr><td align="left" valign="center"><code>reloadable</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">preemptiveAuthentication</code></td><td align="left" valign="center">

+        <p>When set to <code>true</code> and the user presents credentials for a

+        resource that is not protected by a security constraint, if the

+        authenticator supports preemptive authentication (the standard

+        authenticators provided with Tomcat do) then the user' credentials

+        will be processed. If not specified, the default of <code>false</code>is

+        used.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">privileged</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> to allow this context to use container

+        servlets, like the manager servlet. Use of the <code>privileged</code>

+        attribute will change the context's parent class loader to be the

+        <em>Server</em> class loader rather than the <em>Shared</em> class

+        loader. Note that in a default installation, the <em>Common</em> class

+        loader is used for both the <em>Server</em> and the <em>Shared</em>

+        class loaders.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">reloadable</code></td><td align="left" valign="center">

         <p>Set to <code>true</code> if you want Catalina to monitor classes in

         <code>/WEB-INF/classes/</code> and <code>/WEB-INF/lib</code> for

         changes, and automatically reload the web application if a change

@@ -264,63 +449,173 @@
         can use the <a href="../manager-howto.html">Manager</a> web

         application, however, to trigger reloads of deployed applications

         on demand.</p>

-      </td></tr><tr><td align="left" valign="center"><code>sessionCookieDomain</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">resourceOnlyServlets</code></td><td align="left" valign="center">

+        <p>Comma separated list of Servlet names (as used in

+        <code>/WEB-INF/web.xml</code>) that expect a resource to be present.

+        Ensures that welcome files associated with Servlets that expect a

+        resource to be present (such as the JSP Servlet) are not used when there

+        is no resource present. This prevents issues caused by the clarification

+        of welcome file mapping in section 10.10 of the Servlet 3.0

+        specification. If the

+        <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code>

+        <a href="systemprops.html">system property</a> is set to

+        <code>true</code>, the default value of this attribute will be the empty

+        string, else the default value will be <code>jsp</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sendRedirectBody</code></td><td align="left" valign="center">

+        <p>If <code>true</code>, redirect responses will include a short

+        response body that includes details of the redirect as recommended by

+        RFC 2616. This is disabled by default since including a response body

+        may cause problems for some application component such as compression

+        filters.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sessionCookieDomain</code></td><td align="left" valign="center">

         <p>The domain to be used for all session cookies created for this

-        Context. If not set, no domain will be specified for session cookies.

-        </p>

-      </td></tr><tr><td align="left" valign="center"><code>sessionCookieName</code></td><td align="left" valign="center">

+        context. If set, this overrides any domain set by the web application.

+        If not set, the value specified by the web application, if any, will be

+        used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sessionCookieName</code></td><td align="left" valign="center">

         <p>The name to be used for all session cookies created for this

-        Context. If not set, the default of JSESSIONID will be used. Note that

-        this default will be overridden by the

-        <strong>org.apache.catalina.SESSION_COOKIE_NAME</strong> system

-        property.</p>

-      </td></tr><tr><td align="left" valign="center"><code>sessionCookiePath</code></td><td align="left" valign="center">

+        context. If set, this overrides any name set by the web application.

+        If not set, the value specified by the web application, if any, will be

+        used, or the name <code>JSESSIONID</code> if the web application does

+        not explicitly set one.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sessionCookiePath</code></td><td align="left" valign="center">

         <p>The path to be used for all session cookies created for this

-        Context. If not set, the context path will be used. Note that this will

-        be overridden by the <strong>emptySessionPath</strong> attribute on the

-        connector used to access this Context.</p>

-      </td></tr><tr><td align="left" valign="center"><code>tldValidation</code></td><td align="left" valign="center">

+        context. If set, this overrides any path set by the web application.

+        If not set, the value specified by the web application will be used, or

+        the context path used if the web application does not explicitly set

+        one. To configure all web application to use an empty path (this can be

+        useful for portlet specification implementations) set this attribute to

+        <code>/</code> in the global <code>CATALINA_BASE/conf/context.xml</code>

+        file.</p>

+        <p>Note: Once one web application using

+        <code>sessionCookiePath="/"</code> obtains a session, all

+        subsequent sessions for any other web application in the same host also

+        configured with <code>sessionCookiePath="/"</code> will always

+        use the same session ID. This holds even if the session is invalidated

+        and a new one created. This makes session fixation protection more

+        difficult and requires custom, Tomcat specific code to change the

+        session ID shared by the multiple applications.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sessionCookiePathUsesTrailingSlash</code></td><td align="left" valign="center">

+        <p>Some browsers, such as Internet Explorer, Safari and Edge, will send

+        a session cookie for a context with a path of <code>/foo</code> with a

+        request to <code>/foobar</code> in violation of RFC6265. This could

+        expose a session ID from an application deployed at <code>/foo</code> to

+        an application deployed at <code>/foobar</code>. If the application

+        deployed at <code>/foobar</code> is untrusted, this could create a

+        security risk. However, it should be noted that RFC 6265, section 8.5

+        makes clear that path alone should not be view as sufficient to prevent

+        untrusted applications accessing cookies from other applications. To

+        mitigate this risk, this attribute may be set to <code>true</code> and

+        Tomcat will add a trailing slash to the path associated with the session

+        cookie so, in the above example, the cookie path becomes /foo/. However,

+        with a cookie path of /foo/, browsers will no longer send the cookie

+        with a request to /foo. This should not be a problem unless there is a

+        servlet mapped to /*. In this case this attribute will need to be set to

+        <code>false</code> to disable this feature. The default value for this

+        attribute is <code>false</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">swallowAbortedUploads</code></td><td align="left" valign="center">

+        <p>Set to false if Tomcat should <b>not</b> read any additional request

+        body data for aborted uploads and instead abort the client connection.

+        This setting is used in the following situations:

+        </p>

+        <ul>

+        <li>the size of the request body is larger than the

+            <code>maxPostSize</code> configured in the connector</li>

+        <li>the size limit of a MultiPart upload is reached</li>

+        <li>the servlet sets the response status to 413 (Request Entity Too

+            Large) </li>

+        </ul>

+        <p>

+        Not reading the additional data will free the request processing thread

+        more quickly. Unfortunately most HTTP clients will not read the response

+        if they can not write the full request.</p>

+        <p>The default is <code>true</code>, so additional data will be

+        read.</p>

+        <p>Note if an error occurs during the request processing that triggers

+        a 5xx response, any unread request data will always be ignored and the

+        client connection will be closed once the error response has been

+        written.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">swallowOutput</code></td><td align="left" valign="center">

+        <p>If the value of this flag is <code>true</code>, the bytes output to

+        System.out and System.err by the web application will be redirected to

+        the web application logger. If not specified, the default value

+        of the flag is <code>false</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">tldValidation</code></td><td align="left" valign="center">

         <p>If the value of this flag is <code>true</code>, the TLD files

-        will be XML validated on context startup.  If the

+        will be XML validated on context startup. If the

         <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code>

         <a href="systemprops.html">system property</a> is set to

         <code>true</code>, the default value of this attribute will be

         <code>true</code>, else the default value will be <code>false</code>.

         Setting this attribute to <code>true</code> will incur a performance

         penalty.</p>

-      </td></tr><tr><td align="left" valign="center"><code>useHttpOnly</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">useHttpOnly</code></td><td align="left" valign="center">

        <p>Should the HttpOnly flag be set on session cookies to prevent client

           side script from accessing the session ID? Defaults to

-          <code>false</code>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>wrapperClass</code></td><td align="left" valign="center">

+          <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">useRelativeRedirects</code></td><td align="left" valign="center">

+        <p>Controls whether HTTP 1.1 and later location headers generated by a

+        call to

+        <code>javax.servlet.http.HttpServletResponse#sendRedirect(String)</code>

+        will use relative or absolute redirects. Relative redirects are more

+        efficient but may not work with reverse proxies that change the context

+        path. It should be noted that it is not recommended to use a reverse

+        proxy to change the context path because of the multiple issues it

+        creates. Absolute redirects should work with reverse proxies that change

+        the context path but may cause issues with the

+        <code>org.apache.catalina.filters.RemoteIpFilter</code> if the filter is

+         changing the scheme and/or port. If the

+        <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code>

+        <a href="systemprops.html">system property</a> is set to

+        <code>true</code>, the default value of this attribute will be

+        <code>false</code>, else the default value will be <code>true</code>.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">validateClientProvidedNewSessionId</code></td><td align="left" valign="center">

+        <p>When a client provides the ID for a new session, this attribute

+        controls whether that ID is validated. The only use case for using a

+        client provided session ID is to have a common session ID across

+        multiple web applications. Therefore, any client provided session ID

+        should already exist in another web application. If this check is

+        enabled, the client provided session ID will only be used if the session

+        ID exists in at least one other web application for the current host.

+        Note that the following additional tests are always applied,

+        irrespective of this setting:</p>

+        <ul>

+          <li>The session ID is provided by a cookie</li>

+          <li>The session cookie has a path of {@code /}</li>

+        </ul>

+        <p>If not specified, the default value of <code>true</code> will be

+        used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">wrapperClass</code></td><td align="left" valign="center">

         <p>Java class name of the <code>org.apache.catalina.Wrapper</code>

         implementation class that will be used for servlets managed by this

         Context.  If not specified, a standard default value will be used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>xmlBlockExternal</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">xmlBlockExternal</code></td><td align="left" valign="center">

         <p>If the value of this flag is <code>true</code>, the parsing of

         <code>web.xml</code>, <code>web-fragment.xml</code>, <code>*.tld</code>,

         <code>*.jspx</code>, <code>*.tagx</code> and <code>tagPlugins.xml</code>

         files for this web application will not permit external entities to be

         loaded. If not specified, the default value of <code>true</code> will

         be used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>xmlNamespaceAware</code></td><td align="left" valign="center">

-        <p>If the value of this flag is <code>true</code>, the parsing of the

-        <code>web.xml</code> file for this web application will be

-        namespace-aware. Note that <code>*.tld</code>, <code>*.jspx</code> and

-        <code>*.tagx</code> files are always parsed using a namespace-aware

-        parser and that the <code>tagPlugins.xml</code> file (if any) is never

-        parsed using a namespace-aware parser. Note also that if you turn this

-        flag on, you should probably also turn <code>xmlValidation</code> on. If

-        the <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">xmlNamespaceAware</code></td><td align="left" valign="center">

+        <p>If the value of this flag is <code>true</code>, the parsing of

+        <code>web.xml</code> and <code>web-fragment.xml</code> files for this

+        web application will be namespace-aware. Note that <code>*.tld</code>,

+        <code>*.jspx</code> and <code>*.tagx</code> files are always parsed

+        using a namespace-aware parser and that the <code>tagPlugins.xml</code>

+        file (if any) is never parsed using a namespace-aware parser. Note also

+        that if you turn this flag on, you should probably also turn

+        <code>xmlValidation</code> on. If the

+        <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code>

         <a href="systemprops.html">system property</a> is set to

         <code>true</code>, the default value of this attribute will be

         <code>true</code>, else the default value will be <code>false</code>.

         Setting this attribute to <code>true</code> will incur a performance

         penalty.</p>

-      </td></tr><tr><td align="left" valign="center"><code>xmlValidation</code></td><td align="left" valign="center">

-        <p>If the value of this flag is <code>true</code>, the parsing of the

-        <code>web.xml</code> file for this web application will use a validating

-        parser. If the

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">xmlValidation</code></td><td align="left" valign="center">

+        <p>If the value of this flag is <code>true</code>, the parsing of

+        <code>web.xml</code> and <code>web-fragment.xml</code> files for this

+        web application will use a validating parser. If the

         <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code>

         <a href="systemprops.html">system property</a> is set to

         <code>true</code>, the default value of this attribute will be

@@ -339,7 +634,38 @@
     It supports the following additional attributes (in addition to the

     common attributes listed above):</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>allowLinking</code></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">addWebinfClassesResources</code></td><td align="left" valign="center">

+        <p>This attribute controls if, in addition to static resources being

+        served from <code>META-INF/resources</code> inside web application JAR

+        files, static resources are also served from

+        <code>WEB-INF/classes/META-INF/resources</code>. This only applies to

+        web applications with a major version of 3 or higher. Since this is a

+        proprietary extension to the Servlet 3 specification, it is disabled by

+        default. To enable this feature, set the attribute to <code>true</code>.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">aliases</code></td><td align="left" valign="center">

+        <p>This attribute provides a list of external locations from which to

+        load resources for this context. The list of aliases should be of

+        the form <code>"/aliasPath1=docBase1,/aliasPath2=docBase2"</code> where

+        <code>aliasPathN</code> must include a leading '/' and

+        <code>docBaseN</code> must be an absolute path to either a .war file or

+        a directory.</p>

+        <p>Whitespace is permitted around both the <code>,</code> and

+        <code>=</code> delimiters, and will be trimmed. Therefore, an aliases

+        attribute with the value <code>"/aliasPath1 = docBase1,<br>

+        /aliasPath2= docBase2"</code> is equivalent to

+        <code>"/aliasPath1=docBase1,/aliasPath2=docBase2"</code></p>

+        <p>A resource will be searched for in the first <code>docBaseN</code>

+        for which <code>aliasPathN</code> is a leading path segment of the

+        resource. If there is no such alias, then the resource will be searched

+        in the usual way.</p>

+        <p>Using '/' as an aliasPath is not allowed. Consider using

+        <code>docBase</code> instead.</p>

+        <p>These external locations will not be emptied if the context

+        is un-deployed.</p>

+        <p>A more powerful feature (for development only) is

+        <a href="#Virtual_webapp">Virtual webapp</a>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">allowLinking</code></td><td align="left" valign="center">

         <p>If the value of this flag is <code>true</code>, symlinks will be

         allowed inside the web application, pointing to resources outside the

         web application base path. If not specified, the default value

@@ -348,7 +674,7 @@
         (or any other OS which does not have a case sensitive filesystem),

         as it will disable case sensitivity checks, allowing JSP source code

         disclosure, among other security problems.</b></p>

-      </td></tr><tr><td align="left" valign="center"><code>antiJARLocking</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">antiJARLocking</code></td><td align="left" valign="center">

         <p>If true, the Tomcat classloader will take extra measures to avoid

         JAR file locking when resources are accessed inside JARs through URLs.

         This will impact startup time of applications, but could prove to be

@@ -359,13 +685,13 @@
         <code>antiResourceLocking</code> and therefore, to prevent duplicate

         work and possible issues, only one of these attributes should be set

         to <code>true</code> at any one time.</p>

-      </td></tr><tr><td align="left" valign="center"><code>antiResourceLocking</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">antiResourceLocking</code></td><td align="left" valign="center">

         <p>If true, Tomcat will prevent any file locking.

-        This will significantly impact startup time of applications, 

-        but allows full webapp hot deploy and undeploy on platforms 

+        This will significantly impact startup time of applications,

+        but allows full webapp hot deploy and undeploy on platforms

         or configurations where file locking can occur.

         If not specified, the default value is <code>false</code>.</p>

-   

+

         <p><code>antiJARLocking</code> is a subset of

         <code>antiResourceLocking</code> and therefore, to prevent duplicate

         work and possible issues, only one of these attributes should be set

@@ -373,44 +699,34 @@
 

         <p>Please note that setting this to <code>true</code> has some side

         effects, including the disabling of JSP reloading in a running server:

-        see <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=37668">

+        see <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=37668">

         Bugzilla 37668</a>.</p>

 

         <p>Please note that setting this flag to true in applications that are

         outside the appBase for the Host (the <code>webapps</code> directory

         by default) will cause the application to be <strong>deleted</strong> on

-        Tomcat shutdown.  You probably don't want to do this, so think twice 

+        Tomcat shutdown.  You probably don't want to do this, so think twice

         before setting antiResourceLocking=true on a webapp that's outside the

         appBase for its Host.</p>

-      </td></tr><tr><td align="left" valign="center"><code>cacheMaxSize</code></td><td align="left" valign="center">

-        <p>Maximum size of the static resource cache in kilobytes. 

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cacheMaxSize</code></td><td align="left" valign="center">

+        <p>Maximum size of the static resource cache in kilobytes.

         If not specified, the default value is <code>10240</code>

         (10 megabytes).</p>

-      </td></tr><tr><td align="left" valign="center"><code>cacheObjectMaxSize</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cacheObjectMaxSize</code></td><td align="left" valign="center">

         <p>Maximum size of the static resource that will be placed in the cache.

         If not specified, the default value is <code>512</code>

         (512 kilobytes). If this value is greater than

         <code>cacheMaxSize/20</code> it will be reduced to

         <code>cacheMaxSize/20</code>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>cacheTTL</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cacheTTL</code></td><td align="left" valign="center">

         <p>Amount of time in milliseconds between cache entries revalidation.

-        If not specified, the default value is <code>5000</code> 

+        If not specified, the default value is <code>5000</code>

         (5 seconds).</p>

-      </td></tr><tr><td align="left" valign="center"><code>cachingAllowed</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cachingAllowed</code></td><td align="left" valign="center">

         <p>If the value of this flag is <code>true</code>, the cache for static

         resources will be used. If not specified, the default value

         of the flag is <code>true</code>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>caseSensitive</code></td><td align="left" valign="center">

-        <p><strong>Deprecated.</strong> This option is removed in Tomcat 7

-        onwards where the default of <code>true</code> is always used.</p>

-        <p>If the value of this flag is <code>false</code>, all case sensitivity

-        checks will be disabled. If not 

-        specified, the default value of the flag is <code>true</code>.</p>

-        <p><b>NOTE: This flag MUST NOT be set to false on the Windows platform

-        (or any other OS which does not have a case sensitive filesystem),

-        as it will disable case sensitivity checks, allowing JSP source code

-        disclosure, among other security problems.</b></p>

-      </td></tr><tr><td align="left" valign="center"><code>clearReferencesHttpClientKeepAliveThread</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">clearReferencesHttpClientKeepAliveThread</code></td><td align="left" valign="center">

         <p>If <code>true</code> and an <code>sun.net.www.http.HttpClient</code>

         keep-alive timer thread has been started by this web application and is

         still running, Tomcat will change the context class loader for that

@@ -420,49 +736,95 @@
         keep-alives all expire however, on a busy system that might not happen

         for some time. If not specified, the default value of

         <code>true</code> will be used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>clearReferencesStopThreads</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">clearReferencesRmiTargets</code></td><td align="left" valign="center">

+        <p>If <code>true</code>, Tomcat looks for memory leaks associated with

+        RMI Targets and clears any it finds. This feature uses reflection to

+        identify the leaks and therefore requires that the command line option

+        <code>-XaddExports:java.rmi/sun.rmi.transport=ALL-UNNAMED</code> is set

+        when running on Java 9 and above. Applications without memory leaks

+        should operate correctly with this attribute set to <code>false</code>.

+        If not specified, the default value of <code>true</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">clearReferencesStatic</code></td><td align="left" valign="center">

+        <p>If <code>true</code>, Tomcat attempts to null out any static or final

+        fields from loaded classes when a web application is stopped as a work

+        around for apparent garbage collection bugs and application coding

+        errors. There have been some issues reported with log4j when this

+        is <code>true</code>. Applications without memory leaks using recent

+        JVMs should operate correctly with this attribute set to

+        <code>false</code>. If not specified, the default value of

+        <code>false</code> will be used.</p>

+        <p>This attribute has been deprecated and will be removed in Tomcat

+        8.5.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">clearReferencesStopThreads</code></td><td align="left" valign="center">

         <p>If <code>true</code>, Tomcat attempts to terminate threads that have

         been started by the web application. Stopping threads is performed via

         the deprecated (for good reason) <code>Thread.stop()</code> method and

         is likely to result in instability. As such, enabling this should be

         viewed as an option of last resort in a development environment and is

         not recommended in a production environment. If not specified, the

-        default value of <code>false</code> will be used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>clearReferencesStopTimerThreads</code></td><td align="left" valign="center">

+        default value of <code>false</code> will be used. If this feature is

+        enabled, web applications may take up to two seconds longer to stop as

+        executor threads are given up to two seconds to stop gracefully before

+        <code>Thread.stop()</code> is called on any remaining threads.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">clearReferencesStopTimerThreads</code></td><td align="left" valign="center">

         <p>If <code>true</code>, Tomcat attempts to terminate

         <code>java.util.Timer</code> threads that have been started by the web

         application. Unlike standard threads, timer threads can be stopped

         safely although there may still be side-effects for the application. If

         not specified, the default value of <code>false</code> will be used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>clearReferencesThreadLocals</code></td><td align="left" valign="center">

-        <p>If <code>true</code>, Tomcat attempts to clear any ThreadLocal

-        objects that are instances of classes loaded by this class loader.

-        Failure to remove any such objects will result in a memory leak on web

-        application stop, undeploy or reload.  If not specified, the default

-        value of <code>false</code> will be used since the clearing of the

-        ThreadLocal objects is not performed in a thread-safe manner.</p>

-      </td></tr><tr><td align="left" valign="center"><code>processTlds</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">copyXML</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> if you want a context XML descriptor

+        embedded inside the application (located at

+        <code>/META-INF/context.xml</code>) to be copied to the owning

+        <a href="host.html">Host</a>'s <code>xmlBase</code> when the application

+        is deployed. On subsequent starts, the copied context XML descriptor

+        will be used in preference to any context XML descriptor embedded inside

+        the application even if the descriptor embedded inside the application

+        is more recent. The flag's value defaults to <code>false</code>. Note if

+        the <strong>deployXML</strong> attribute of the owning

+        <a href="host.html">Host</a> is <code>false</code> or if the

+        <strong>copyXML</strong> attribute of the owning

+        <a href="host.html">Host</a> is <code>true</code>, this attribute will

+        have no effect.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">jndiExceptionOnFailedWrite</code></td><td align="left" valign="center">

+        <p>If <code>true</code>, any attempt by an application to modify the

+        provided JNDI context with a call to bind(), unbind(),

+        createSubContext(), destroySubContext() or close() will trigger a

+        <code>javax.naming.OperationNotSupportedException</code> as required by

+        section EE.5.3.4 of the Java EE specification. This exception can be

+        disabled by setting this attribute to true in which case any calls to

+        modify the JNDI context will return <b>without</b> making any changes

+        and methods that return values will return <code>null</code>. If not

+        specified, the specification compliant default of <code>true</code> will

+        be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">processTlds</code></td><td align="left" valign="center">

         <p>Whether the context should process TLDs on startup.  The default

         is true.  The false setting is intended for special cases

         that know in advance TLDs are not part of the webapp.</p>

-      </td></tr><tr><td align="left" valign="center"><code>swallowOutput</code></td><td align="left" valign="center">

-        <p>If the value of this flag is <code>true</code>, the bytes output to

-        System.out and System.err by the web application will be redirected to

-        the web application logger. If not specified, the default value

-        of the flag is <code>false</code>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>unloadDelay</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">renewThreadsWhenStoppingContext</code></td><td align="left" valign="center">

+        <p>If <code>true</code>, when this context is stopped, Tomcat renews all

+        the threads from the thread pool that was used to serve this context.

+        This also requires that the

+        <code>ThreadLocalLeakPreventionListener</code> be configured in

+        <code>server.xml</code> and that the <code>threadRenewalDelay</code>

+        property of the <code>Executor</code> be &gt;=0. If not specified, the

+        default value of <code>true</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">unloadDelay</code></td><td align="left" valign="center">

         <p>Number of ms that the container will wait for servlets to unload.

         If not specified, the default value is <code>2000</code> ms.</p>

-      </td></tr><tr><td align="left" valign="center"><code>unpackWAR</code></td><td align="left" valign="center">

-        <p>If true, Tomcat will unpack all compressed web applications before

-        running them.

-        If not specified, the default value is <code>true</code>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>useNaming</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">unpackWAR</code></td><td align="left" valign="center">

+        <p>If <code>false</code>, the <strong>unpackWARs</strong> attribute of

+        the owning <a href="host.html">Host</a> will be overridden and the WAR

+        file will not be unpacked. If <code>true</code>, the value of the owning

+        <a href="host.html">Host</a>'s <strong>unpackWARs</strong>

+        attribute will determine if the WAR is unpacked. If not specified, the

+        default value is <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">useNaming</code></td><td align="left" valign="center">

         <p>Set to <code>true</code> (the default) to have Catalina enable a

         JNDI <code>InitialContext</code> for this web application that is

         compatible with Java2 Enterprise Edition (J2EE) platform

         conventions.</p>

-      </td></tr><tr><td align="left" valign="center"><code>workDir</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">workDir</code></td><td align="left" valign="center">

         <p>Pathname to a scratch directory to be provided by this Context

         for temporary read-write use by servlets within the associated web

         application.  This directory will be made visible to servlets in the

@@ -500,9 +862,9 @@
       Configure the resource manager that will be used to access the static

       resources associated with this web application.  Normally, the

       default configuration of the resource manager will be sufficient.</li>

-  <li><strong>WatchedResource</strong> - The auto deployer will monitor the 

+  <li><strong>WatchedResource</strong> - The auto deployer will monitor the

       specified static resource of the web application for updates, and will

-      reload the web application if is is updated. The content of this element

+      reload the web application if it is updated. The content of this element

       must be a string.</li>

   </ul>

 

@@ -511,7 +873,7 @@
 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Logging"><strong>Logging</strong></a></font></td></tr><tr><td><blockquote>

 

-    <p>A context is associated with the 

+    <p>A context is associated with the

        <code>org.apache.catalina.core.ContainerBase.[enginename].[hostname].[path]</code>

        log category.  Note that the brackets are actually part of the name, don't omit them.</p>

 

@@ -532,17 +894,15 @@
     <a href="host.html">Host</a>, or <a href="context.html">Context</a>

     by nesting a <a href="valve.html">Valve</a> element like this:</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;Context&gt;

+<div class="codeBox"><pre><code>&lt;Context&gt;

   ...

   &lt;Valve className="org.apache.catalina.valves.AccessLogValve"

          prefix="localhost_access_log." suffix=".txt"

          pattern="common"/&gt;

   ...

-&lt;/Context&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/Context&gt;</code></pre></div>

 

-    <p>See <a href="valve.html#Access Log Valve">Access Log Valve</a>

+    <p>See <a href="valve.html#Access_Logging">Access Logging Valves</a>

     for more information on the configuration attributes that are

     supported.</p>

 

@@ -555,7 +915,7 @@
     the following configuration steps occur automatically when Catalina

     is started, or whenever this web application is reloaded.  No special

     configuration is required to enable this feature.</p>

-    

+

     <ul>

     <li>If you have not declared your own <a href="loader.html">Loader</a>

        element, a standard web application class loader will be configured.

@@ -586,41 +946,37 @@
     web application as servlet context initialization parameters by nesting

     <code>&lt;Parameter&gt;</code> elements inside this element.  For

     example, you can create an initialization parameter like this:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;Context&gt;

+<div class="codeBox"><pre><code>&lt;Context&gt;

   ...

   &lt;Parameter name="companyName" value="My Company, Incorporated"

          override="false"/&gt;

   ...

-&lt;/Context&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/Context&gt;</code></pre></div>

 

     <p>This is equivalent to the inclusion of the following element in the

     web application deployment descriptor (<code>/WEB-INF/web.xml</code>):

     </p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;context-param&gt;

+<div class="codeBox"><pre><code>&lt;context-param&gt;

   &lt;param-name&gt;companyName&lt;/param-name&gt;

   &lt;param-value&gt;My Company, Incorporated&lt;/param-value&gt;

-&lt;/context-param&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/context-param&gt;</code></pre></div>

     <p>but does <em>not</em> require modification of the deployment descriptor

     to customize this value.</p>

 

     <p>The valid attributes for a <code>&lt;Parameter&gt;</code> element

     are as follows:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>description</code></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">description</code></td><td align="left" valign="center">

         <p>Optional, human-readable description of this context

         initialization parameter.</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>name</code></strong></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">name</code></strong></td><td align="left" valign="center">

         <p>The name of the context initialization parameter to be created.</p>

-      </td></tr><tr><td align="left" valign="center"><code>override</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">override</code></td><td align="left" valign="center">

         <p>Set this to <code>false</code> if you do <strong>not</strong> want

         a <code>&lt;context-param&gt;</code> for the same parameter name,

         found in the web application deployment descriptor, to override the

         value specified here.  By default, overrides are allowed.</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>value</code></strong></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">value</code></strong></td><td align="left" valign="center">

         <p>The parameter value that will be presented to the application

         when requested by calling

         <code>ServletContext.getInitParameter()</code>.</p>

@@ -635,51 +991,43 @@
     web application as environment entry resources, by nesting

     <code>&lt;Environment&gt;</code> entries inside this element.  For

     example, you can create an environment entry like this:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;Context&gt;

+<div class="codeBox"><pre><code>&lt;Context&gt;

   ...

   &lt;Environment name="maxExemptions" value="10"

          type="java.lang.Integer" override="false"/&gt;

   ...

-&lt;/Context&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/Context&gt;</code></pre></div>

 

     <p>This is equivalent to the inclusion of the following element in the

     web application deployment descriptor (<code>/WEB-INF/web.xml</code>):

     </p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;env-entry&gt;

+<div class="codeBox"><pre><code>&lt;env-entry&gt;

   &lt;env-entry-name&gt;maxExemptions&lt;/env-entry-name&gt;

   &lt;env-entry-value&gt;10&lt;/env-entry-value&gt;

   &lt;env-entry-type&gt;java.lang.Integer&lt;/env-entry-type&gt;

-&lt;/env-entry&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/env-entry&gt;</code></pre></div>

     <p>but does <em>not</em> require modification of the deployment descriptor

     to customize this value.</p>

 

     <p>The valid attributes for an <code>&lt;Environment&gt;</code> element

     are as follows:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>description</code></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">description</code></td><td align="left" valign="center">

         <p>Optional, human-readable description of this environment entry.</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>name</code></strong></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">name</code></strong></td><td align="left" valign="center">

         <p>The name of the environment entry to be created, relative to the

         <code>java:comp/env</code> context.</p>

-      </td></tr><tr><td align="left" valign="center"><code>override</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">override</code></td><td align="left" valign="center">

         <p>Set this to <code>false</code> if you do <strong>not</strong> want

         an <code>&lt;env-entry&gt;</code> for the same environment entry name,

         found in the web application deployment descriptor, to override the

         value specified here.  By default, overrides are allowed.</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>type</code></strong></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">type</code></strong></td><td align="left" valign="center">

         <p>The fully qualified Java class name expected by the web application

-        for this environment entry.  Must be one of the legal values for

+        for this environment entry.  Must be a legal value for

         <code>&lt;env-entry-type&gt;</code> in the web application deployment

-        descriptor:  <code>java.lang.Boolean</code>,

-        <code>java.lang.Byte</code>, <code>java.lang.Character</code>,

-        <code>java.lang.Double</code>, <code>java.lang.Float</code>,

-        <code>java.lang.Integer</code>, <code>java.lang.Long</code>,

-        <code>java.lang.Short</code>, or <code>java.lang.String</code>.</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>value</code></strong></td><td align="left" valign="center">

+        descriptor.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">value</code></strong></td><td align="left" valign="center">

         <p>The parameter value that will be presented to the application

         when requested from the JNDI context.  This value must be convertable

         to the Java type defined by the <code>type</code> attribute.</p>

@@ -695,18 +1043,16 @@
     nesting a <strong>Listener</strong> element inside this element.  The

     class name you specify must implement the

     <code>org.apache.catalina.LifecycleListener</code> interface, and

-    the class must be packaged in a jar and placed in the 

-    <code>$CATALINA_HOME/lib</code> directory. 

+    the class must be packaged in a jar and placed in the

+    <code>$CATALINA_HOME/lib</code> directory.

     It will be notified about the occurrence of the corresponding

     lifecycle events.  Configuration of such a listener looks like this:</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;Context&gt;

+<div class="codeBox"><pre><code>&lt;Context&gt;

   ...

   &lt;Listener className="com.mycompany.mypackage.MyListener" ... &gt;

   ...

-&lt;/Context&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/Context&gt;</code></pre></div>

 

     <p>Note that a Listener can have any number of additional properties

     that may be configured from this element.  Attribute names are matched

@@ -722,25 +1068,23 @@
     incoming request directed to the surrounding

     <a href="engine.html">Engine</a>, <a href="host.html">Host</a>, or

     <a href="context.html">Context</a> element.  The remote address or name

-    will be checked against a configured list of "accept" and/or "deny"

+    will be checked against configured "accept" and/or "deny"

     filters, which are defined using <code>java.util.regex</code> Regular

     Expression syntax.  Requests that come from locations that are

     not accepted will be rejected with an HTTP "Forbidden" error.

     Example filter declarations:</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;Context&gt;

+<div class="codeBox"><pre><code>&lt;Context&gt;

   ...

   &lt;Valve className="org.apache.catalina.valves.RemoteHostValve"

          allow=".*\.mycompany\.com|www\.yourcompany\.com"/&gt;

   &lt;Valve className="org.apache.catalina.valves.RemoteAddrValve"

          deny="192\.168\.1\.\d+"/&gt;

   ...

-&lt;/Context&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/Context&gt;</code></pre></div>

 

-    <p>See <a href="valve.html#Remote Address Filter">Remote Address Filter</a>

-    and <a href="valve.html#Remote Host Filter">Remote Host Filter</a> for

+    <p>See <a href="valve.html#Remote_Address_Filter">Remote Address Filter</a>

+    and <a href="valve.html#Remote_Host_Filter">Remote Host Filter</a> for

     more information about the configuration options that are supported.</p>

 

   </blockquote></td></tr></table>

@@ -752,31 +1096,27 @@
     to be returned for JNDI lookups of <code>&lt;resource-ref&gt;</code> and

     <code>&lt;resource-env-ref&gt;</code> elements in the web application

     deployment descriptor.  You <strong>MUST</strong> also define

-    the needed resource parameters as attributes of the <code>Resource</code> 

-    element, to configure the object factory to be used (if not known to Tomcat 

+    the needed resource parameters as attributes of the <code>Resource</code>

+    element, to configure the object factory to be used (if not known to Tomcat

     already), and the properties used to configure that object factory.</p>

 

     <p>For example, you can create a resource definition like this:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;Context&gt;

+<div class="codeBox"><pre><code>&lt;Context&gt;

   ...

   &lt;Resource name="jdbc/EmployeeDB" auth="Container"

             type="javax.sql.DataSource"

      description="Employees Database for HR Applications"/&gt;

   ...

-&lt;/Context&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/Context&gt;</code></pre></div>

 

     <p>This is equivalent to the inclusion of the following element in the

     web application deployment descriptor (<code>/WEB-INF/web.xml</code>):</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;resource-ref&gt;

+<div class="codeBox"><pre><code>&lt;resource-ref&gt;

   &lt;description&gt;Employees Database for HR Applications&lt;/description&gt;

   &lt;res-ref-name&gt;jdbc/EmployeeDB&lt;/res-ref-name&gt;

   &lt;res-ref-type&gt;javax.sql.DataSource&lt;/res-ref-type&gt;

   &lt;res-auth&gt;Container&lt;/res-auth&gt;

-&lt;/resource-ref&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/resource-ref&gt;</code></pre></div>

 

     <p>but does <em>not</em> require modification of the deployment

     descriptor to customize this value.</p>

@@ -784,9 +1124,9 @@
     <p>The valid attributes for a <code>&lt;Resource&gt;</code> element

     are as follows:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>auth</code></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">auth</code></td><td align="left" valign="center">

         <p>Specify whether the web Application code signs on to the

-        corresponding resource manager programatically, or whether the

+        corresponding resource manager programmatically, or whether the

         Container will sign on to the resource manager on behalf of the

         application.  The value of this attribute must be

         <code>Application</code> or <code>Container</code>.  This

@@ -794,17 +1134,37 @@
         will use a <code>&lt;resource-ref&gt;</code> element in the web

         application deployment descriptor, but is optional if the

         application uses a <code>&lt;resource-env-ref&gt;</code> instead.</p>

-      </td></tr><tr><td align="left" valign="center"><code>description</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">closeMethod</code></td><td align="left" valign="center">

+        <p>Name of the zero-argument method to call on a singleton resource when

+        it is no longer required. This is intended to speed up clean-up of

+        resources that would otherwise happen as part of garbage collection.

+        This attribute is ignored if the <code>singleton</code> attribute is

+        false. If not specified, no default is defined and no close method will

+        be called.</p>

+        <p>For Apache Commons DBCP and Apache Tomcat JDBC connection pools

+        you can use <code>closeMethod="close"</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">description</code></td><td align="left" valign="center">

         <p>Optional, human-readable description of this resource.</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>name</code></strong></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">name</code></strong></td><td align="left" valign="center">

         <p>The name of the resource to be created, relative to the

         <code>java:comp/env</code> context.</p>

-      </td></tr><tr><td align="left" valign="center"><code>scope</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">scope</code></td><td align="left" valign="center">

         <p>Specify whether connections obtained through this resource

         manager can be shared.  The value of this attribute must be

         <code>Shareable</code> or <code>Unshareable</code>.  By default,

         connections are assumed to be shareable.</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>type</code></strong></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">singleton</code></td><td align="left" valign="center">

+        <p>Specify whether this resource definition is for a singleton resource,

+        i.e. one where there is only a single instance of the resource. If this

+        attribute is <code>true</code>, multiple JNDI lookups for this resource

+        will return the same object. If this attribute is <code>false</code>,

+        multiple JNDI lookups for this resource will return different objects.

+        This attribute must be <code>true</code> for

+        <code>javax.sql.DataSource</code> resources to enable JMX registration

+        of the DataSource. The value of this attribute must be <code>true</code>

+        or <code>false</code>. By default, this attribute is <code>true</code>.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">type</code></strong></td><td align="left" valign="center">

         <p>The fully qualified Java class name expected by the web

         application when it performs a lookup for this resource.</p>

       </td></tr></table>

@@ -816,33 +1176,31 @@
   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Resource Links"><!--()--></a><a name="Resource_Links"><strong>Resource Links</strong></a></font></td></tr><tr><td><blockquote>

 

      <p>This element is used to create a link to a global JNDI resource. Doing

-     a JNDI lookup on the link name will then return the linked global 

+     a JNDI lookup on the link name will then return the linked global

      resource.</p>

 

     <p>For example, you can create a resource link like this:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;Context&gt;

+<div class="codeBox"><pre><code>&lt;Context&gt;

   ...

   &lt;ResourceLink name="linkToGlobalResource"

             global="simpleValue"

             type="java.lang.Integer"

   ...

-&lt;/Context&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/Context&gt;</code></pre></div>

 

     <p>The valid attributes for a <code>&lt;ResourceLink&gt;</code> element

     are as follows:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>global</code></strong></td><td align="left" valign="center">

-        <p>The name of the linked global resource in the 

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">global</code></strong></td><td align="left" valign="center">

+        <p>The name of the linked global resource in the

         global JNDI context.</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>name</code></strong></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">name</code></strong></td><td align="left" valign="center">

         <p>The name of the resource link to be created, relative to the

         <code>java:comp/env</code> context.</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>type</code></strong></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">type</code></strong></td><td align="left" valign="center">

         <p>The fully qualified Java class name expected by the web

         application when it performs a lookup for this resource link.</p>

-      </td></tr><tr><td align="left" valign="center"><code>factory</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">factory</code></td><td align="left" valign="center">

         <p>The fully qualified Java class name for the class creating these objects.

         This class should implement the <code>javax.naming.spi.ObjectFactory</code> interface.</p>

       </td></tr></table>

@@ -854,13 +1212,13 @@
        Under the hood, what happens is that a call to <a href="http://docs.oracle.com/javase/6/docs/api/javax/sql/DataSource.html#getConnection()"><code>getConnection()</code></a>

        is simply translated to a call <a href="http://docs.oracle.com/javase/6/docs/api/javax/sql/DataSource.html#getConnection(java.lang.String,%20java.lang.String)">

        <code>getConnection(username, password)</code></a> on the global data source. This is an easy way to get code to be transparent to what schemas are being used,

-       yet be able to control connections (or pools) in the global configuration. 

+       yet be able to control connections (or pools) in the global configuration.

     </p>

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>username</code></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">username</code></td><td align="left" valign="center">

         <p><code>username</code> value for the <code>getConnection(username, password)</code>

            call on the linked global DataSource.

         </p>

-      </td></tr><tr><td align="left" valign="center"><code>password</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">password</code></td><td align="left" valign="center">

         <p><code>password</code> value for the <code>getConnection(username, password)</code>

            call on the linked global DataSource.

         </p>

@@ -871,13 +1229,11 @@
 <a href="http://commons.apache.org/dbcp/">Apache Commons DBCP</a> pool that

 Tomcat uses by default does not support it. See its Javadoc for

 <code>BasicDataSource</code> class.

-<a href="http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html">Apache Tomcat JDBC pool</a>

-(included with Tomcat 7 and later) does support it,

+<a href="../jdbc-pool.html">Apache Tomcat JDBC pool</a> does support it,

 but by default this support is disabled and can be enabled by

 <code>alternateUsernameAllowed</code> attribute. See its documentation

-for details. The example below uses Apache Tomcat JDBC pool.</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;GlobalNamingResources&gt;

+for details.</p>

+<div class="codeBox"><pre><code>&lt;GlobalNamingResources&gt;

   ...

   &lt;Resource name="sharedDataSource"

             global="sharedDataSource"

@@ -892,7 +1248,7 @@
 

 &lt;Context path="/foo"...&gt;

   ...

-  &lt;ResourceLink 

+  &lt;ResourceLink

             name="appDataSource"

             global="sharedDataSource"

             type="javax.sql.DataSource"

@@ -903,35 +1259,140 @@
 &lt;/Context&gt;

 &lt;Context path="/bar"...&gt;

   ...

-  &lt;ResourceLink 

+  &lt;ResourceLink

             name="appDataSource"

             global="sharedDataSource"

             type="javax.sql.DataSource"

   ...

-&lt;/Context&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>    

-    <p>When a request for <code>getConnection()</code> is made in the <code>/foo</code> context, the request is translated into

-       <code>getConnection("foo","foopass")</code>, while a request in the <code>/bar</code> gets passed straight through.</p>

+&lt;/Context&gt;</code></pre></div>

+    <p>When a request for <code>getConnection()</code> is made in the

+       <code>/foo</code> context, the request is translated into

+       <code>getConnection("foo","foopass")</code>,

+       while a request in the <code>/bar</code> gets passed straight through.</p>

   </blockquote></td></tr></table>

 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Transaction"><strong>Transaction</strong></a></font></td></tr><tr><td><blockquote>

 

     <p>You can declare the characteristics of the UserTransaction

-    to be returned for JNDI lookup for <code>java:comp/UserTransaction</code>. 

+    to be returned for JNDI lookup for <code>java:comp/UserTransaction</code>.

     You <strong>MUST</strong> define an object factory class to instantiate

-    this object as well as the needed resource parameters as attributes of the 

-    <code>Transaction</code> 

+    this object as well as the needed resource parameters as attributes of the

+    <code>Transaction</code>

     element, and the properties used to configure that object factory.</p>

 

     <p>The valid attributes for the <code>&lt;Transaction&gt;</code> element

     are as follows:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>factory</code></strong></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">factory</code></strong></td><td align="left" valign="center">

         <p>The class name for the JNDI object factory.</p>

       </td></tr></table>

 

   </blockquote></td></tr></table>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Virtual webapp"><!--()--></a><a name="Virtual_webapp"><strong>Virtual webapp</strong></a></font></td></tr><tr><td><blockquote>

+    <p>During development it may be more productive to avoid copying files (static

+    resources, JSPs, classes, jars...) and configure tomcat to use files from their

+    source locations. To do that, several customisations of the context configuration are

+    required:</p>

+    <ul>

+      <li>The <code>VirtualDirContext</code> implementation of

+      <a href="resources.html">Resources</a></li>

+      <li>The <code>VirtualWebappLoader</code> implementation of

+      <a href="loader.html">Loader</a></li>

+      <li><code>scanAllDirectories="true"</code> on the <a href="jar-scanner.html">JarScanner</a></li>

+    </ul>

+    <p>To illustrate this feature, here is an example of a standard maven webapp source tree:</p>

+

+<div class="codeBox"><pre><code>mywebapp/

+         src/

+             main/

+                  java/

+                  resources/

+                  webapp/

+                         WEB-INF/

+                                 classes/

+         target/

+                classes/

+</code></pre></div>

+

+    <p>To deploy such an application (assuming it also uses the log4j maven artefact),

+    the context configuration looks like:</p>

+

+<div class="codeBox"><pre class="wrap"><code>&lt;Context path="/mywebapp" docBase="/Users/theuser/mywebapp/src/main/webapp"&gt;

+  &lt;Resources className="org.apache.naming.resources.VirtualDirContext"

+    extraResourcePaths="/WEB-INF/classes=/Users/theuser/mywebapp/target/classes" /&gt;

+  &lt;Loader className="org.apache.catalina.loader.VirtualWebappLoader"

+    virtualClasspath="/Users/theuser/mywebapp/target/classes;/Users/theuser/.m2/repository/log4j/log4j/1.2.15/log4j-1.2.15.jar" /&gt;

+  &lt;JarScanner scanAllDirectories="true" /&gt;

+&lt;/Context&gt;

+</code></pre></div>

+

+    <p>Here is another example where the webapp serves pictures under /pictures and movies

+    under /movies and also depends on another maven project mylib that would normally

+    produce a jar to be packaged in WEB-INF/lib:</p>

+

+<div class="codeBox"><pre><code>mylib/

+      src/

+          main/

+               java/

+               resources/

+                         META-INF/

+                                  resources/

+      target/

+             classes/

+mymovies/

+mypictures/

+mywebapp/

+         src/

+             main/

+                  java/

+                  resources/

+                  webapp/

+                         WEB-INF/

+                                 classes/

+         target/

+                classes/

+</code></pre></div>

+

+    <p>The configuration is:</p>

+

+<div class="codeBox"><pre class="wrap"><code>&lt;Context path="/mywebapp" docBase="/Users/theuser/mywebapp/src/main/webapp"&gt;

+  &lt;Resources className="org.apache.naming.resources.VirtualDirContext"

+    extraResourcePaths="/WEB-INF/classes=/Users/theuser/mywebapp/target/classes,/pictures=/Users/theuser/mypictures,/movies=/Users/theuser/mymovies" /&gt;

+  &lt;Loader className="org.apache.catalina.loader.VirtualWebappLoader"

+   virtualClasspath="/Users/theuser/mywebapp/target/classes;/Users/theuser/mylib/target/classes;/Users/theuser/.m2/repository/log4j/log4j/1.2.15/log4j-1.2.15.jar" /&gt;

+  &lt;JarScanner scanAllDirectories="true" /&gt;

+&lt;/Context&gt;

+</code></pre></div>

+

+    <p>Note that resources in mylib/target/classes/META-INF/resources/ are mapped to / as

+    required by servlet 3 specification.</p>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/config/context.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/config/engine.html b/tomcat-uid/webapps/docs/config/engine.html
index 075d68e..08423eb 100644
--- a/tomcat-uid/webapps/docs/config/engine.html
+++ b/tomcat-uid/webapps/docs/config/engine.html
@@ -1,9 +1,84 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat Configuration Reference (6.0.41) - The Engine Container</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.77) - The Engine Container</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

     The Apache Tomcat Servlet/JSP Container

-  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat Configuration Reference</h1><h2>The Engine Container</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="sessionidgenerator.html">SessionIdGenerator</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Engine Container</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#Standard_Implementation">Standard Implementation</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Special_Features">Special Features</a><ol><li><a href="#Logging">Logging</a></li><li><a href="#Access_Logs">Access Logs</a></li><li><a href="#Lifecycle_Listeners">Lifecycle Listeners</a></li><li><a href="#Request_Filters">Request Filters</a></li></ol></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -25,40 +100,55 @@
     <p>All implementations of <strong>Engine</strong>

     support the following attributes:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>backgroundProcessorDelay</code></td><td align="left" valign="center">

-        <p>This value represents the delay in seconds between the 

-        invocation of the backgroundProcess method on this engine and 

-        its child containers, including all hosts and contexts. 

-        Child containers will not be invoked if their delay value is not 

-        negative (which would mean they are using their own processing 

-        thread). Setting this to a positive value will cause 

-        a thread to be spawn. After waiting the specified amount of time, 

-        the thread will invoke the backgroundProcess method on this engine 

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">backgroundProcessorDelay</code></td><td align="left" valign="center">

+        <p>This value represents the delay in seconds between the

+        invocation of the backgroundProcess method on this engine and

+        its child containers, including all hosts and contexts.

+        Child containers will not be invoked if their delay value is not

+        negative (which would mean they are using their own processing

+        thread). Setting this to a positive value will cause

+        a thread to be spawn. After waiting the specified amount of time,

+        the thread will invoke the backgroundProcess method on this engine

         and all its child containers. If not specified, the default value for

         this attribute is 10, which represent a 10 seconds delay.</p>

-      </td></tr><tr><td align="left" valign="center"><code>className</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">className</code></td><td align="left" valign="center">

         <p>Java class name of the implementation to use.  This class must

         implement the <code>org.apache.catalina.Engine</code> interface.

         If not specified, the standard value (defined below) will be used.</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>defaultHost</code></strong></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">defaultHost</code></strong></td><td align="left" valign="center">

         <p>The default host name, which identifies the

         <a href="host.html">Host</a> that will process requests directed

         to host names on this server, but which are not configured in

         this configuration file.  This name MUST match the <code>name</code>

         attributes of one of the <a href="host.html">Host</a> elements

         nested immediately inside.</p>

-      </td></tr><tr><td align="left" valign="center"><code>jvmRoute</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">jvmRoute</code></td><td align="left" valign="center">

         <p>Identifier which must be used in load balancing scenarios to enable

         session affinity. The identifier, which must be unique across all

-        Tomcat 6 servers which participate in the cluster, will be appended to

+        Tomcat servers which participate in the cluster, will be appended to

         the generated session identifier, therefore allowing the front end

-        proxy to always forward a particular session to the same Tomcat 6

+        proxy to always forward a particular session to the same Tomcat

         instance.</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>name</code></strong></td><td align="left" valign="center">

+        <p>

+            Note that the <code>jvmRoute</code> can also be set using the

+            <code>jvmRoute</code> system property. The <code>jvmRoute</code>

+            set in an <code>&lt;Engine&gt;</code> attribute will override

+            any <code>jvmRoute</code> system property.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">name</code></strong></td><td align="left" valign="center">

         <p>Logical name of this Engine, used in log and error messages. <em>When

         using multiple <a href="service.html">Service</a> elements in the same

         <a href="server.html">Server</a>, each Engine MUST be assigned a unique

         name.</em></p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">startStopThreads</code></td><td align="left" valign="center">

+        <p>The number of threads this <strong>Engine</strong> will use to start

+        child <a href="host.html">Host</a> elements in parallel. The special

+        value of 0 will result in the value of

+        <code>Runtime.getRuntime().availableProcessors()</code> being used.

+        Negative values will result in

+        <code>Runtime.getRuntime().availableProcessors() + value</code> being

+        used unless this is less than 1 in which case 1 thread will be used. If

+        not specified, the default value of 1 will be used. </p>

       </td></tr></table>

 

   </blockquote></td></tr></table>

@@ -102,7 +192,7 @@
 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Logging"><strong>Logging</strong></a></font></td></tr><tr><td><blockquote>

 

-    <p>An engine is associated with the 

+    <p>An engine is associated with the

        <code>org.apache.catalina.core.ContainerBase.[enginename]</code>

        log category.  Note that the brackets are actually part of the name,

        don't omit them.</p>

@@ -124,17 +214,15 @@
     <a href="host.html">Host</a>, or <a href="context.html">Context</a>

     by nesting a <a href="valve.html">Valve</a> element like this:</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;Engine name="Standalone" ...&gt;

+<div class="codeBox"><pre><code>&lt;Engine name="Standalone" ...&gt;

   ...

   &lt;Valve className="org.apache.catalina.valves.AccessLogValve"

          prefix="catalina_access_log." suffix=".txt"

          pattern="common"/&gt;

   ...

-&lt;/Engine&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/Engine&gt;</code></pre></div>

 

-    <p>See <a href="valve.html#Access Log Valve">Access Log Valve</a>

+    <p>See <a href="valve.html#Access_Logging">Access Logging Valves</a>

     for more information on the configuration attributes that are

     supported.</p>

 

@@ -151,13 +239,11 @@
     it will be notified about the occurrence of the corresponding

     lifecycle events.  Configuration of such a listener looks like this:</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;Engine name="Standalone" ...&gt;

+<div class="codeBox"><pre><code>&lt;Engine name="Standalone" ...&gt;

   ...

   &lt;Listener className="com.mycompany.mypackage.MyListener" ... &gt;

   ...

-&lt;/Engine&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/Engine&gt;</code></pre></div>

 

     <p>Note that a Listener can have any number of additional properties

     that may be configured from this element.  Attribute names are matched

@@ -173,30 +259,53 @@
     incoming request directed to the surrounding

     <a href="engine.html">Engine</a>, <a href="host.html">Host</a>, or

     <a href="context.html">Context</a> element.  The remote address or name

-    will be checked against a configured list of "accept" and/or "deny"

+    will be checked against configured "accept" and/or "deny"

     filters, which are defined using <code>java.util.regex</code> Regular

     Expression syntax.  Requests that come from locations that are

     not accepted will be rejected with an HTTP "Forbidden" error.

     Example filter declarations:</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;Engine name="Standalone" ...&gt;

+<div class="codeBox"><pre><code>&lt;Engine name="Standalone" ...&gt;

   ...

   &lt;Valve className="org.apache.catalina.valves.RemoteHostValve"

          allow=".*\.mycompany\.com|www\.yourcompany\.com"/&gt;

   &lt;Valve className="org.apache.catalina.valves.RemoteAddrValve"

          deny="192\.168\.1\.\d+"/&gt;

   ...

-&lt;/Engine&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/Engine&gt;</code></pre></div>

 

-  <p>See <a href="valve.html#Remote Address Filter">Remote Address Filter</a>

-  and <a href="valve.html#Remote Host Filter">Remote Host Filter</a> for

+  <p>See <a href="valve.html#Remote_Address_Filter">Remote Address Filter</a>

+  and <a href="valve.html#Remote_Host_Filter">Remote Host Filter</a> for

   more information about the configuration options that are supported.</p>

 

   </blockquote></td></tr></table>

 

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/config/engine.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/config/executor.html b/tomcat-uid/webapps/docs/config/executor.html
index f0b9a32..299186e 100644
--- a/tomcat-uid/webapps/docs/config/executor.html
+++ b/tomcat-uid/webapps/docs/config/executor.html
@@ -1,20 +1,95 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat Configuration Reference (6.0.41) - The Executor (thread pool)</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.77) - The Executor (thread pool)</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

     The Apache Tomcat Servlet/JSP Container

-  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat Configuration Reference</h1><h2>The Executor (thread pool)</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="sessionidgenerator.html">SessionIdGenerator</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Executor (thread pool)</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#Standard_Implementation">Standard Implementation</a></li></ol></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

-  <p>The <strong>Executor</strong> represents a thread pool that can be shared 

+  <p>The <strong>Executor</strong> represents a thread pool that can be shared

      between components in Tomcat. Historically there has been a thread pool per

-     connector created but this allows you to share a thread pool, between (primarly) connector

+     connector created but this allows you to share a thread pool, between (primarily) connector

      but also other components when those get configured to support executors</p>

 

 

   <p>The executor has to implement the <code>org.apache.catalina.Executor</code> interface.</p>

-  

+

   <p>The executor is a nested element to the <a href="service.html">Service</a> element.

      And in order for it to be picked up by the connectors, the Executor element has to appear

      prior to the Connector element in server.xml</p>

@@ -25,13 +100,13 @@
   <p>All implementations of <strong>Executor</strong>

   support the following attributes:</p>

 

-  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>className</code></td><td align="left" valign="center">

-      <p>The class of the implementation. The implementation has to implement the 

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">className</code></td><td align="left" valign="center">

+      <p>The class of the implementation. The implementation has to implement the

          <code>org.apache.catalina.Executor</code> interface.

          This interface ensures that the object can be referenced through its <code>name</code> attribute

          and that implements Lifecycle, so that it can be started and stopped with the container.

          The default value for the className is <code>org.apache.catalina.core.StandardThreadExecutor</code></p>

-    </td></tr><tr><td align="left" valign="center"><strong><code>name</code></strong></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">name</code></strong></td><td align="left" valign="center">

       <p>The name used to reference this pool in other places in server.xml.

          The name is required and must be unique.</p>

     </td></tr></table>

@@ -43,28 +118,62 @@
   <p>

   The default implementation supports the following attributes:</p>

 

-  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>threadPriority</code></td><td align="left" valign="center">

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">threadPriority</code></td><td align="left" valign="center">

       <p>(int) The thread priority for threads in the executor, the default is

       <code>5</code> (the value of the <code>Thread.NORM_PRIORITY</code> constant)</p>

-    </td></tr><tr><td align="left" valign="center"><code>daemon</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">daemon</code></td><td align="left" valign="center">

       <p>(boolean) Whether the threads should be daemon threads or not, the default is <code>true</code></p>

-    </td></tr><tr><td align="left" valign="center"><code>namePrefix</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">namePrefix</code></td><td align="left" valign="center">

       <p>(String) The name prefix for each thread created by the executor.

          The thread name for an individual thread will be <code>namePrefix+threadNumber</code></p>

-    </td></tr><tr><td align="left" valign="center"><code>maxThreads</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxThreads</code></td><td align="left" valign="center">

       <p>(int) The max number of active threads in this pool, default is <code>200</code></p>

-    </td></tr><tr><td align="left" valign="center"><code>minSpareThreads</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">minSpareThreads</code></td><td align="left" valign="center">

       <p>(int) The minimum number of threads always kept alive, default is <code>25</code></p>

-    </td></tr><tr><td align="left" valign="center"><code>maxIdleTime</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxIdleTime</code></td><td align="left" valign="center">

       <p>(int) The number of milliseconds before an idle thread shutsdown, unless the number of active threads are less

          or equal to minSpareThreads. Default value is <code>60000</code>(1 minute)</p>

-    </td></tr><tr><td align="left" valign="center"><code>maxQueueSize</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxQueueSize</code></td><td align="left" valign="center">

       <p>(int) The maximum number of runnable tasks that can queue up awaiting

         execution before we reject them. Default value is <code>Integer.MAX_VALUE</code></p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">prestartminSpareThreads</code></td><td align="left" valign="center">

+      <p>(boolean) Whether minSpareThreads should be started when starting the Executor or not,

+          the default is <code>false</code></p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">threadRenewalDelay</code></td><td align="left" valign="center">

+      <p>(long) If a <a href="listeners.html">ThreadLocalLeakPreventionListener</a> is configured,

+        it will notify this executor about stopped contexts.

+        After a context is stopped, threads in the pool are renewed. To avoid renewing all threads at the same time,

+        this option sets a delay between renewal of any 2 threads. The value is in ms,

+        default value is <code>1000</code> ms. If value is negative, threads are not renewed.</p>

     </td></tr></table>

 

 

   </blockquote></td></tr></table>

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/config/executor.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/config/filter.html b/tomcat-uid/webapps/docs/config/filter.html
index d4ce1d9..cbb9a28 100644
--- a/tomcat-uid/webapps/docs/config/filter.html
+++ b/tomcat-uid/webapps/docs/config/filter.html
@@ -1,10 +1,85 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat Configuration Reference (6.0.41) - Container Provided Filters</title><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.77) - Container Provided Filters</title><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

     The Apache Tomcat Servlet/JSP Container

-  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat Configuration Reference</h1><h2>Container Provided Filters</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

-<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#CSRF_Prevention_Filter">CSRF Prevention Filter</a><ol><li><a href="#CSRF_Prevention_Filter/Introduction">Introduction</a></li><li><a href="#CSRF_Prevention_Filter/Filter_Class_Name">Filter Class Name</a></li><li><a href="#CSRF_Prevention_Filter/Initialisation_parameters">Initialisation parameters</a></li></ol></li><li><a href="#Set_Character_Encoding_Filter">Set Character Encoding Filter</a><ol><li><a href="#Set_Character_Encoding_Filter/Introduction">Introduction</a></li><li><a href="#Set_Character_Encoding_Filter/Filter_Class_Name">Filter Class Name</a></li><li><a href="#Set_Character_Encoding_Filter/Initialisation_parameters">Initialisation parameters</a></li></ol></li><li><a href="#Failed_Request_Filter">Failed Request Filter</a><ol><li><a href="#Failed_Request_Filter/Introduction">Introduction</a></li><li><a href="#Failed_Request_Filter/Filter_Class_Name">Filter Class Name</a></li><li><a href="#Failed_Request_Filter/Initialisation_parameters">Initialisation parameters</a></li></ol></li></ul>

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="sessionidgenerator.html">SessionIdGenerator</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Container Provided Filters</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Add_Default_Character_Set_Filter">Add Default Character Set Filter</a><ol><li><a href="#Add_Default_Character_Set_Filter/Introduction">Introduction</a></li><li><a href="#Add_Default_Character_Set_Filter/Filter_Class_Name">Filter Class Name</a></li><li><a href="#Add_Default_Character_Set_Filter/Initialisation_parameters">Initialisation parameters</a></li></ol></li><li><a href="#CORS_Filter">CORS Filter</a><ol><li><a href="#CORS_Filter/Introduction">Introduction</a></li><li><a href="#CORS_Filter/Filter_Class_Name">Filter Class Name</a></li><li><a href="#CORS_Filter/Initialisation_parameters">Initialisation parameters</a></li><li><a href="#CORS_Filter_and_HttpServletRequest_attributes">CORS Filter and HttpServletRequest attributes</a></li></ol></li><li><a href="#CSRF_Prevention_Filter">CSRF Prevention Filter</a><ol><li><a href="#CSRF_Prevention_Filter/Introduction">Introduction</a></li><li><a href="#CSRF_Prevention_Filter/Filter_Class_Name">Filter Class Name</a></li><li><a href="#CSRF_Prevention_Filter/Initialisation_parameters">Initialisation parameters</a></li></ol></li><li><a href="#CSRF_Prevention_Filter_for_REST_APIs">CSRF Prevention Filter for REST APIs</a><ol><li><a href="#CSRF_Prevention_Filter_for_REST_APIs/Introduction">Introduction</a></li><li><a href="#CSRF_Prevention_Filter_for_REST_APIs/Basic_configuration_sample">Basic configuration sample</a></li><li><a href="#RestCsrfPreventionFilter_and_HttpServletRequest_parameters">RestCsrfPreventionFilter and HttpServletRequest parameters</a></li><li><a href="#CSRF_Prevention_Filter_for_REST_APIs/Filter_Class_Name">Filter Class Name</a></li><li><a href="#CSRF_Prevention_Filter_for_REST_APIs/Initialisation_parameters">Initialisation parameters</a></li></ol></li><li><a href="#Expires_Filter">Expires Filter</a><ol><li><a href="#Expires_Filter/Introduction">Introduction</a></li><li><a href="#Expires_Filter/Basic_configuration_sample">Basic configuration sample</a></li><li><a href="#Alternate_Syntax">Alternate Syntax</a></li><li><a href="#Expiration_headers_generation_eligibility">Expiration headers generation eligibility</a></li><li><a href="#Expiration_configuration_selection">Expiration configuration selection</a></li><li><a href="#Expires_Filter/Filter_Class_Name">Filter Class Name</a></li><li><a href="#Expires_Filter/Initialisation_parameters">Initialisation parameters</a></li><li><a href="#Troubleshooting">Troubleshooting</a></li></ol></li><li><a href="#Failed_Request_Filter">Failed Request Filter</a><ol><li><a href="#Failed_Request_Filter/Introduction">Introduction</a></li><li><a href="#Failed_Request_Filter/Filter_Class_Name">Filter Class Name</a></li><li><a href="#Failed_Request_Filter/Initialisation_parameters">Initialisation parameters</a></li></ol></li><li><a href="#HTTP_Header_Security_Filter">HTTP Header Security Filter</a><ol><li><a href="#HTTP_Header_Security_Filter/Introduction">Introduction</a></li><li><a href="#HTTP_Header_Security_Filter/Filter_Class_Name">Filter Class Name</a></li><li><a href="#HTTP_Header_Security_Filter/Initialisation_parameters">Initialisation parameters</a></li></ol></li><li><a href="#Remote_Address_Filter">Remote Address Filter</a><ol><li><a href="#Remote_Address_Filter/Introduction">Introduction</a></li><li><a href="#Remote_Address_Filter/Filter_Class_Name">Filter Class Name</a></li><li><a href="#Remote_Address_Filter/Initialisation_parameters">Initialisation parameters</a></li><li><a href="#Example">Example</a></li></ol></li><li><a href="#Remote_Host_Filter">Remote Host Filter</a><ol><li><a href="#Remote_Host_Filter/Introduction">Introduction</a></li><li><a href="#Remote_Host_Filter/Filter_Class_Name">Filter Class Name</a></li><li><a href="#Remote_Host_Filter/Initialisation_parameters">Initialisation parameters</a></li></ol></li><li><a href="#Remote_IP_Filter">Remote IP Filter</a><ol><li><a href="#Remote_IP_Filter/Introduction">Introduction</a></li><li><a href="#Remote_IP_Filter/Filter_Class_Name">Filter Class Name</a></li><li><a href="#Basic_configuration_to_handle_'x-forwarded-for'">Basic configuration to handle 'x-forwarded-for'</a></li><li><a href="#Basic_configuration_to_handle_'x-forwarded-for'_and_'x-forwarded-proto'">Basic configuration to handle 'x-forwarded-for' and 'x-forwarded-proto'</a></li><li><a href="#Advanced_configuration_with_internal_proxies">Advanced configuration with internal proxies</a></li><li><a href="#Advanced_configuration_with_trusted_proxies">Advanced configuration with trusted proxies</a></li><li><a href="#Advanced_configuration_with_internal_and_trusted_proxies">Advanced configuration with internal and trusted proxies</a></li><li><a href="#Advanced_configuration_with_an_untrusted_proxy">Advanced configuration with an untrusted proxy</a></li><li><a href="#Remote_IP_Filter/Initialisation_parameters">Initialisation parameters</a></li></ol></li><li><a href="#Request_Dumper_Filter">Request Dumper Filter</a><ol><li><a href="#Request_Dumper_Filter/Introduction">Introduction</a></li><li><a href="#Request_Dumper_Filter/Filter_Class_Name">Filter Class Name</a></li><li><a href="#Request_Dumper_Filter/Initialisation_parameters">Initialisation parameters</a></li><li><a href="#Sample_Configuration">Sample Configuration</a></li></ol></li><li><a href="#Set_Character_Encoding_Filter">Set Character Encoding Filter</a><ol><li><a href="#Set_Character_Encoding_Filter/Introduction">Introduction</a></li><li><a href="#Set_Character_Encoding_Filter/Filter_Class_Name">Filter Class Name</a></li><li><a href="#Set_Character_Encoding_Filter/Initialisation_parameters">Initialisation parameters</a></li></ol></li><li><a href="#WebDAV_Fix_Filter">WebDAV Fix Filter</a><ol><li><a href="#WebDAV_Fix_Filter/Introduction">Introduction</a></li><li><a href="#WebDAV_Fix_Filter/Filter_Class_Name">Filter Class Name</a></li><li><a href="#WebDAV_Fix_Filter/Initialisation_parameters">Initialisation parameters</a></li></ol></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

   <p>Tomcat provides a number of <strong>Filters</strong> which may be

@@ -13,14 +88,192 @@
   web applications by configuring them in the application's

   <code>WEB-INF/web.xml</code>. Each filter is described below.</p>

 

-    <blockquote><em>

-    <p>This description uses the variable name $CATALINA_BASE to refer the

+    <p><em>This description uses the variable name $CATALINA_BASE to refer the

     base directory against which most relative paths are resolved. If you have

     not configured Tomcat for multiple instances by setting a CATALINA_BASE

     directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME,

-    the directory into which you have installed Tomcat.</p>

-    </em></blockquote>

+    the directory into which you have installed Tomcat.</em></p>

 

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Add Default Character Set Filter"><!--()--></a><a name="Add_Default_Character_Set_Filter"><strong>Add Default Character Set Filter</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Add Default Character Set Filter/Introduction"><!--()--></a><a name="Add_Default_Character_Set_Filter/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The HTTP specification is clear that if no character set is specified for

+    media sub-types of the "text" media type, the ISO-8859-1 character set must

+    be used. However, browsers may attempt to auto-detect the character set.

+    This may be exploited by an attacker to perform an XSS attack. Internet

+    Explorer has this behaviour by default. Other browsers have an option to

+    enable it.</p>

+

+    <p>This filter prevents the attack by explicitly setting a character set.

+    Unless the provided character set is explicitly overridden by the user the

+    browser will adhere to the explicitly set character set, thus preventing the

+    XSS attack.</p>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Add Default Character Set Filter/Filter Class Name"><!--()--></a><a name="Add_Default_Character_Set_Filter/Filter_Class_Name"><strong>Filter Class Name</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The filter class name for the Add Default Character Set Filter is

+    <strong><code>org.apache.catalina.filters.AddDefaultCharsetFilter</code>

+    </strong>.</p>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Add Default Character Set Filter/Initialisation parameters"><!--()--></a><a name="Add_Default_Character_Set_Filter/Initialisation_parameters"><strong>Initialisation parameters</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The Add Default Character Set Filter supports the following initialization

+    parameters:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">encoding</code></td><td align="left" valign="center">

+        <p>Name of the character set which should be set, if no other character set

+        was set explicitly by a Servlet. This parameter has two special values

+        <code>default</code> and <code>system</code>. A value of <code>system</code>

+        uses the JVM wide default character set, which is usually set by locale.

+        A value of <code>default</code> will use <strong>ISO-8859-1</strong>.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="CORS Filter"><!--()--></a><a name="CORS_Filter"><strong>CORS Filter</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="CORS Filter/Introduction"><!--()--></a><a name="CORS_Filter/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+    <p>This filter is an implementation of W3C's CORS (Cross-Origin Resource

+    Sharing) <a href="http://www.w3.org/TR/cors/">specification</a>, which is a

+    mechanism that enables cross-origin requests.</p>

+    <p>The filter works by adding required <code>Access-Control-*</code> headers

+    to HttpServletResponse object. The filter also protects against HTTP

+    response splitting. If request is invalid, or is not permitted, then request

+    is rejected with HTTP status code 403 (Forbidden). A

+    <a href="../images/cors-flowchart.png">flowchart</a> that

+    demonstrates request processing by this filter is available.</p>

+    <p>The minimal configuration required to use this filter is:</p>

+    <div class="codeBox"><pre><code>&lt;filter&gt;

+  &lt;filter-name&gt;CorsFilter&lt;/filter-name&gt;

+  &lt;filter-class&gt;org.apache.catalina.filters.CorsFilter&lt;/filter-class&gt;

+&lt;/filter&gt;

+&lt;filter-mapping&gt;

+  &lt;filter-name&gt;CorsFilter&lt;/filter-name&gt;

+  &lt;url-pattern&gt;/*&lt;/url-pattern&gt;

+&lt;/filter-mapping&gt;</code></pre></div>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="CORS Filter/Filter Class Name"><!--()--></a><a name="CORS_Filter/Filter_Class_Name"><strong>Filter Class Name</strong></a></font></td></tr><tr><td><blockquote>

+    <p>The filter class name for the CORS Filter is

+    <strong><code>org.apache.catalina.filters.CorsFilter</code></strong>.</p>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="CORS Filter/Initialisation parameters"><!--()--></a><a name="CORS_Filter/Initialisation_parameters"><strong>Initialisation parameters</strong></a></font></td></tr><tr><td><blockquote>

+    <p>The CORS Filter supports following initialisation parameters:</p>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">cors.allowed.origins</code></td><td align="left" valign="center">

+        <p>A list of <a href="http://tools.ietf.org/html/rfc6454">origins</a>

+        that are allowed to access the resource. A <code>*</code> can be

+        specified to enable access to resource from any origin. Otherwise, a

+        whitelist of comma separated origins can be provided. Eg: <code>

+        http://www.w3.org, https://www.apache.org</code>.

+        <strong>Defaults:</strong> <code>*</code> (Any origin is allowed to

+        access the resource).</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cors.allowed.methods</code></td><td align="left" valign="center">

+        <p>A comma separated list of HTTP methods that can be used to access the

+        resource, using cross-origin requests. These are the methods which will

+        also be included as part of <code>Access-Control-Allow-Methods</code> 

+        header in pre-flight response. Eg: <code>GET, POST</code>.

+        <strong>Defaults:</strong> <code>GET, POST, HEAD, OPTIONS</code></p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cors.allowed.headers</code></td><td align="left" valign="center">

+        <p>A comma separated list of request headers that can be used when

+        making an actual request. These headers will also be returned as part 

+        of <code>Access-Control-Allow-Headers</code> header in a pre-flight

+        response. Eg: <code>Origin,Accept</code>. <strong>Defaults:</strong>

+        <code>Origin, Accept, X-Requested-With, Content-Type,

+        Access-Control-Request-Method, Access-Control-Request-Headers</code></p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cors.exposed.headers</code></td><td align="left" valign="center">

+        <p>A comma separated list of headers other than simple response headers

+        that browsers are allowed to access. These are the headers which will 

+        also be included as part of <code>Access-Control-Expose-Headers</code> 

+        header in the pre-flight response. Eg:

+        <code>X-CUSTOM-HEADER-PING,X-CUSTOM-HEADER-PONG</code>.

+        <strong>Default:</strong> None. Non-simple headers are not exposed by

+        default.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cors.preflight.maxage</code></td><td align="left" valign="center">

+        <p>The amount of seconds, browser is allowed to cache the result of the

+        pre-flight request. This will be included as part of

+        <code>Access-Control-Max-Age</code> header in the pre-flight response.

+        A negative value will prevent CORS Filter from adding this response

+        header to pre-flight response. <strong>Defaults:</strong>

+        <code>1800</code></p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cors.support.credentials</code></td><td align="left" valign="center">

+        <p>A flag that indicates whether the resource supports user credentials.

+        This flag is exposed as part of

+        <code>Access-Control-Allow-Credentials</code> header in a pre-flight

+        response. It helps browser determine whether or not an actual request

+        can be made using credentials. <strong>Defaults:</strong>

+        <code>true</code></p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cors.request.decorate</code></td><td align="left" valign="center">

+        <p>A flag to control if CORS specific attributes should be added to

+        HttpServletRequest object or not. <strong>Defaults:</strong>

+        <code>true</code></p>

+      </td></tr></table>

+    <p>Here's an example of a more advanced configuration, that overrides

+    defaults:</p>

+    <div class="codeBox"><pre><code>&lt;filter&gt;

+  &lt;filter-name&gt;CorsFilter&lt;/filter-name&gt;

+  &lt;filter-class&gt;org.apache.catalina.filters.CorsFilter&lt;/filter-class&gt;

+  &lt;init-param&gt;

+    &lt;param-name&gt;cors.allowed.origins&lt;/param-name&gt;

+    &lt;param-value&gt;*&lt;/param-value&gt;

+  &lt;/init-param&gt;

+  &lt;init-param&gt;

+    &lt;param-name&gt;cors.allowed.methods&lt;/param-name&gt;

+    &lt;param-value&gt;GET,POST,HEAD,OPTIONS,PUT&lt;/param-value&gt;

+  &lt;/init-param&gt;

+  &lt;init-param&gt;

+    &lt;param-name&gt;cors.allowed.headers&lt;/param-name&gt;

+    &lt;param-value&gt;Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers&lt;/param-value&gt;

+  &lt;/init-param&gt;

+  &lt;init-param&gt;

+    &lt;param-name&gt;cors.exposed.headers&lt;/param-name&gt;

+    &lt;param-value&gt;Access-Control-Allow-Origin,Access-Control-Allow-Credentials&lt;/param-value&gt;

+  &lt;/init-param&gt;

+  &lt;init-param&gt;

+    &lt;param-name&gt;cors.support.credentials&lt;/param-name&gt;

+    &lt;param-value&gt;true&lt;/param-value&gt;

+  &lt;/init-param&gt;

+  &lt;init-param&gt;

+    &lt;param-name&gt;cors.preflight.maxage&lt;/param-name&gt;

+    &lt;param-value&gt;10&lt;/param-value&gt;

+  &lt;/init-param&gt;

+&lt;/filter&gt;

+&lt;filter-mapping&gt;

+  &lt;filter-name&gt;CorsFilter&lt;/filter-name&gt;

+  &lt;url-pattern&gt;/*&lt;/url-pattern&gt;

+&lt;/filter-mapping&gt;</code></pre></div>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="CORS Filter and HttpServletRequest attributes"><!--()--></a><a name="CORS_Filter_and_HttpServletRequest_attributes"><strong>CORS Filter and HttpServletRequest attributes</strong></a></font></td></tr><tr><td><blockquote>

+    <p>CORS Filter adds information about the request, in HttpServletRequest

+    object, for consumption downstream. Following attributes are set, if

+    <code>cors.request.decorate</code> initialisation parameter is

+    <code>true</code>:</p>

+    <ul>

+      <li><strong>cors.isCorsRequest:</strong> Flag to determine if request is

+          a CORS request.</li>

+      <li><strong>cors.request.origin:</strong> The Origin URL, i.e. the URL of

+          the page from where the request originated.</li>

+      <li><strong>cors.request.type:</strong> Type of CORS request. Possible

+          values:

+        <ul>

+          <li><code>SIMPLE</code>: A request which is not preceded by a

+              pre-flight request.</li>

+          <li><code>ACTUAL</code>: A request which is preceded by a pre-flight

+              request.</li>

+          <li><code>PRE_FLIGHT</code>: A pre-flight request.</li>

+          <li><code>NOT_CORS</code>: A normal same-origin request.</li>

+          <li><code>INVALID_CORS</code>: A cross-origin request, which is

+              invalid.</li>

+        </ul>

+      </li>

+      <li><strong>cors.request.headers:</strong> Request headers sent as

+          <code>Access-Control-Request-Headers</code> header, for a pre-flight 

+          request.

+      </li>

+    </ul>

+  </blockquote></td></tr></table>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="CSRF Prevention Filter"><!--()--></a><a name="CSRF_Prevention_Filter"><strong>CSRF Prevention Filter</strong></a></font></td></tr><tr><td><blockquote>

 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="CSRF Prevention Filter/Introduction"><!--()--></a><a name="CSRF_Prevention_Filter/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

@@ -30,12 +283,12 @@
     returned to the client are encoded via a call to

     <code>HttpServletResponse#encodeRedirectURL(String)</code> or

     <code>HttpServletResponse#encodeURL(String)</code>.</p>

-    

+

     <p>This filter prevents CSRF by generating a nonce and storing it in the

     session. URLs are also encoded with the same nonce. When the next request is

     received the nonce in the request is compared to the nonce in the session

     and only if they are the same is the request allowed to continue.</p>

-    

+

   </blockquote></td></tr></table>

 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="CSRF Prevention Filter/Filter Class Name"><!--()--></a><a name="CSRF_Prevention_Filter/Filter_Class_Name"><strong>Filter Class Name</strong></a></font></td></tr><tr><td><blockquote>

@@ -51,69 +304,507 @@
     <p>The CSRF Prevention Filter supports the following initialisation

     parameters:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>entryPoints</code></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">denyStatus</code></td><td align="left" valign="center">

+        <p>HTTP response status code that is used when rejecting denied

+        request. The default value is <code>403</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">entryPoints</code></td><td align="left" valign="center">

         <p>A comma separated list of URLs that will not be tested for the

         presence of a valid nonce. They are used to provide a way to navigate

         back to a protected application after having navigated away from it.

         Entry points will be limited to HTTP GET requests and should not trigger

         any security sensitive actions.</p>

-      </td></tr><tr><td align="left" valign="center"><code>nonceCacheSize</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">nonceCacheSize</code></td><td align="left" valign="center">

         <p>The number of previously issued nonces that will be cached on a LRU

         basis to support parallel requests, limited use of the refresh and back

         in the browser and similar behaviors that may result in the submission

         of a previous nonce rather than the current one. If not set, the default

         value of 5 will be used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>randomClass</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">randomClass</code></td><td align="left" valign="center">

         <p>The name of the class to use to generate nonces. The class must be an

         instance of <code>java.util.Random</code>. If not set, the default value

         of <code>java.security.SecureRandom</code> will be used.</p>

       </td></tr></table>

-    

-  </blockquote></td></tr></table>

-

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Set Character Encoding Filter"><!--()--></a><a name="Set_Character_Encoding_Filter"><strong>Set Character Encoding Filter</strong></a></font></td></tr><tr><td><blockquote>

-

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Set Character Encoding Filter/Introduction"><!--()--></a><a name="Set_Character_Encoding_Filter/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

-

-    <p>User agents don't always include character encoding information in

-    requests. Depending on the how the request is processed, usually the

-    default encoding of ISO-8859-1 is used. This is not always

-    desirable. This filter provides options for setting that encoding or

-    forcing it to a particular value. Essentially this filter calls

-    <code>ServletRequest.setCharacterEncoding()</code> method.</p>

-

-    <p>Effectively the value set by this filter is used when parsing parameters

-    in a POST request, if parameter parsing occurs later than this filter. Thus

-    the order of filter mappings is important. Note that the encoding for GET

-    requests is not set here, but on a <strong>Connector</strong>. See

-    CharacterEncoding page in the FAQ for details.</p>

 

   </blockquote></td></tr></table>

 

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Set Character Encoding Filter/Filter Class Name"><!--()--></a><a name="Set_Character_Encoding_Filter/Filter_Class_Name"><strong>Filter Class Name</strong></a></font></td></tr><tr><td><blockquote>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="CSRF Prevention Filter for REST APIs"><!--()--></a><a name="CSRF_Prevention_Filter_for_REST_APIs"><strong>CSRF Prevention Filter for REST APIs</strong></a></font></td></tr><tr><td><blockquote>

 

-    <p>The filter class name for the Set Character Encoding Filter is

-    <strong><code>org.apache.catalina.filters.SetCharacterEncodingFilter</code></strong>.</p>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="CSRF Prevention Filter for REST APIs/Introduction"><!--()--></a><a name="CSRF_Prevention_Filter_for_REST_APIs/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>This filter provides basic CSRF protection for REST APIs. The CSRF

+    protection is applied only for modifying HTTP requests (different from GET,

+    HEAD, OPTIONS) to protected resources. It is based on a custom header

+    <code>X-CSRF-Token</code> that provides a valid nonce.</p>

+

+    <p>CSRF protection mechanism for REST APIs consists of the following steps:

+      <ul>

+        <li>Client asks for a valid nonce. This is performed with a

+            non-modifying "Fetch" request to protected resource.</li>

+        <li>Server responds with a valid nonce mapped to the current user

+            session.</li>

+        <li>Client provides this nonce in the subsequent modifying requests in

+            the frame of the same user session.</li>

+        <li>Server rejects all modifying requests to protected resources that

+            do not contain a valid nonce.</li>

+      </ul>

+    </p>

 

   </blockquote></td></tr></table>

 

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Set Character Encoding Filter/Initialisation parameters"><!--()--></a><a name="Set_Character_Encoding_Filter/Initialisation_parameters"><strong>Initialisation parameters</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="CSRF Prevention Filter for REST APIs/Basic configuration sample"><!--()--></a><a name="CSRF_Prevention_Filter_for_REST_APIs/Basic_configuration_sample"><strong>Basic configuration sample</strong></a></font></td></tr><tr><td><blockquote>

 

-    <p>The Set Character Encoding Filter supports the following initialization

-    parameters:</p>

+    <p>On the server side</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>encoding</code></strong></td><td align="left" valign="center">

-        <p>Name of the character encoding which should be set.</p>

-      </td></tr><tr><td align="left" valign="center"><code>ignore</code></td><td align="left" valign="center">

-        <p>Determines if any character encoding specified by the user agent is

-        ignored. If this attribute is <code>true</code>, any value provided by

-        the user agent is ignored. If <code>false</code>, the encoding is only

-        set if the user agent did not specify an encoding. The default value

-        is <code>false</code>.</p>

+    <ul>

+      <li>All CSRF protected REST APIs should be protected with an authentication

+          mechanism.</li>

+      <li>Protect modifying REST APIs with this filter.</li>

+      <li>Provide at least one non-modifying operation.</li>

+    </ul>

+      <div class="codeBox"><pre><code>&lt;filter&gt;

+  &lt;filter-name&gt;RestCSRF&lt;/filter-name&gt;

+  &lt;filter-class&gt;org.apache.catalina.filters.RestCsrfPreventionFilter&lt;/filter-class&gt;

+&lt;/filter&gt;

+&lt;filter-mapping&gt;

+  &lt;filter-name&gt;RestCSRF&lt;/filter-name&gt;

+  &lt;!-- Modifying operations --&gt;

+  &lt;url-pattern&gt;/resources/removeResource&lt;/url-pattern&gt;

+  &lt;url-pattern&gt;/resources/addResource&lt;/url-pattern&gt;

+  &lt;!-- Non-modifying operations --&gt;

+  &lt;url-pattern&gt;/resources/listResources&lt;/url-pattern&gt;

+&lt;/filter-mapping&gt;</code></pre></div>

+

+    <p>On the client side</p>

+

+    <ul>

+      <li>Make a non-modifying "Fetch" request in order to obtain a valid nonce.

+          This can be done with sending additional header

+          <code>X-CSRF-Token: Fetch</code></li>

+      <li>Cache the returned session id and nonce in order to provide them in

+          the subsequent modifying requests to protected resources.</li>

+      <li>Modifying requests can be denied and header

+          <code>X-CSRF-Token: Required</code> will be returned in case of

+          invalid or missing nonce, expired session or in case the session

+          id is changed by the server.</li>

+    </ul>

+      <div class="codeBox"><pre><code>Client Request:

+GET /rest/resources/listResources HTTP/1.1

+X-CSRF-Token: Fetch

+Authorization: Basic ...

+Host: localhost:8080

+...

+

+Server Response:

+HTTP/1.1 200 OK

+Set-Cookie: JSESSIONID=...; Path=/rest; HttpOnly

+X-CSRF-Token: ...

+...

+

+Client Request:

+POST /rest/resources/addResource HTTP/1.1

+Cookie: JSESSIONID=...

+X-CSRF-Token: ...

+Authorization: Basic ...

+Host: localhost:8080

+...

+

+Server Response:

+HTTP/1.1 200 OK

+...</code></pre></div>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="RestCsrfPreventionFilter and HttpServletRequest parameters"><!--()--></a><a name="RestCsrfPreventionFilter_and_HttpServletRequest_parameters"><strong>RestCsrfPreventionFilter and HttpServletRequest parameters</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>When the client is not able to insert custom headers in its calls to

+       REST APIs there is additional capability to configure URLs for which a

+       valid nonce will be accepted as a request parameter.</p>

+

+    <p>Note: If there is a <code>X-CSRF-Token</code> header, it will be taken

+       with preference over any parameter with the same name in the request.

+       Request parameters cannot be used to fetch new nonce, only header can be

+       used to request a new nonce.</p>

+

+    <div class="codeBox"><pre><code>&lt;filter&gt;

+  &lt;filter-name&gt;RestCSRF&lt;/filter-name&gt;

+  &lt;filter-class&gt;org.apache.catalina.filters.RestCsrfPreventionFilter&lt;/filter-class&gt;

+  &lt;init-param&gt;

+    &lt;param-name&gt;pathsAcceptingParams&lt;/param-name&gt;

+    &lt;param-value&gt;/resources/removeResource,/resources/addResource&lt;/param-value&gt;

+  &lt;/init-param&gt;

+&lt;/filter&gt;

+&lt;filter-mapping&gt;

+  &lt;filter-name&gt;RestCSRF&lt;/filter-name&gt;

+  &lt;url-pattern&gt;/resources/*&lt;/url-pattern&gt;

+&lt;/filter-mapping&gt;</code></pre></div>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="CSRF Prevention Filter for REST APIs/Filter Class Name"><!--()--></a><a name="CSRF_Prevention_Filter_for_REST_APIs/Filter_Class_Name"><strong>Filter Class Name</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The filter class name for the CSRF Prevention Filter for REST APIs is

+    <strong><code>org.apache.catalina.filters.RestCsrfPreventionFilter</code>

+    </strong>.</p>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="CSRF Prevention Filter for REST APIs/Initialisation parameters"><!--()--></a><a name="CSRF_Prevention_Filter_for_REST_APIs/Initialisation_parameters"><strong>Initialisation parameters</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The CSRF Prevention Filter for REST APIs supports the following

+    initialisation parameters:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">denyStatus</code></td><td align="left" valign="center">

+        <p>HTTP response status code that is used when rejecting denied

+        request. The default value is <code>403</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">pathsAcceptingParams</code></td><td align="left" valign="center">

+        <p>A comma separated list of URLs that can accept nonces via request

+        parameter <code>X-CSRF-Token</code>. For use cases when a nonce information cannot

+        be provided via header, one can provide it via request parameters. If

+        there is a <code>X-CSRF-Token</code> header, it will be taken with preference over

+        any parameter with the same name in the request. Request parameters

+        cannot be used to fetch new nonce, only header can be used to request a

+        new nonce.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">randomClass</code></td><td align="left" valign="center">

+        <p>The name of the class to use to generate nonces. The class must be an

+        instance of <code>java.util.Random</code>. If not set, the default value

+        of <code>java.security.SecureRandom</code> will be used.</p>

       </td></tr></table>

 

   </blockquote></td></tr></table>

 

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Expires Filter"><!--()--></a><a name="Expires_Filter"><strong>Expires Filter</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Expires Filter/Introduction"><!--()--></a><a name="Expires_Filter/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>

+    ExpiresFilter is a Java Servlet API port of <a href="http://httpd.apache.org/docs/2.2/mod/mod_expires.html">Apache

+    mod_expires</a>.

+    This filter controls the setting of the <code>Expires</code> HTTP header and the

+    <code>max-age</code> directive of the <code>Cache-Control</code> HTTP header in

+    server responses. The expiration date can set to be relative to either the

+    time the source file was last modified, or to the time of the client access.

+    </p>

+

+    <p>

+    These HTTP headers are an instruction to the client about the document's

+    validity and persistence. If cached, the document may be fetched from the

+    cache rather than from the source until this time has passed. After that, the

+    cache copy is considered "expired" and invalid, and a new copy must

+    be obtained from the source.

+    </p>

+    <p>

+    To modify <code>Cache-Control</code> directives other than <code>max-age</code> (see

+    <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9">RFC

+    2616 section 14.9</a>), you can use other servlet filters or <a href="http://httpd.apache.org/docs/2.2/mod/mod_headers.html">Apache Httpd

+    mod_headers</a> module.

+    </p>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Expires Filter/Basic configuration sample"><!--()--></a><a name="Expires_Filter/Basic_configuration_sample"><strong>Basic configuration sample</strong></a></font></td></tr><tr><td><blockquote>

+    <p>

+    Basic configuration to add '<code>Expires</code>' and '<code>Cache-Control: max-age=</code>'

+    headers to images, css and javascript.

+    </p>

+

+    <div class="codeBox"><pre><code>&lt;filter&gt;

+ &lt;filter-name&gt;ExpiresFilter&lt;/filter-name&gt;

+ &lt;filter-class&gt;org.apache.catalina.filters.ExpiresFilter&lt;/filter-class&gt;

+ &lt;init-param&gt;

+    &lt;param-name&gt;ExpiresByType image&lt;/param-name&gt;

+    &lt;param-value&gt;access plus 10 minutes&lt;/param-value&gt;

+ &lt;/init-param&gt;

+ &lt;init-param&gt;

+    &lt;param-name&gt;ExpiresByType text/css&lt;/param-name&gt;

+    &lt;param-value&gt;access plus 10 minutes&lt;/param-value&gt;

+ &lt;/init-param&gt;

+ &lt;init-param&gt;

+    &lt;param-name&gt;ExpiresByType application/javascript&lt;/param-name&gt;

+    &lt;param-value&gt;access plus 10 minutes&lt;/param-value&gt;

+ &lt;/init-param&gt;

+&lt;/filter&gt;

+...

+&lt;filter-mapping&gt;

+ &lt;filter-name&gt;ExpiresFilter&lt;/filter-name&gt;

+ &lt;url-pattern&gt;/*&lt;/url-pattern&gt;

+ &lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt;

+&lt;/filter-mapping&gt;</code></pre></div>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Alternate Syntax"><!--()--></a><a name="Alternate_Syntax"><strong>Alternate Syntax</strong></a></font></td></tr><tr><td><blockquote>

+    <p>

+    The <code>ExpiresDefault</code> and <code>ExpiresByType</code> directives can also be

+    defined in a more readable syntax of the form:

+    </p>

+

+    <div class="codeBox"><pre><code>&lt;init-param&gt;

+ &lt;param-name&gt;ExpiresDefault&lt;/param-name&gt;

+ &lt;param-value&gt;&lt;base&gt; [plus] {&lt;num&gt; &lt;type&gt;}*&lt;/param-value&gt;

+&lt;/init-param&gt;

+

+&lt;init-param&gt;

+ &lt;param-name&gt;ExpiresByType type&lt;/param-name&gt;

+ &lt;param-value&gt;&lt;base&gt; [plus] {&lt;num&gt; &lt;type&gt;}*&lt;/param-value&gt;

+&lt;/init-param&gt;

+

+&lt;init-param&gt;

+ &lt;param-name&gt;ExpiresByType type;encoding&lt;/param-name&gt;

+ &lt;param-value&gt;&lt;base&gt; [plus] {&lt;num&gt; &lt;type&gt;}*&lt;/param-value&gt;

+&lt;/init-param&gt;</code></pre></div>

+    <p>

+    where <code>&lt;base&gt;</code> is one of:

+    </p>

+    <ul>

+    <li><code>access</code></li>

+    <li><code>now</code> (equivalent to '<code>access</code>')</li>

+    <li><code>modification</code></li>

+    </ul>

+

+    <p>

+    The <code>plus</code> keyword is optional. <code>&lt;num&gt;</code> should be an

+    integer value (acceptable to <code>Integer.parseInt()</code>), and

+    <code>&lt;type&gt;</code> is one of:

+    </p>

+    <ul>

+    <li><code>year</code>, <code>years</code></li>

+    <li><code>month</code>, <code>months</code></li>

+    <li><code>week</code>, <code>weeks</code></li>

+    <li><code>day</code>, <code>days</code></li>

+    <li><code>hour</code>, <code>hours</code></li>

+    <li><code>minute</code>, <code>minutes</code></li>

+    <li><code>second</code>, <code>seconds</code></li>

+    </ul>

+    <p>

+    For example, any of the following directives can be used to make documents

+    expire 1 month after being accessed, by default:

+    </p>

+

+    <div class="codeBox"><pre><code>&lt;init-param&gt;

+ &lt;param-name&gt;ExpiresDefault&lt;/param-name&gt;

+ &lt;param-value&gt;access plus 1 month&lt;/param-value&gt;

+&lt;/init-param&gt;

+

+&lt;init-param&gt;

+ &lt;param-name&gt;ExpiresDefault&lt;/param-name&gt;

+ &lt;param-value&gt;access plus 4 weeks&lt;/param-value&gt;

+&lt;/init-param&gt;

+

+&lt;init-param&gt;

+ &lt;param-name&gt;ExpiresDefault&lt;/param-name&gt;

+ &lt;param-value&gt;access plus 30 days&lt;/param-value&gt;

+&lt;/init-param&gt;</code></pre></div>

+<p>

+The expiry time can be fine-tuned by adding several

+'<code>&lt;num&gt; &lt;type&gt;</code>' clauses:

+</p>

+

+<div class="codeBox"><pre><code>&lt;init-param&gt;

+ &lt;param-name&gt;ExpiresByType text/html&lt;/param-name&gt;

+ &lt;param-value&gt;access plus 1 month 15 days 2 hours&lt;/param-value&gt;

+&lt;/init-param&gt;

+

+&lt;init-param&gt;

+ &lt;param-name&gt;ExpiresByType image/gif&lt;/param-name&gt;

+ &lt;param-value&gt;modification plus 5 hours 3 minutes&lt;/param-value&gt;

+&lt;/init-param&gt;</code></pre></div>

+    <p>

+    Note that if you use a modification date based setting, the <code>Expires</code>

+    header will <strong>not</strong> be added to content that does not come from

+    a file on disk. This is due to the fact that there is no modification time

+    for such content.

+    </p>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Expiration headers generation eligibility"><!--()--></a><a name="Expiration_headers_generation_eligibility"><strong>Expiration headers generation eligibility</strong></a></font></td></tr><tr><td><blockquote>

+    <p>

+    A response is eligible to be enriched by <code>ExpiresFilter</code> if :

+    </p>

+    <ol>

+    <li>no expiration header is defined (<code>Expires</code> header or the

+    <code>max-age</code> directive of the <code>Cache-Control</code> header),</li>

+    <li>the response status code is not excluded by the directive

+    <code>ExpiresExcludedResponseStatusCodes</code>,</li>

+    <li>the <code>Content-Type</code> of the response matches one of the types

+    defined the in <code>ExpiresByType</code> directives or the

+    <code>ExpiresDefault</code> directive is defined.</li>

+    </ol>

+

+    <p>

+    Note : If <code>Cache-Control</code> header contains other directives than

+    <code>max-age</code>, they are concatenated with the <code>max-age</code> directive

+    that is added by the <code>ExpiresFilter</code>.

+    </p>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Expiration configuration selection"><!--()--></a><a name="Expiration_configuration_selection"><strong>Expiration configuration selection</strong></a></font></td></tr><tr><td><blockquote>

+    <p>

+    The expiration configuration if elected according to the following algorithm:

+    </p>

+    <ol>

+    <li><code>ExpiresByType</code> matching the exact content-type returned by

+    <code>HttpServletResponse.getContentType()</code> possibly including the charset

+    (e.g. '<code>text/xml;charset=UTF-8</code>'),</li>

+    <li><code>ExpiresByType</code> matching the content-type without the charset if

+    <code>HttpServletResponse.getContentType()</code> contains a charset (e.g.

+    '<code>text/xml;charset=UTF-8</code>' -&gt; '<code>text/xml</code>'),</li>

+    <li><code>ExpiresByType</code> matching the major type (e.g. substring before

+    '<code>/</code>') of <code>HttpServletResponse.getContentType()</code>

+    (e.g. '<code>text/xml;charset=UTF-8</code>' -&gt; '<code>text</code>'),</li>

+    <li><code>ExpiresDefault</code></li>

+    </ol>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Expires Filter/Filter Class Name"><!--()--></a><a name="Expires_Filter/Filter_Class_Name"><strong>Filter Class Name</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The filter class name for the Expires Filter is

+    <strong><code>org.apache.catalina.filters.ExpiresFilter</code>

+    </strong>.</p>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Expires Filter/Initialisation parameters"><!--()--></a><a name="Expires_Filter/Initialisation_parameters"><strong>Initialisation parameters</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Expires Filter</strong> supports the following

+    initialisation parameters:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">ExpiresExcludedResponseStatusCodes</code></td><td align="left" valign="center">

+         <p>

+         This directive defines the http response status codes for which the

+         <code>ExpiresFilter</code> will not generate expiration headers. By default, the

+         <code>304</code> status code ("<code>Not modified</code>") is skipped. The

+         value is a comma separated list of http status codes.

+         </p>

+         <p>

+         This directive is useful to ease usage of <code>ExpiresDefault</code> directive.

+         Indeed, the behavior of <code>304 Not modified</code> (which does specify a

+         <code>Content-Type</code> header) combined with <code>Expires</code> and

+         <code>Cache-Control:max-age=</code> headers can be unnecessarily tricky to

+         understand.

+         </p>

+         <p><i>See sample below the table</i></p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">ExpiresByType &lt;content-type&gt;</code></td><td align="left" valign="center">

+         <p>

+         This directive defines the value of the <code>Expires</code> header and the

+         <code>max-age</code> directive of the <code>Cache-Control</code> header generated for

+         documents of the specified type (<i>e.g.</i>, <code>text/html</code>). The second

+         argument sets the number of seconds that will be added to a base time to

+         construct the expiration date. The <code>Cache-Control: max-age</code> is

+         calculated by subtracting the request time from the expiration date and

+         expressing the result in seconds.

+         </p>

+         <p>

+         The base time is either the last modification time of the file, or the time

+         of the client's access to the document. Which should be used is

+         specified by the <code>&lt;code&gt;</code> field; <code>M</code> means that the

+         file's last modification time should be used as the base time, and

+         <code>A</code> means the client's access time should be used. The duration

+         is expressed in seconds. <code>A2592000</code> stands for

+         <code>access plus 30 days</code> in alternate syntax.

+         </p>

+         <p>

+         The difference in effect is subtle. If <code>M</code> (<code>modification</code> in

+         alternate syntax) is used, all current copies of the document in all caches

+         will expire at the same time, which can be good for something like a weekly

+         notice that's always found at the same URL. If <code>A</code> (

+         <code>access</code> or <code>now</code> in alternate syntax) is used, the date of

+         expiration is different for each client; this can be good for image files

+         that don't change very often, particularly for a set of related

+         documents that all refer to the same images (<i>i.e.</i>, the images will be

+         accessed repeatedly within a relatively short timespan).

+         </p>

+         <p>

+         <strong>Note:</strong> When the content type includes a charset (e.g.

+         <code>'ExpiresByType text/xml;charset=utf-8'</code>), Tomcat removes blank chars

+         between the '<code>;</code>' and the '<code>charset</code>' keyword. Due to this,

+         configuration of an expiration with a charset must <strong>not</strong> include

+         such a space character.

+         </p>

+         <p><i>See sample below the table</i></p>

+         <p>

+         It overrides, for the specified MIME type <i>only</i>, any

+         expiration date set by the <code>ExpiresDefault</code> directive.

+         </p>

+         <p>

+         You can also specify the expiration time calculation using an alternate

+         syntax, described earlier in this document.

+         </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">ExpiresDefault</code></td><td align="left" valign="center">

+         <p>

+         This directive sets the default algorithm for calculating the

+         expiration time for all documents in the affected realm. It can be

+         overridden on a type-by-type basis by the <code>ExpiresByType</code> directive. See the

+         description of that directive for details about the syntax of the

+         argument, and the "alternate syntax"

+         description as well.

+         </p>

+      </td></tr></table>

+

+    <p><i>Sample: exclude response status codes 302, 500 and 503</i></p>

+

+<div class="codeBox"><pre><code>&lt;init-param&gt;

+ &lt;param-name&gt;ExpiresExcludedResponseStatusCodes&lt;/param-name&gt;

+ &lt;param-value&gt;302, 500, 503&lt;/param-value&gt;

+&lt;/init-param&gt;</code></pre></div>

+

+    <p><i>Sample for ExpiresByType initialization parameter</i></p>

+

+         <div class="codeBox"><pre><code>&lt;init-param&gt;

+   &lt;param-name&gt;ExpiresByType text/html&lt;/param-name&gt;

+   &lt;param-value&gt;access plus 1 month 15   days 2 hours&lt;/param-value&gt;

+&lt;/init-param&gt;

+

+&lt;init-param&gt;

+   &lt;!-- 2592000 seconds = 30 days --&gt;

+   &lt;param-name&gt;ExpiresByType image/gif&lt;/param-name&gt;

+   &lt;param-value&gt;A2592000&lt;/param-value&gt;

+&lt;/init-param&gt;</code></pre></div>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Troubleshooting"><strong>Troubleshooting</strong></a></font></td></tr><tr><td><blockquote>

+    <p>

+    To troubleshoot, enable logging on the

+    <code>org.apache.catalina.filters.ExpiresFilter</code>.

+    </p>

+    <p>

+    Extract of logging.properties

+    </p>

+

+    <div class="codeBox"><pre><code>org.apache.catalina.filters.ExpiresFilter.level = FINE    </code></pre></div>

+    <p>

+    Sample of initialization log message:

+    </p>

+

+    <div class="codeBox"><pre><code>Mar 26, 2010 2:01:41 PM org.apache.catalina.filters.ExpiresFilter init

+FINE: Filter initialized with configuration ExpiresFilter[

+ excludedResponseStatusCode=[304],

+ default=null,

+ byType={

+    image=ExpiresConfiguration[startingPoint=ACCESS_TIME, duration=[10 MINUTE]],

+    text/css=ExpiresConfiguration[startingPoint=ACCESS_TIME, duration=[10 MINUTE]],

+    text/javascript=ExpiresConfiguration[startingPoint=ACCESS_TIME, duration=[10 MINUTE]]}]</code></pre></div>

+    <p>

+    Sample of per-request log message where <code>ExpiresFilter</code> adds an

+    expiration date is below. The message is on one line and is wrapped here

+    for better readability.

+    </p>

+

+    <div class="codeBox"><pre><code>Mar 26, 2010 2:09:47 PM org.apache.catalina.filters.ExpiresFilter onBeforeWriteResponseBody

+FINE: Request "/tomcat.gif" with response status "200"

+ content-type "image/gif", set expiration date 3/26/10 2:19 PM</code></pre></div>

+    <p>

+    Sample of per-request log message where <code>ExpiresFilter</code> does not add

+    an expiration date:

+    </p>

+

+    <div class="codeBox"><pre><code>Mar 26, 2010 2:10:27 PM org.apache.catalina.filters.ExpiresFilter onBeforeWriteResponseBody

+FINE: Request "/docs/config/manager.html" with response status "200"

+ content-type "text/html", no expiration configured</code></pre></div>

+  </blockquote></td></tr></table>

+

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Failed Request Filter"><!--()--></a><a name="Failed_Request_Filter"><strong>Failed Request Filter</strong></a></font></td></tr><tr><td><blockquote>

 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Failed Request Filter/Introduction"><!--()--></a><a name="Failed_Request_Filter/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

@@ -144,7 +835,8 @@
   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Failed Request Filter/Filter Class Name"><!--()--></a><a name="Failed_Request_Filter/Filter_Class_Name"><strong>Filter Class Name</strong></a></font></td></tr><tr><td><blockquote>

 

     <p>The filter class name for the Failed Request Filter is

-    <strong><code>org.apache.catalina.filters.FailedRequestFilter</code></strong>.</p>

+    <strong><code>org.apache.catalina.filters.FailedRequestFilter</code>

+    </strong>.</p>

 

   </blockquote></td></tr></table>

 

@@ -154,6 +846,769 @@
 

   </blockquote></td></tr></table>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="HTTP Header Security Filter"><!--()--></a><a name="HTTP_Header_Security_Filter"><strong>HTTP Header Security Filter</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="HTTP Header Security Filter/Introduction"><!--()--></a><a name="HTTP_Header_Security_Filter/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>There are a number of HTTP headers that can be added to the response to

+    improve the security of the connection. This filter provides a mechanism for

+    adding those headers. Note that security related headers with more complex

+    requirements, like CORS, are implemented as separate Filters.</p>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="HTTP Header Security Filter/Filter Class Name"><!--()--></a><a name="HTTP_Header_Security_Filter/Filter_Class_Name"><strong>Filter Class Name</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The filter class name for the HTTP Header Security Filter is

+    <strong><code>org.apache.catalina.filters.HttpHeaderSecurityFilter</code>

+    </strong>.</p>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="HTTP Header Security Filter/Initialisation parameters"><!--()--></a><a name="HTTP_Header_Security_Filter/Initialisation_parameters"><strong>Initialisation parameters</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The HTTP Header Security Filter supports the following initialization

+    parameters:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">hstsEnabled</code></td><td align="left" valign="center">

+        <p>Will an HTTP Strict Transport Security (HSTS) header

+        (<code>Strict-Transport-Security</code>) be set on the response for

+        secure requests. Any HSTS header already present will be replaced. See

+        <a href="http://tools.ietf.org/html/rfc6797">RFC 6797</a> for further

+        details of HSTS. If not specified, the default value of

+        <code>true</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">hstsMaxAgeSeconds</code></td><td align="left" valign="center">

+        <p>The max age value that should be used in the HSTS header. Negative

+        values will be treated as zero. If not specified, the default value of

+        <code>0</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">hstsIncludeSubDomains</code></td><td align="left" valign="center">

+        <p>Should the includeSubDomains parameter be included in the HSTS

+        header. If not specified, the default value of <code>false</code> will

+        be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">hstsPreload</code></td><td align="left" valign="center">

+        <p>Should the preload parameter be included in the HSTS header. If not

+        specified, the default value of <code>false</code> will be used. See

+        <a href="https://hstspreload.org/">https://hstspreload.org</a> for

+        important information about this parameter.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">antiClickJackingEnabled</code></td><td align="left" valign="center">

+        <p>Should the anti click-jacking header (<code>X-Frame-Options</code>)

+        be set on the response. Any anti click-jacking header already present

+        will be replaced. If not specified, the default value of

+        <code>true</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">antiClickJackingOption</code></td><td align="left" valign="center">

+        <p>What value should be used for the ant click-jacking header? Must be

+        one of <code>DENY</code>, <code>SAMEORIGIN</code>,

+        <code>ALLOW-FROM </code> (case-insensitive). If not specified, the

+        default value of <code>DENY</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">antiClickJackingUri</code></td><td align="left" valign="center">

+        <p>If ALLOW-FROM is used for <strong>antiClickJackingOption</strong>,

+        what URI should be allowed? If not specified, the default value of an

+        empty string will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">blockContentTypeSniffingEnabled</code></td><td align="left" valign="center">

+        <p>Should the header that blocks content type sniffing

+        (<code>X-Content-Type-Options</code>) be set on every response. If

+        already present, the header will be replaced. If not specified, the

+        default value of <code>true</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">xssProtectionEnabled</code></td><td align="left" valign="center">

+        <p>Should the header that enables the browser's cross-site scripting

+        filter protection (<code>X-XSS-Protection: 1; mode=block</code>)

+        be set on every response. If already present, the header

+        will be replaced. If not specified, the default value of

+        <code>true</code> will be used.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote Address Filter"><!--()--></a><a name="Remote_Address_Filter"><strong>Remote Address Filter</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote Address Filter/Introduction"><!--()--></a><a name="Remote_Address_Filter/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Remote Address Filter</strong> allows you to compare the

+    IP address of the client that submitted this request against one or more

+    <em>regular expressions</em>, and either allow the request to continue

+    or refuse to process the request from this client. </p>

+

+    <p>The syntax for <em>regular expressions</em> is different than that for

+    'standard' wildcard matching. Tomcat uses the <code>java.util.regex</code>

+    package. Please consult the Java documentation for details of the

+    expressions supported.</p>

+

+    <p><strong>Note:</strong> There is a caveat when using this filter with

+    IPv6 addresses. Format of the IP address that this valve is processing

+    depends on the API that was used to obtain it. If the address was obtained

+    from Java socket using Inet6Address class, its format will be

+    <code>x:x:x:x:x:x:x:x</code>. That is, the IP address for localhost

+    will be <code>0:0:0:0:0:0:0:1</code> instead of the more widely used

+    <code>::1</code>. Consult your access logs for the actual value.</p>

+

+    <p>See also: <a href="#Remote_Host_Filter">Remote Host Filter</a>.</p>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote Address Filter/Filter Class Name"><!--()--></a><a name="Remote_Address_Filter/Filter_Class_Name"><strong>Filter Class Name</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The filter class name for the Remote Address Filter is

+    <strong><code>org.apache.catalina.filters.RemoteAddrFilter</code>

+    </strong>.</p>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote Address Filter/Initialisation parameters"><!--()--></a><a name="Remote_Address_Filter/Initialisation_parameters"><strong>Initialisation parameters</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Remote Address Filter</strong> supports the following

+    initialisation parameters:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">allow</code></td><td align="left" valign="center">

+        <p>A regular expression (using <code>java.util.regex</code>) that the

+        remote client's IP address is compared to.  If this attribute

+        is specified, the remote address MUST match for this request to be

+        accepted.  If this attribute is not specified, all requests will be

+        accepted UNLESS the remote address matches a <code>deny</code>

+        pattern.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">deny</code></td><td align="left" valign="center">

+        <p>A regular expression (using <code>java.util.regex</code>) that the

+        remote client's IP address is compared to.  If this attribute

+        is specified, the remote address MUST NOT match for this request to be

+        accepted.  If this attribute is not specified, request acceptance is

+        governed solely by the <code>accept</code> attribute.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">denyStatus</code></td><td align="left" valign="center">

+        <p>HTTP response status code that is used when rejecting denied

+        request. The default value is <code>403</code>. For example,

+        it can be set to the value <code>404</code>.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Example"><strong>Example</strong></a></font></td></tr><tr><td><blockquote>

+    <p>To allow access only for the clients connecting from localhost:</p>

+<div class="codeBox"><pre><code>    &lt;filter&gt;

+      &lt;filter-name&gt;Remote Address Filter&lt;/filter-name&gt;

+      &lt;filter-class&gt;org.apache.catalina.filters.RemoteAddrFilter&lt;/filter-class&gt;

+      &lt;init-param&gt;

+        &lt;param-name&gt;allow&lt;/param-name&gt;

+        &lt;param-value&gt;127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1&lt;/param-value&gt;

+      &lt;/init-param&gt;

+    &lt;/filter&gt;

+    &lt;filter-mapping&gt;

+      &lt;filter-name&gt;Remote Address Filter&lt;/filter-name&gt;

+      &lt;url-pattern&gt;/*&lt;/url-pattern&gt;

+    &lt;/filter-mapping&gt;</code></pre></div>

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote Host Filter"><!--()--></a><a name="Remote_Host_Filter"><strong>Remote Host Filter</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote Host Filter/Introduction"><!--()--></a><a name="Remote_Host_Filter/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Remote Host Filter</strong> allows you to compare the

+    hostname of the client that submitted this request against one or more

+    <em>regular expressions</em>, and either allow the request to continue

+    or refuse to process the request from this client. </p>

+

+    <p>The syntax for <em>regular expressions</em> is different than that for

+    'standard' wildcard matching. Tomcat uses the <code>java.util.regex</code>

+    package. Please consult the Java documentation for details of the

+    expressions supported.</p>

+

+    <p><strong>Note:</strong> This filter processes the value returned by

+    method <code>ServletRequest.getRemoteHost()</code>. To allow the method

+    to return proper host names, you have to enable "DNS lookups" feature on

+    a <strong>Connector</strong>.</p>

+

+    <p>See also: <a href="#Remote_Address_Filter">Remote Address Filter</a>,

+    <a href="http.html">HTTP Connector</a> configuration.</p>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote Host Filter/Filter Class Name"><!--()--></a><a name="Remote_Host_Filter/Filter_Class_Name"><strong>Filter Class Name</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The filter class name for the Remote Address Filter is

+    <strong><code>org.apache.catalina.filters.RemoteHostFilter</code>

+    </strong>.</p>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote Host Filter/Initialisation parameters"><!--()--></a><a name="Remote_Host_Filter/Initialisation_parameters"><strong>Initialisation parameters</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Remote Host Filter</strong> supports the following

+    initialisation parameters:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">allow</code></td><td align="left" valign="center">

+        <p>A regular expression (using <code>java.util.regex</code>) that the

+        remote client's hostname is compared to.  If this attribute

+        is specified, the remote hostname MUST match for this request to be

+        accepted.  If this attribute is not specified, all requests will be

+        accepted UNLESS the remote hostname matches a <code>deny</code>

+        pattern.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">deny</code></td><td align="left" valign="center">

+        <p>A regular expression (using <code>java.util.regex</code>) that the

+        remote client's hostname is compared to.  If this attribute

+        is specified, the remote hostname MUST NOT match for this request to be

+        accepted.  If this attribute is not specified, request acceptance is

+        governed solely by the <code>accept</code> attribute.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">denyStatus</code></td><td align="left" valign="center">

+        <p>HTTP response status code that is used when rejecting denied

+        request. The default value is <code>403</code>. For example,

+        it can be set to the value <code>404</code>.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote IP Filter"><!--()--></a><a name="Remote_IP_Filter"><strong>Remote IP Filter</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote IP Filter/Introduction"><!--()--></a><a name="Remote_IP_Filter/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>Tomcat port of

+    <a href="http://httpd.apache.org/docs/trunk/mod/mod_remoteip.html">mod_remoteip</a>,

+    this filter replaces the apparent client remote IP address and hostname for

+    the request with the IP address list presented by a proxy or a load balancer

+    via a request headers (e.g. "X-Forwarded-For").</p>

+

+    <p>Another feature of this filter is to replace the apparent scheme

+    (http/https), server port and <code>request.secure</code> with the scheme presented

+    by a proxy or a load balancer via a request header

+    (e.g. "X-Forwarded-Proto").</p>

+

+    <p>If used in conjunction with Remote Address/Host filters then this filter

+    should be defined first to ensure that the correct client IP address is

+    presented to the Remote Address/Host filters.</p>

+

+    <p><strong>Note:</strong> By default this filter has no effect on the

+    values that are written into access log. The original values are restored

+    when request processing leaves the filter and that always happens earlier

+    than access logging. To pass the remote address, remote host, server port

+    and protocol values set by this filter to the access log,

+    they are put into request attributes. Publishing these values here

+    is enabled by default, but <code>AccessLogValve</code> should be explicitly

+    configured to use them. See documentation for

+    <code>requestAttributesEnabled</code> attribute of

+    <code>AccessLogValve</code>.</p>

+

+    <p>The names of request attributes that are set by this filter

+    and can be used by access logging are the following:</p>

+

+    <ul>

+      <li><code>org.apache.catalina.AccessLog.RemoteAddr</code></li>

+      <li><code>org.apache.catalina.AccessLog.RemoteHost</code></li>

+      <li><code>org.apache.catalina.AccessLog.Protocol</code></li>

+      <li><code>org.apache.catalina.AccessLog.ServerPort</code></li>

+      <li><code>org.apache.tomcat.remoteAddr</code></li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote IP Filter/Filter Class Name"><!--()--></a><a name="Remote_IP_Filter/Filter_Class_Name"><strong>Filter Class Name</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The filter class name for the Remote IP Filter is

+    <strong><code>org.apache.catalina.filters.RemoteIpFilter</code>

+    </strong>.</p>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Basic configuration to handle 'x-forwarded-for'"><!--()--></a><a name="Basic_configuration_to_handle_'x-forwarded-for'"><strong>Basic configuration to handle 'x-forwarded-for'</strong></a></font></td></tr><tr><td><blockquote>

+    <p>

+    The filter will process the <code>x-forwarded-for</code> http header.

+    </p>

+    <div class="codeBox"><pre><code>      &lt;filter&gt;

+        &lt;filter-name&gt;RemoteIpFilter&lt;/filter-name&gt;

+        &lt;filter-class&gt;org.apache.catalina.filters.RemoteIpFilter&lt;/filter-class&gt;

+      &lt;/filter&gt;

+

+      &lt;filter-mapping&gt;

+        &lt;filter-name&gt;RemoteIpFilter&lt;/filter-name&gt;

+        &lt;url-pattern&gt;/*&lt;/url-pattern&gt;

+        &lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt;

+      &lt;/filter-mapping&gt;</code></pre></div>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Basic configuration to handle 'x-forwarded-for' and 'x-forwarded-proto'"><!--()--></a><a name="Basic_configuration_to_handle_'x-forwarded-for'_and_'x-forwarded-proto'"><strong>Basic configuration to handle 'x-forwarded-for' and 'x-forwarded-proto'</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>

+    The filter will process <code>x-forwarded-for</code> and

+    <code>x-forwarded-proto</code> http headers. Expected value for the

+    <code>x-forwarded-proto</code> header in case of SSL connections is

+    <code>https</code> (case insensitive). </p>

+    <div class="codeBox"><pre><code>      &lt;filter&gt;

+        &lt;filter-name&gt;RemoteIpFilter&lt;/filter-name&gt;

+        &lt;filter-class&gt;org.apache.catalina.filters.RemoteIpFilter&lt;/filter-class&gt;

+        &lt;init-param&gt;

+          &lt;param-name&gt;protocolHeader&lt;/param-name&gt;

+          &lt;param-value&gt;x-forwarded-proto&lt;/param-value&gt;

+        &lt;/init-param&gt;

+      &lt;/filter&gt;

+

+      &lt;filter-mapping&gt;

+        &lt;filter-name&gt;RemoteIpFilter&lt;/filter-name&gt;

+        &lt;url-pattern&gt;/*&lt;/url-pattern&gt;

+        &lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt;

+      &lt;/filter-mapping&gt;</code></pre></div>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Advanced configuration with internal proxies"><!--()--></a><a name="Advanced_configuration_with_internal_proxies"><strong>Advanced configuration with internal proxies</strong></a></font></td></tr><tr><td><blockquote>

+    <p>RemoteIpFilter configuration: </p>

+    <div class="codeBox"><pre><code>     &lt;filter&gt;

+       &lt;filter-name&gt;RemoteIpFilter&lt;/filter-name&gt;

+       &lt;filter-class&gt;org.apache.catalina.filters.RemoteIpFilter&lt;/filter-class&gt;

+       &lt;init-param&gt;

+         &lt;param-name&gt;allowedInternalProxies&lt;/param-name&gt;

+         &lt;param-value&gt;192\.168\.0\.10|192\.168\.0\.11&lt;/param-value&gt;

+       &lt;/init-param&gt;

+       &lt;init-param&gt;

+         &lt;param-name&gt;remoteIpHeader&lt;/param-name&gt;

+         &lt;param-value&gt;x-forwarded-for&lt;/param-value&gt;

+       &lt;/init-param&gt;

+       &lt;init-param&gt;

+         &lt;param-name&gt;remoteIpProxiesHeader&lt;/param-name&gt;

+         &lt;param-value&gt;x-forwarded-by&lt;/param-value&gt;

+       &lt;/init-param&gt;

+       &lt;init-param&gt;

+         &lt;param-name&gt;protocolHeader&lt;/param-name&gt;

+         &lt;param-value&gt;x-forwarded-proto&lt;/param-value&gt;

+       &lt;/init-param&gt;

+     &lt;/filter&gt;</code></pre></div>

+    <p>Request values:</p>

+    <table class="defaultTable">

+      <tr>

+        <th>Property</th>

+        <th>Value Before RemoteIpFilter</th>

+        <th>Value After RemoteIpFilter</th>

+      </tr>

+      <tr>

+        <td> request.remoteAddr </td>

+        <td> 192.168.0.10 </td>

+        <td> 140.211.11.130 </td>

+      </tr>

+      <tr>

+        <td> request.header<code>[</code>'x-forwarded-for'<code>]</code> </td>

+        <td> 140.211.11.130, 192.168.0.10 </td>

+        <td> null </td>

+      </tr>

+      <tr>

+        <td> request.header<code>[</code>'x-forwarded-by'<code>]</code> </td>

+        <td> null </td>

+        <td> null </td>

+      </tr>

+      <tr>

+        <td> request.header<code>[</code>'x-forwarded-proto'<code>]</code> </td>

+        <td> https </td>

+        <td> https </td>

+      </tr>

+      <tr>

+        <td> request.scheme </td>

+        <td> http </td>

+        <td> https </td>

+      </tr>

+      <tr>

+        <td> request.secure </td>

+        <td> false </td>

+        <td> true </td>

+      </tr>

+      <tr>

+        <td> request.serverPort </td>

+        <td> 80 </td>

+        <td> 443 </td>

+      </tr>

+    </table>

+

+    <p>

+    Note : <code>x-forwarded-by</code> header is <code>null</code> because only

+    internal proxies has been traversed by the request.

+    <code>x-forwarded-for</code> is <code>null</code> because all the proxies are

+    trusted or internal.

+    </p>

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Advanced configuration with trusted proxies"><!--()--></a><a name="Advanced_configuration_with_trusted_proxies"><strong>Advanced configuration with trusted proxies</strong></a></font></td></tr><tr><td><blockquote>

+    <p>RemoteIpFilter configuration: </p>

+    <div class="codeBox"><pre><code>     &lt;filter&gt;

+       &lt;filter-name&gt;RemoteIpFilter&lt;/filter-name&gt;

+       &lt;filter-class&gt;org.apache.catalina.filters.RemoteIpFilter&lt;/filter-class&gt;

+       &lt;init-param&gt;

+         &lt;param-name&gt;allowedInternalProxies&lt;/param-name&gt;

+         &lt;param-value&gt;192\.168\.0\.10|192\.168\.0\.11&lt;/param-value&gt;

+       &lt;/init-param&gt;

+       &lt;init-param&gt;

+         &lt;param-name&gt;remoteIpHeader&lt;/param-name&gt;

+         &lt;param-value&gt;x-forwarded-for&lt;/param-value&gt;

+       &lt;/init-param&gt;

+       &lt;init-param&gt;

+         &lt;param-name&gt;remoteIpProxiesHeader&lt;/param-name&gt;

+         &lt;param-value&gt;x-forwarded-by&lt;/param-value&gt;

+       &lt;/init-param&gt;

+       &lt;init-param&gt;

+         &lt;param-name&gt;trustedProxies&lt;/param-name&gt;

+         &lt;param-value&gt;proxy1|proxy2&lt;/param-value&gt;

+       &lt;/init-param&gt;

+     &lt;/filter&gt;</code></pre></div>

+    <p>Request values:</p>

+    <table class="defaultTable">

+      <tr>

+        <th>Property</th>

+        <th>Value Before RemoteIpFilter</th>

+        <th>Value After RemoteIpFilter</th>

+      </tr>

+      <tr>

+        <td> request.remoteAddr </td>

+        <td> 192.168.0.10 </td>

+        <td> 140.211.11.130 </td>

+      </tr>

+      <tr>

+        <td> request.header<code>[</code>'x-forwarded-for'<code>]</code> </td>

+        <td> 140.211.11.130, proxy1, proxy2 </td>

+        <td> null </td>

+      </tr>

+      <tr>

+        <td> request.header<code>[</code>'x-forwarded-by'<code>]</code> </td>

+        <td> null </td>

+        <td> proxy1, proxy2 </td>

+      </tr>

+    </table>

+

+    <p>

+    Note : <code>proxy1</code> and <code>proxy2</code> are both trusted proxies that

+    come in <code>x-forwarded-for</code> header, they both are migrated in

+    <code>x-forwarded-by</code> header. <code>x-forwarded-for</code> is <code>null</code>

+    because all the proxies are trusted or internal.

+    </p>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Advanced configuration with internal and trusted proxies"><!--()--></a><a name="Advanced_configuration_with_internal_and_trusted_proxies"><strong>Advanced configuration with internal and trusted proxies</strong></a></font></td></tr><tr><td><blockquote>

+    <p>RemoteIpFilter configuration: </p>

+    <div class="codeBox"><pre><code>     &lt;filter&gt;

+       &lt;filter-name&gt;RemoteIpFilter&lt;/filter-name&gt;

+       &lt;filter-class&gt;org.apache.catalina.filters.RemoteIpFilter&lt;/filter-class&gt;

+       &lt;init-param&gt;

+         &lt;param-name&gt;allowedInternalProxies&lt;/param-name&gt;

+         &lt;param-value&gt;192\.168\.0\.10|192\.168\.0\.11&lt;/param-value&gt;

+       &lt;/init-param&gt;

+       &lt;init-param&gt;

+         &lt;param-name&gt;remoteIpHeader&lt;/param-name&gt;

+         &lt;param-value&gt;x-forwarded-for&lt;/param-value&gt;

+       &lt;/init-param&gt;

+       &lt;init-param&gt;

+         &lt;param-name&gt;remoteIpProxiesHeader&lt;/param-name&gt;

+         &lt;param-value&gt;x-forwarded-by&lt;/param-value&gt;

+       &lt;/init-param&gt;

+       &lt;init-param&gt;

+         &lt;param-name&gt;trustedProxies&lt;/param-name&gt;

+         &lt;param-value&gt;proxy1|proxy2&lt;/param-value&gt;

+       &lt;/init-param&gt;

+     &lt;/filter&gt;</code></pre></div>

+    <p>Request values:</p>

+    <table class="defaultTable">

+      <tr>

+        <th>Property</th>

+        <th>Value Before RemoteIpFilter</th>

+        <th>Value After RemoteIpFilter</th>

+      </tr>

+      <tr>

+        <td> request.remoteAddr </td>

+        <td> 192.168.0.10 </td>

+        <td> 140.211.11.130 </td>

+      </tr>

+      <tr>

+        <td> request.header<code>[</code>'x-forwarded-for'<code>]</code> </td>

+        <td> 140.211.11.130, proxy1, proxy2, 192.168.0.10 </td>

+        <td> null </td>

+      </tr>

+      <tr>

+        <td> request.header<code>[</code>'x-forwarded-by'<code>]</code> </td>

+        <td> null </td>

+        <td> proxy1, proxy2 </td>

+      </tr>

+    </table>

+

+    <p>

+    Note : <code>proxy1</code> and <code>proxy2</code> are both trusted proxies that

+    come in <code>x-forwarded-for</code> header, they both are migrated in

+    <code>x-forwarded-by</code> header. As <code>192.168.0.10</code> is an internal

+    proxy, it does not appear in <code>x-forwarded-by</code>.

+    <code>x-forwarded-for</code> is <code>null</code> because all the proxies are

+    trusted or internal.

+    </p>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Advanced configuration with an untrusted proxy"><!--()--></a><a name="Advanced_configuration_with_an_untrusted_proxy"><strong>Advanced configuration with an untrusted proxy</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>RemoteIpFilter configuration: </p>

+    <div class="codeBox"><pre><code>     &lt;filter&gt;

+       &lt;filter-name&gt;RemoteIpFilter&lt;/filter-name&gt;

+       &lt;filter-class&gt;org.apache.catalina.filters.RemoteIpFilter&lt;/filter-class&gt;

+       &lt;init-param&gt;

+         &lt;param-name&gt;allowedInternalProxies&lt;/param-name&gt;

+         &lt;param-value&gt;192\.168\.0\.10|192\.168\.0\.11&lt;/param-value&gt;

+       &lt;/init-param&gt;

+       &lt;init-param&gt;

+         &lt;param-name&gt;remoteIpHeader&lt;/param-name&gt;

+         &lt;param-value&gt;x-forwarded-for&lt;/param-value&gt;

+       &lt;/init-param&gt;

+       &lt;init-param&gt;

+         &lt;param-name&gt;remoteIpProxiesHeader&lt;/param-name&gt;

+         &lt;param-value&gt;x-forwarded-by&lt;/param-value&gt;

+       &lt;/init-param&gt;

+       &lt;init-param&gt;

+         &lt;param-name&gt;trustedProxies&lt;/param-name&gt;

+         &lt;param-value&gt;proxy1|proxy2&lt;/param-value&gt;

+       &lt;/init-param&gt;

+     &lt;/filter&gt;</code></pre></div>

+    <p>Request values:</p>

+    <table class="defaultTable">

+      <tr>

+        <th>Property</th>

+        <th>Value Before RemoteIpFilter</th>

+        <th>Value After RemoteIpFilter</th>

+      </tr>

+      <tr>

+        <td> request.remoteAddr </td>

+        <td> 192.168.0.10 </td>

+        <td> untrusted-proxy </td>

+      </tr>

+      <tr>

+        <td> request.header<code>[</code>'x-forwarded-for'<code>]</code> </td>

+        <td> 140.211.11.130, untrusted-proxy, proxy1 </td>

+        <td> 140.211.11.130 </td>

+      </tr>

+      <tr>

+        <td> request.header<code>[</code>'x-forwarded-by'<code>]</code> </td>

+        <td> null </td>

+        <td> proxy1 </td>

+      </tr>

+    </table>

+

+    <p>

+    Note : <code>x-forwarded-by</code> holds the trusted proxy <code>proxy1</code>.

+    <code>x-forwarded-by</code> holds <code>140.211.11.130</code> because

+    <code>untrusted-proxy</code> is not trusted and thus, we can not trust that

+    <code>untrusted-proxy</code> is the actual remote ip.

+    <code>request.remoteAddr</code> is <code>untrusted-proxy</code> that is an IP

+    verified by <code>proxy1</code>.

+    </p>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote IP Filter/Initialisation parameters"><!--()--></a><a name="Remote_IP_Filter/Initialisation_parameters"><strong>Initialisation parameters</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Remote IP Filter</strong> supports the

+    following initialisation parameters:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">remoteIpHeader</code></td><td align="left" valign="center">

+        <p>Name of the HTTP Header read by this valve that holds the list of

+        traversed IP addresses starting from the requesting client. If not

+        specified, the default of <code>x-forwarded-for</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">internalProxies</code></td><td align="left" valign="center">

+        <p>Regular expression (using <code>java.util.regex</code>) that a

+        proxy's IP address must match to be considered an internal proxy.

+        Internal proxies that appear in the <strong>remoteIpHeader</strong> will

+        be trusted and will not appear in the <strong>proxiesHeader</strong>

+        value. If not specified the default value of <code>

+        10\.\d{1,3}\.\d{1,3}\.\d{1,3}|192\.168\.\d{1,3}\.\d{1,3}|169\.254\.\d{1,3}\.\d{1,3}|127\.\d{1,3}\.\d{1,3}\.\d{1,3}

+        </code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">proxiesHeader</code></td><td align="left" valign="center">

+        <p>Name of the HTTP header created by this valve to hold the list of

+        proxies that have been processed in the incoming

+        <strong>remoteIpHeader</strong>. If not specified, the default of

+        <code>x-forwarded-by</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">requestAttributesEnabled</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> to set the request attributes used by

+        AccessLog implementations to override the values returned by the

+        request for remote address, remote host, server port and protocol.

+        Request attributes are also used to enable the forwarded remote address

+        to be displayed on the status page of the Manager web application.

+        If not set, the default value of <code>true</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">trustedProxies</code></td><td align="left" valign="center">

+        <p>Regular expression (using <code>java.util.regex</code>) that a

+        proxy's IP address must match to be considered an trusted proxy.

+        Trusted proxies that appear in the <strong>remoteIpHeader</strong> will

+        be trusted and will appear in the <strong>proxiesHeader</strong> value.

+        If not specified, no proxies will be trusted.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">protocolHeader</code></td><td align="left" valign="center">

+        <p>Name of the HTTP Header read by this valve that holds the protocol

+        used by the client to connect to the proxy. If not specified, the

+        default of <code>null</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">portHeader</code></td><td align="left" valign="center">

+        <p>Name of the HTTP Header read by this valve that holds the port

+        used by the client to connect to the proxy. If not specified, the

+        default of <code>null</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">protocolHeaderHttpsValue</code></td><td align="left" valign="center">

+        <p>Value of the <strong>protocolHeader</strong> to indicate that it is

+        an HTTPS request. If not specified, the default of <code>https</code> is

+        used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">httpServerPort</code></td><td align="left" valign="center">

+        <p>Value returned by <code>ServletRequest.getServerPort()</code>

+        when the <strong>protocolHeader</strong> indicates <code>http</code>

+        protocol and no <strong>portHeader</strong> is present. If not

+        specified, the default of <code>80</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">httpsServerPort</code></td><td align="left" valign="center">

+        <p>Value returned by <code>ServletRequest.getServerPort()</code>

+        when the <strong>protocolHeader</strong> indicates <code>https</code>

+        protocol and no <strong>portHeader</strong> is present. If not

+        specified, the default of <code>443</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">changeLocalPort</code></td><td align="left" valign="center">

+        <p>If <code>true</code>, the value returned by

+        <code>ServletRequest.getLocalPort()</code> and

+        <code>ServletRequest.getServerPort()</code> is modified by the this

+        filter. If not specified, the default of <code>false</code> is used.</p>

+      </td></tr></table>

+

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Request Dumper Filter"><!--()--></a><a name="Request_Dumper_Filter"><strong>Request Dumper Filter</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Request Dumper Filter/Introduction"><!--()--></a><a name="Request_Dumper_Filter/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The Request Dumper Filter logs information from the request and response

+    objects and is intended to be used for debugging purposes. When using this

+    Filter, it is recommended that the

+    <code>org.apache.catalina.filter.RequestDumperFilter</code> logger is

+    directed to a dedicated file and that the

+    <code>org.apache.juli.VerbatimFormatter</code> is used.</p>

+

+    <p><strong>WARNING: Using this filter has side-effects.</strong>  The

+    output from this filter includes any parameters included with the request.

+    The parameters will be decoded using the default platform encoding. Any

+    subsequent calls to <code>request.setCharacterEncoding()</code> within

+    the web application will have no effect.</p>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Request Dumper Filter/Filter Class Name"><!--()--></a><a name="Request_Dumper_Filter/Filter_Class_Name"><strong>Filter Class Name</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The filter class name for the Request Dumper Filter is

+    <strong><code>org.apache.catalina.filters.RequestDumperFilter</code>

+    </strong>.</p>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Request Dumper Filter/Initialisation parameters"><!--()--></a><a name="Request_Dumper_Filter/Initialisation_parameters"><strong>Initialisation parameters</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The Request Dumper Filter does not support any initialization

+    parameters.</p>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Sample Configuration"><!--()--></a><a name="Sample_Configuration"><strong>Sample Configuration</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The following entries in a web application's web.xml would enable the

+    Request Dumper filter for all requests for that web application. If the

+    entries were added to <code>CATALINA_BASE/conf/web.xml</code>, the Request

+    Dumper Filter would be enabled for all web applications.</p>

+    <div class="codeBox"><pre><code>&lt;filter&gt;

+    &lt;filter-name&gt;requestdumper&lt;/filter-name&gt;

+    &lt;filter-class&gt;

+        org.apache.catalina.filters.RequestDumperFilter

+    &lt;/filter-class&gt;

+&lt;/filter&gt;

+&lt;filter-mapping&gt;

+    &lt;filter-name&gt;requestdumper&lt;/filter-name&gt;

+    &lt;url-pattern&gt;*&lt;/url-pattern&gt;

+&lt;/filter-mapping&gt;</code></pre></div>

+

+    <p>The following entries in CATALINA_BASE/conf/logging.properties would

+    create a separate log file for the Request Dumper Filter output.</p>

+    <div class="codeBox"><pre><code># To this configuration below, 1request-dumper.org.apache.juli.FileHandler

+# also needs to be added to the handlers property near the top of the file

+1request-dumper.org.apache.juli.FileHandler.level = INFO

+1request-dumper.org.apache.juli.FileHandler.directory = ${catalina.base}/logs

+1request-dumper.org.apache.juli.FileHandler.prefix = request-dumper.

+1request-dumper.org.apache.juli.FileHandler.formatter = org.apache.juli.VerbatimFormatter

+org.apache.catalina.filters.RequestDumperFilter.level = INFO

+org.apache.catalina.filters.RequestDumperFilter.handlers = \

+  1request-dumper.org.apache.juli.FileHandler</code></pre></div>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Set Character Encoding Filter"><!--()--></a><a name="Set_Character_Encoding_Filter"><strong>Set Character Encoding Filter</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Set Character Encoding Filter/Introduction"><!--()--></a><a name="Set_Character_Encoding_Filter/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>User agents don't always include character encoding information in

+    requests. Depending on the how the request is processed, usually the

+    default encoding of ISO-8859-1 is used. This is not always

+    desirable. This filter provides options for setting that encoding or

+    forcing it to a particular value. Essentially this filter calls

+    <code>ServletRequest.setCharacterEncoding()</code> method.</p>

+

+    <p>Effectively the value set by this filter is used when parsing parameters

+    in a POST request, if parameter parsing occurs later than this filter. Thus

+    the order of filter mappings is important. Note that the encoding for GET

+    requests is not set here, but on a <b>Connector</b>. See

+    CharacterEncoding page in the FAQ for details.</p>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Set Character Encoding Filter/Filter Class Name"><!--()--></a><a name="Set_Character_Encoding_Filter/Filter_Class_Name"><strong>Filter Class Name</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The filter class name for the Set Character Encoding Filter is

+    <strong><code>org.apache.catalina.filters.SetCharacterEncodingFilter</code>

+    </strong>.</p>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Set Character Encoding Filter/Initialisation parameters"><!--()--></a><a name="Set_Character_Encoding_Filter/Initialisation_parameters"><strong>Initialisation parameters</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The Set Character Encoding Filter supports the following initialization

+    parameters:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">encoding</code></strong></td><td align="left" valign="center">

+        <p>Name of the character encoding which should be set.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">ignore</code></td><td align="left" valign="center">

+        <p>Determines if any character encoding specified by the user agent is

+        ignored. If this attribute is <code>true</code>, any value provided by

+        the user agent is ignored. If <code>false</code>, the encoding is only

+        set if the user agent did not specify an encoding. The default value

+        is <code>false</code>.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="WebDAV Fix Filter"><!--()--></a><a name="WebDAV_Fix_Filter"><strong>WebDAV Fix Filter</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="WebDAV Fix Filter/Introduction"><!--()--></a><a name="WebDAV_Fix_Filter/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>Microsoft operating systems have two WebDAV clients. One is used with

+    port 80, the other is used for all other ports. The implementation used with

+    port 80 does not adhere to the WebDAV specification and fails when trying to

+    communicate with the Tomcat WebDAV Servlet. This Filter provides a fix for

+    this by forcing the use of the WebDAV implementation that works, even when

+    connecting via port 80.</p>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="WebDAV Fix Filter/Filter Class Name"><!--()--></a><a name="WebDAV_Fix_Filter/Filter_Class_Name"><strong>Filter Class Name</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The filter class name for the WebDAV Fix Filter is

+    <strong><code>org.apache.catalina.filters.WebdavFixFilter</code>

+    </strong>.</p>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="WebDAV Fix Filter/Initialisation parameters"><!--()--></a><a name="WebDAV_Fix_Filter/Initialisation_parameters"><strong>Initialisation parameters</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The WebDAV Fix Filter does not support any initialization parameters.</p>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/config/globalresources.html b/tomcat-uid/webapps/docs/config/globalresources.html
index 45738e2..8d8d0e3 100644
--- a/tomcat-uid/webapps/docs/config/globalresources.html
+++ b/tomcat-uid/webapps/docs/config/globalresources.html
@@ -1,9 +1,84 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat Configuration Reference (6.0.41) - The GlobalNamingResources Component</title><meta name="author" content="Remy Maucherat"><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.77) - The GlobalNamingResources Component</title><meta name="author" content="Remy Maucherat"><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

     The Apache Tomcat Servlet/JSP Container

-  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat Configuration Reference</h1><h2>The GlobalNamingResources Component</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="sessionidgenerator.html">SessionIdGenerator</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The GlobalNamingResources Component</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Special_Features">Special Features</a><ol><li><a href="#Environment_Entries">Environment Entries</a></li><li><a href="#Resource_Definitions">Resource Definitions</a></li><li><a href="#Resource_Links">Resource Links</a></li><li><a href="#Transaction">Transaction</a></li></ol></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -11,12 +86,12 @@
   JNDI resources for the <a href="server.html">Server</a>.</p>

 

   <p>These resources are listed in the server's global JNDI resource context.

-   This context is distinct from the per-web-application JNDI contexts 

+   This context is distinct from the per-web-application JNDI contexts

   described in

   the <a href="../jndi-resources-howto.html">JNDI Resources HOW-TO</a>.

   The resources defined in this element are <strong>not</strong> visible in

   the per-web-application contexts unless you explicitly link them with

-  <a href="context.html#Resource Links">&lt;ResourceLink&gt;</a> elements.

+  <a href="context.html#Resource_Links">&lt;ResourceLink&gt;</a> elements.

   </p>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

@@ -32,51 +107,43 @@
     web applications as environment entry resources by nesting

     <code>&lt;Environment&gt;</code> entries inside this element. For

     example, you can create an environment entry like this:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;GlobalNamingResources ...&gt;

+<div class="codeBox"><pre><code>&lt;GlobalNamingResources ...&gt;

   ...

   &lt;Environment name="maxExemptions" value="10"

          type="java.lang.Integer" override="false"/&gt;

   ...

-&lt;/GlobalNamingResources&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/GlobalNamingResources&gt;</code></pre></div>

 

     <p>This is equivalent to the inclusion of the following element in the

     web application deployment descriptor (<code>/WEB-INF/web.xml</code>):

     </p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;env-entry&gt;

+<div class="codeBox"><pre><code>&lt;env-entry&gt;

   &lt;env-entry-name&gt;maxExemptions&lt;/env-entry-name&gt;

   &lt;env-entry-value&gt;10&lt;/env-entry-value&gt;

   &lt;env-entry-type&gt;java.lang.Integer&lt;/env-entry-type&gt;

-&lt;/env-entry&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/env-entry&gt;</code></pre></div>

     <p>but does <em>not</em> require modification of the deployment descriptor

     to customize this value.</p>

 

     <p>The valid attributes for an <code>&lt;Environment&gt;</code> element

     are as follows:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>description</code></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">description</code></td><td align="left" valign="center">

         <p>Optional, human-readable description of this environment entry.</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>name</code></strong></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">name</code></strong></td><td align="left" valign="center">

         <p>The name of the environment entry to be created, relative to the

         <code>java:comp/env</code> context.</p>

-      </td></tr><tr><td align="left" valign="center"><code>override</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">override</code></td><td align="left" valign="center">

         <p>Set this to <code>false</code> if you do <strong>not</strong> want

         an <code>&lt;env-entry&gt;</code> for the same environment entry name,

         found in the web application deployment descriptor, to override the

         value specified here.  By default, overrides are allowed.</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>type</code></strong></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">type</code></strong></td><td align="left" valign="center">

         <p>The fully qualified Java class name expected by the web application

-        for this environment entry.  Must be one of the legal values for

+        for this environment entry.  Must be a legal value for

         <code>&lt;env-entry-type&gt;</code> in the web application deployment

-        descriptor:  <code>java.lang.Boolean</code>,

-        <code>java.lang.Byte</code>, <code>java.lang.Character</code>,

-        <code>java.lang.Double</code>, <code>java.lang.Float</code>,

-        <code>java.lang.Integer</code>, <code>java.lang.Long</code>,

-        <code>java.lang.Short</code>, or <code>java.lang.String</code>.</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>value</code></strong></td><td align="left" valign="center">

+        descriptor.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">value</code></strong></td><td align="left" valign="center">

         <p>The parameter value that will be presented to the application

         when requested from the JNDI context.  This value must be convertable

         to the Java type defined by the <code>type</code> attribute.</p>

@@ -90,10 +157,10 @@
     <p>You can declare the characteristics of resources

     to be returned for JNDI lookups of <code>&lt;resource-ref&gt;</code> and

     <code>&lt;resource-env-ref&gt;</code> elements in the web application

-    deployment descriptor by defining them in this element and then linking 

-    them with <a href="context.html#Resource Links">&lt;ResourceLink&gt;</a> 

+    deployment descriptor by defining them in this element and then linking

+    them with <a href="context.html#Resource_Links">&lt;ResourceLink&gt;</a>

     elements

-    in the <code><strong>&lt;Context&gt;</strong></code> element.  

+    in the <code><strong>&lt;Context&gt;</strong></code> element.

 

     You <strong>MUST</strong> also define any other needed parameters using

     attributes on the Resource element, to configure

@@ -101,26 +168,22 @@
     the properties used to configure that object factory.</p>

 

     <p>For example, you can create a resource definition like this:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;GlobalNamingResources ...&gt;

+<div class="codeBox"><pre><code>&lt;GlobalNamingResources ...&gt;

   ...

   &lt;Resource name="jdbc/EmployeeDB" auth="Container"

             type="javax.sql.DataSource"

      description="Employees Database for HR Applications"/&gt;

   ...

-&lt;/GlobalNamingResources&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/GlobalNamingResources&gt;</code></pre></div>

 

     <p>This is equivalent to the inclusion of the following element in the

     web application deployment descriptor (<code>/WEB-INF/web.xml</code>):</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;resource-ref&gt;

+<div class="codeBox"><pre><code>&lt;resource-ref&gt;

   &lt;description&gt;Employees Database for HR Applications&lt;/description&gt;

   &lt;res-ref-name&gt;jdbc/EmployeeDB&lt;/res-ref-name&gt;

   &lt;res-ref-type&gt;javax.sql.DataSource&lt;/res-ref-type&gt;

   &lt;res-auth&gt;Container&lt;/res-auth&gt;

-&lt;/resource-ref&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/resource-ref&gt;</code></pre></div>

 

     <p>but does <em>not</em> require modification of the deployment

     descriptor to customize this value.</p>

@@ -128,7 +191,7 @@
     <p>The valid attributes for a <code>&lt;Resource&gt;</code> element

     are as follows:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>auth</code></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">auth</code></td><td align="left" valign="center">

         <p>Specify whether the web Application code signs on to the

         corresponding resource manager programmatically, or whether the

         Container will sign on to the resource manager on behalf of the

@@ -138,17 +201,37 @@
         will use a <code>&lt;resource-ref&gt;</code> element in the web

         application deployment descriptor, but is optional if the

         application uses a <code>&lt;resource-env-ref&gt;</code> instead.</p>

-      </td></tr><tr><td align="left" valign="center"><code>description</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">closeMethod</code></td><td align="left" valign="center">

+        <p>Name of the zero-argument method to call on a singleton resource when

+        it is no longer required. This is intended to speed up clean-up of

+        resources that would otherwise happen as part of garbage collection.

+        This attribute is ignored if the <code>singleton</code> attribute is

+        false. If not specificed, no default is defined and no close method will

+        be called.</p>

+        <p>For Apache Commons DBCP and Apache Tomcat JDBC connection pools

+        you can use <code>closeMethod="close"</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">description</code></td><td align="left" valign="center">

         <p>Optional, human-readable description of this resource.</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>name</code></strong></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">name</code></strong></td><td align="left" valign="center">

         <p>The name of the resource to be created, relative to the

         <code>java:comp/env</code> context.</p>

-      </td></tr><tr><td align="left" valign="center"><code>scope</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">scope</code></td><td align="left" valign="center">

         <p>Specify whether connections obtained through this resource

         manager can be shared.  The value of this attribute must be

         <code>Shareable</code> or <code>Unshareable</code>.  By default,

         connections are assumed to be shareable.</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>type</code></strong></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">singleton</code></td><td align="left" valign="center">

+        <p>Specify whether this resource definition is for a singleton resource,

+        i.e. one where there is only a single instance of the resource. If this

+        attribute is <code>true</code>, multiple JNDI lookups for this resource

+        will return the same object. If this attribute is <code>false</code>,

+        multiple JNDI lookups for this resource will return different objects.

+        This attribute must be <code>true</code> for

+        <code>javax.sql.DataSource</code> resources to enable JMX registration

+        of the DataSource. The value of this attribute must be <code>true</code>

+        or <code>false</code>. By default, this attribute is <code>true</code>.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">type</code></strong></td><td align="left" valign="center">

         <p>The fully qualified Java class name expected by the web

         application when it performs a lookup for this resource.</p>

       </td></tr></table>

@@ -157,46 +240,67 @@
   </blockquote></td></tr></table>

 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Resource Links"><!--()--></a><a name="Resource_Links"><strong>Resource Links</strong></a></font></td></tr><tr><td><blockquote>

-    <p>Use <a href="context.html#Resource Links">&lt;ResourceLink&gt;</a> 

-    elements to link resources from the global context into 

-    per-web-application contexts. Here is an example of making a custom 

-    factory available to an application, based on the example definition in the 

-    <a href="../jndi-resources-howto.html#Generic JavaBean Resources">

+    <p>Use <a href="context.html#Resource_Links"><code>&lt;ResourceLink&gt;</code></a>

+    elements to link resources from the global context into

+    per-web-application contexts. Here is an example of making a custom

+    factory available to an application, based on the example definition in the

+    <a href="../jndi-resources-howto.html#Generic_JavaBean_Resources">

     JNDI Resource HOW-TO</a>:

     </p>

 

-    <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-      

-        &lt;Context&gt;

-          &lt;ResourceLink 

-            name="bean/MyBeanFactory"

-            global="bean/MyBeanFactory"

-            type="com.mycompany.MyBean"

-          /&gt;

-        &lt;/Context&gt;

-      

-    </pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <div class="codeBox"><pre><code>&lt;Context&gt;

+  &lt;ResourceLink

+    name="bean/MyBeanFactory"

+    global="bean/MyBeanFactory"

+    type="com.mycompany.MyBean"

+  /&gt;

+&lt;/Context&gt;</code></pre></div>

 

    </blockquote></td></tr></table>

 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Transaction"><strong>Transaction</strong></a></font></td></tr><tr><td><blockquote>

 

     <p>You can declare the characteristics of the UserTransaction

-    to be returned for JNDI lookup for <code>java:comp/UserTransaction</code>. 

+    to be returned for JNDI lookup for <code>java:comp/UserTransaction</code>.

     You <strong>MUST</strong> define an object factory class to instantiate

-    this object as well as the needed resource parameters as attributes of the 

-    <code>Transaction</code> 

+    this object as well as the needed resource parameters as attributes of the

+    <code>Transaction</code>

     element, and the properties used to configure that object factory.</p>

 

     <p>The valid attributes for the <code>&lt;Transaction&gt;</code> element

     are as follows:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>factory</code></strong></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">factory</code></strong></td><td align="left" valign="center">

         <p>The class name for the JNDI object factory.</p>

       </td></tr></table>

 

   </blockquote></td></tr></table>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/config/globalresources.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/config/host.html b/tomcat-uid/webapps/docs/config/host.html
index cc66f03..446da15 100644
--- a/tomcat-uid/webapps/docs/config/host.html
+++ b/tomcat-uid/webapps/docs/config/host.html
@@ -1,24 +1,99 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat Configuration Reference (6.0.41) - The Host Container</title><meta name="author" content="Craig R. McClanahan"><meta name="author" content="Remy Maucherat"><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.77) - The Host Container</title><meta name="author" content="Craig R. McClanahan"><meta name="author" content="Remy Maucherat"><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

     The Apache Tomcat Servlet/JSP Container

-  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat Configuration Reference</h1><h2>The Host Container</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="sessionidgenerator.html">SessionIdGenerator</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Host Container</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#Standard_Implementation">Standard Implementation</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Special_Features">Special Features</a><ol><li><a href="#Logging">Logging</a></li><li><a href="#Access_Logs">Access Logs</a></li><li><a href="#Automatic_Application_Deployment">Automatic Application Deployment</a></li><li><a href="#Host_Name_Aliases">Host Name Aliases</a></li><li><a href="#Lifecycle_Listeners">Lifecycle Listeners</a></li><li><a href="#Request_Filters">Request Filters</a></li><li><a href="#Single_Sign_On">Single Sign On</a></li><li><a href="#User_Web_Applications">User Web Applications</a></li></ol></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

   <p>The <strong>Host</strong> element represents a <em>virtual host</em>,

   which is an association of a network name for a server (such as

-  "www.mycompany.com" with the particular server on which Catalina is

-  running.  In order to be effective, this name must be registered in the

-  <em>Domain Name Service</em> (DNS) server that manages the Internet

-  domain you belong to - contact your Network Administrator for more

-  information.</p>

+  "www.mycompany.com") with the particular server on which Tomcat is running.

+  For clients to be able to connect to a Tomcat server using its network name,

+  this name must be registered in the <em>Domain Name Service</em> (DNS) server

+  that manages the Internet domain you belong to - contact your Network

+  Administrator for more information.</p>

 

   <p>In many cases, System Administrators wish to associate more than

   one network name (such as <code>www.mycompany.com</code> and

   <code>company.com</code>) with the same virtual host and applications.

-  This can be accomplished using the <a href="#Host Name Aliases">Host

+  This can be accomplished using the <a href="#Host_Name_Aliases">Host

   Name Aliases</a> feature discussed below.</p>

 

   <p>One or more <strong>Host</strong> elements are nested inside an

@@ -28,13 +103,20 @@
   associated with each Engine MUST have a name matching the

   <code>defaultHost</code> attribute of that Engine.</p>

 

-    <blockquote><em>

-    <p>The description below uses the variable name $CATALINA_BASE to refer the

+  <p>Clients normally use host names to identify the server they wish to connect

+  to. This host name is also included in the HTTP request headers. Tomcat

+  extracts the host name from the HTTP headers and looks for a

+  <strong>Host</strong> with a matching name. If no match is found, the request

+  is routed to the default host. The name of the default host does not have to

+  match a DNS name (although it can) since any request where the DNS name does

+  not match the name of a <strong>Host</strong> element will be routed to the

+  default host.</p>

+

+    <p><em>The description below uses the variable name $CATALINA_BASE to refer the

     base directory against which most relative paths are resolved. If you have

     not configured Tomcat for multiple instances by setting a CATALINA_BASE

     directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME,

-    the directory into which you have installed Tomcat.</p>

-    </em></blockquote>

+    the directory into which you have installed Tomcat.</em></p>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -43,7 +125,7 @@
     <p>All implementations of <strong>Host</strong>

     support the following attributes:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>appBase</code></strong></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">appBase</code></strong></td><td align="left" valign="center">

         <p>The <em>Application Base</em> directory for this virtual host.

         This is the pathname of a directory that may contain web applications

         to be deployed on this virtual host.  You may specify an

@@ -53,36 +135,51 @@
         Deployment</a> for more information on automatic recognition and

         deployment of web applications. If not specified, the default of

         <code>webapps</code> will be used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>autoDeploy</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">xmlBase</code></td><td align="left" valign="center">

+        <p>The <em>XML Base</em> directory for this virtual host.

+        This is the pathname of a directory that may contain context XML

+        descriptors to be deployed on this virtual host.  You may specify an

+        absolute pathname for this directory, or a pathname that is relative

+        to the <code>$CATALINA_BASE</code> directory.  See

+        <a href="#Automatic_Application_Deployment">Automatic Application

+        Deployment</a> for more information on automatic recognition and

+        deployment of web applications. If not specified the default of

+        <code>conf/&lt;engine_name&gt;/&lt;host_name&gt;</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">createDirs</code></td><td align="left" valign="center">

+        <p>If set to true, Tomcat will attempt to create the directories defined

+        by the  attributes <code>appBase</code> and <code>xmlBase</code> during

+        the startup phase. The default value is <code>true</code>. If set to

+        true, and directory creation fails, an error message will be printed out

+        but will not halt the startup sequence.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">autoDeploy</code></td><td align="left" valign="center">

         <p>This flag value indicates if Tomcat should check periodically for new

         or updated web applications while Tomcat is running. If true, Tomcat

-        periodically checks the <code>appBase</code> and

-        <code>$CATALINA_BASE/conf/[engine_name]/[host_name]</code>

+        periodically checks the <code>appBase</code> and <code>xmlBase</code>

         directories and deploys any new web applications or context XML

         descriptors found. Updated web applications or context XML descriptors

         will trigger a reload of the web application. The flag's value defaults

         to true.  See

         <a href="#Automatic_Application_Deployment">Automatic Application

         Deployment</a> for more information.</p>

-      </td></tr><tr><td align="left" valign="center"><code>backgroundProcessorDelay</code></td><td align="left" valign="center">

-        <p>This value represents the delay in seconds between the 

-        invocation of the backgroundProcess method on this host and 

-        its child containers, including all contexts. 

-        Child containers will not be invoked if their delay value is not 

-        negative (which would mean they are using their own processing 

-        thread). Setting this to a positive value will cause 

-        a thread to be spawn. After waiting the specified amount of time, 

-        the thread will invoke the backgroundProcess method on this host 

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">backgroundProcessorDelay</code></td><td align="left" valign="center">

+        <p>This value represents the delay in seconds between the

+        invocation of the backgroundProcess method on this host and

+        its child containers, including all contexts.

+        Child containers will not be invoked if their delay value is not

+        negative (which would mean they are using their own processing

+        thread). Setting this to a positive value will cause

+        a thread to be spawn. After waiting the specified amount of time,

+        the thread will invoke the backgroundProcess method on this host

         and all its child containers. A host will use background processing to

-        perform live web application deployment related tasks. If not 

-        specified, the default value for this attribute is -1, which means 

-        the host will rely on the background processing thread of its parent 

+        perform live web application deployment related tasks. If not

+        specified, the default value for this attribute is -1, which means

+        the host will rely on the background processing thread of its parent

         engine.</p>

-      </td></tr><tr><td align="left" valign="center"><code>className</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">className</code></td><td align="left" valign="center">

         <p>Java class name of the implementation to use.  This class must

         implement the <code>org.apache.catalina.Host</code> interface.

         If not specified, the standard value (defined below) will be used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>deployIgnore</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">deployIgnore</code></td><td align="left" valign="center">

         <p>A regular expression defining paths to ignore when

         <code>autoDeploy</code> and <code>deployOnStartup</code> are set. This

         allows you to keep your configuration in a version control system, for

@@ -96,21 +193,45 @@
         "foo", you could use <code>.*foo.*</code>.</p>

         <p>See <a href="#Automatic_Application_Deployment">Automatic Application

         Deployment</a> for more information.</p>

-      </td></tr><tr><td align="left" valign="center"><code>deployOnStartup</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">deployOnStartup</code></td><td align="left" valign="center">

         <p>This flag value indicates if web applications from this host should

         be automatically deployed when Tomcat starts. The flag's value defaults

         to true.  See

         <a href="#Automatic_Application_Deployment">Automatic Application

         Deployment</a> for more information.</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>name</code></strong></td><td align="left" valign="center">

-        <p>Network name of this virtual host, as registered in your

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">failCtxIfServletStartFails</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> to have each child contexts fail its startup

+        if any of its servlet that has load-on-startup &gt;=0 fails its own

+        startup.</p>

+        <p>Each child context may override this attribute.</p>

+        <p>If not specified, the default value of <code>false</code> is

+        used.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">name</code></strong></td><td align="left" valign="center">

+        <p>Usually the network name of this virtual host, as registered in your

         <em>Domain Name Service</em> server. Regardless of the case used to

-        specify the hostname, Tomcat will convert it to lower case internally.

+        specify the host name, Tomcat will convert it to lower case internally.

         One of the Hosts nested within an <a href="engine.html">Engine</a> MUST

         have a name that matches the <code>defaultHost</code> setting for that

-        Engine.  See <a href="#Host Name Aliases">Host Name Aliases</a> for

+        Engine.  See <a href="#Host_Name_Aliases">Host Name Aliases</a> for

         information on how to assign more than one network name to the same

         virtual host.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">startStopThreads</code></td><td align="left" valign="center">

+        <p>The number of threads this <strong>Host</strong> will use to start

+        child <a href="context.html">Context</a> elements in parallel. The same

+        thread pool will be used to deploy new

+        <a href="context.html">Context</a>s if automatic deployment is being

+        used. The special value of 0 will result in the value of

+        <code>Runtime.getRuntime().availableProcessors()</code> being used.

+        Negative values will result in

+        <code>Runtime.getRuntime().availableProcessors() + value</code> being

+        used unless this is less than 1 in which case 1 thread will be used. If

+        not specified, the default value of 1 will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">undeployOldVersions</code></td><td align="left" valign="center">

+        <p>This flag determines if Tomcat, as part of the auto deployment

+        process, will check for old, unused versions of web applications

+        deployed using parallel deployment and, if any are found, remove them.

+        This flag only applies if <code>autoDeploy</code> is true. If not

+        specified the default value of false will be used.</p>

       </td></tr></table>

 

   </blockquote></td></tr></table>

@@ -123,17 +244,32 @@
     It supports the following additional attributes (in addition to the

     common attributes listed above):</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>deployXML</code></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">copyXML</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> if you want a context XML descriptor

+        embedded inside the application (located at

+        <code>/META-INF/context.xml</code>) to be copied to <code>xmlBase</code>

+        when the application is deployed. On subsequent starts, the copied

+        context XML descriptor will be used in preference to any context XML

+        descriptor embedded inside the application even if the descriptor

+        embedded inside the application is more recent. The flag's value

+        defaults to <code>false</code>.  Note if <strong>deployXML</strong>

+        is <code>false</code>, this attribute will have no effect.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">deployXML</code></td><td align="left" valign="center">

         <p>Set to <code>false</code> if you want to disable parsing the context

         XML descriptor embedded inside the application (located at

         <code>/META-INF/context.xml</code>). Security conscious environments

         should set this to <code>false</code> to prevent applications from

         interacting with the container's configuration. The  administrator will

         then be responsible for providing an external context configuration

-        file, and putting it in

-        <code>$CATALINA_BASE/conf/[engine_name]/[host_name]</code>. The flag's

-        value defaults to <code>true</code>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>errorReportValveClass</code></td><td align="left" valign="center">

+        file, and putting it in the location defined by the

+        <strong>xmlBase</strong> attribute. If this flag is <code>false</code>,

+        a descriptor is located at <code>/META-INF/context.xml</code> and no

+        descriptor is present in <strong>xmlBase</strong> then the context will

+        fail to start in case the descriptor contains necessary configuration

+        for secure deployment (such as a RemoteAddrValve) which should not be

+        ignored. The flag's value defaults to <code>true</code> unless a

+        security manager is enabled when the default is <code>false</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">errorReportValveClass</code></td><td align="left" valign="center">

         <p>Java class name of the error reporting valve which will be used

         by this Host. The responsibility of this valve is to output error

         reports. Setting this property allows to customize the look of the

@@ -142,7 +278,7 @@
         <code>org.apache.catalina.Valve</code> interface. If none is specified,

         the value <code>org.apache.catalina.valves.ErrorReportValve</code>

         will be used by default.</p>

-      </td></tr><tr><td align="left" valign="center"><code>unpackWARs</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">unpackWARs</code></td><td align="left" valign="center">

         <p>Set to <code>true</code> if you want web applications that are

         placed in the <code>appBase</code> directory as web application

         archive (WAR) files to be unpacked into a corresponding disk directory

@@ -151,7 +287,7 @@
         <strong>appBase</strong> will not be expanded. See

         <a href="#Automatic_Application_Deployment">Automatic Application

         Deployment</a> for more information.</p>

-      </td></tr><tr><td align="left" valign="center"><code>workDir</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">workDir</code></td><td align="left" valign="center">

         <p>Pathname to a scratch directory to be used by applications for

         this Host. Each application will have its own sub directory with

         temporary read-write use.  Configuring a Context workDir will override

@@ -189,7 +325,7 @@
 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Logging"><strong>Logging</strong></a></font></td></tr><tr><td><blockquote>

 

-    <p>A host is associated with the 

+    <p>A host is associated with the

        <code>org.apache.catalina.core.ContainerBase.[engine_name].[host_name]</code>

        log category.  Note that the brackets are part of the name,

        don't omit them.</p>

@@ -211,17 +347,15 @@
     <a href="host.html">Host</a>, or <a href="context.html">Context</a>

     by nesting a <a href="valve.html">Valve</a> element like this:</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;Host name="localhost" ...&gt;

+<div class="codeBox"><pre><code>&lt;Host name="localhost" ...&gt;

   ...

   &lt;Valve className="org.apache.catalina.valves.AccessLogValve"

          prefix="localhost_access_log." suffix=".txt"

          pattern="common"/&gt;

   ...

-&lt;/Host&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/Host&gt;</code></pre></div>

 

-    <p>See <a href="valve.html#Access Log Valve">Access Log Valve</a>

+    <p>See <a href="valve.html#Access_Logging">Access Logging Valves</a>

     for more information on the configuration attributes that are

     supported.</p>

 

@@ -230,116 +364,59 @@
 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Automatic Application Deployment"><!--()--></a><a name="Automatic_Application_Deployment"><strong>Automatic Application Deployment</strong></a></font></td></tr><tr><td><blockquote>

 

-    <p>If you are using the standard <strong>Host</strong> implementation,

-    the following actions take place automatically when Catalina is first

-    started, if the <code>deployOnStartup</code> property is set to

-    <code>true</code> (which is the default value):</p>

-    <ul>

-    <li>Any XML file in

-        <code>$CATALINA_BASE/conf/[engine_name]/[host_name]</code> is

-        assumed to be a context XML descriptor containing a

-        <a href="context.html">Context</a> element (and its associated

-        sub-elements) for a single web application. The web applications

-        associated with each of these context XML descriptor files will be

-        deployed first.<br>

-        The <code>docBase</code> attribute of this <code>&lt;Context&gt;</code>

-        element must only be set if the docBase is outside the Host's

-        <code>appBase</code>. For web applications located inside the Host's

-        <code>appBase</code>, the <code>docBase</code> will be the name of the

-        XML file with ".xml" replaced with ".war" for a web application archive

-        or the name of the XML file with ".xml" removed for a directory.<br>

-        The <code>path</code> attribute must not be set. The context path used

-        will be a slash character ("/") followed by the name of the XML file

-        (less the .xml extension). Multi-level context paths may be defined

-        using #, e.g. <code>foo#bar.xml</code> for a context path of

-        <code>/foo/bar</code>. The default web application that has a context

-        path of <code>/</code> may be defined by using a file called

-        <code>ROOT.xml</code>.</li>

-    <li>Any web application archive file within the Host's <code>appBase</code>

-        directory that has not already been deployed as a result of a context

-        XML descriptor, does not have a corresponding directory of the same

-        name (without the ".war" extension), and is not excluded by

-        <code>deployIgnore</code> will be deployed next. The context path

-        used will be a slash character ("/") followed by the web application

-        archive name less the ".war" extension. The one exception to this rule

-        is that a web application archive named "ROOT.war" will be deployed with

-        a context path of <code>/</code>. Multi-level contexts may be defined by

-        using #, e.g. use a WAR named <code>foo#bar.war</code> for a context

-        path of <code>/foo/bar</code>.<br>

-        If the <code>unpackWARs</code> attribute is <code>true</code>, the web

-        application archive file will be expanded to a directory of the same

-        name (without the ".war" extension".<br>

-        Note: If you re-deploy an updated WAR file while Tomcat is stopped, be

-        sure to delete the associated expanded directory before restarting 

-        Tomcat, so that the updated WAR file will be re-expanded when Tomcat

-        restarts.<br>

-        Any web application archive file within the Hosts's <code>appBase</code>

-        directory that does not have a corresponding context XML descriptor

-        (with a ".xml" extension rather than a ".war" extension) in 

-        <code>$CATALINA_BASE/conf/[engine_name]/[host_name]</code> will be

-        scanned to see if it contains a context XML descriptor (located at

-        <code>/META-INF/context.xml</code>) and if one is found the descriptor

-        will be copied to the

-        <code>$CATALINA_BASE/conf/[engine_name]/[host_name]</code> directory and

-        renamed.

-        </li>

-    <li>Finally, any sub-directory within the Host's <code>appBase</code> that

-        has not already been deployed as a result of a context XML descriptor

-        and is not excluded by <code>deployIgnore</code> will be deployed.

-        The context path used will be a slash character ("/") followed by the

-        directory name, unless the directory name is ROOT, in which case the

-        context path will <code>/</code>. Multi-level contexts may be defined by

-        using #, e.g. use a directory named <code>foo#bar</code> for a context

-        path of <code>/foo/bar</code>.<br>

-        Any directory within the Hosts's <code>appBase</code> directory that

-        does not have a corresponding context XML descriptor in

-        <code>$CATALINA_BASE/conf/[engine_name]/[host_name]</code> will be

-        scanned to see if it contains a context XML descriptor (located at

-        <code>/META-INF/context.xml</code>) and if one is found the descriptor

-        will be copied to

-        <code>$CATALINA_BASE/conf/[engine_name]/[host_name]</code> and renamed.

-        </li>

-    </ul>

+    <p>If you are using the standard <strong>Host</strong> implementation with

+    default settings then applications in the <em>appBase</em> or with context

+    files in the <em>configBase</em> are automatically deployed when Tomcat

+    starts (the <code>deployOnStartup</code> property defaults to

+    <code>true</code>) and reloaded or redeployed (as appropriate) when a change

+    is detected while Tomcat is running (the <code>autoDeploy</code> attribute

+    also defaults to <code>true</code>).</p>

 

-    <p>In addition to the automatic deployment that occurs at startup time,

-    you can also request that new XML configuration files, WAR files, or

-    sub-directories that are dropped in to the <code>appBase</code> (or 

-    <code>$CATALINA_BASE/conf/[engine_name]/[host_name]</code> in the case of

-    an XML configuration file) directory while Tomcat is running will be

-    automatically deployed, according to the rules described above. The 

-    auto deployer will also track web applications for the following changes:

-    <ul>

-        <li>An update to the WEB-INF/web.xml file will trigger a reload of the

-          web application</li>

-        <li>Deleting a WAR file will trigger an undeploy of the application with

-          the removal of any associated expanded directory, context file and

-          work directory. Any current user sessions will not be persisted.</li>

-        <li>Deleting a directory will trigger an undeploy of the application

-          with the removal of any associated context file and work directory.

-          Any current user sessions will not be persisted. If there is an

-          associated WAR file, it will not be deleted and the application will

-          be redeployed from the WAR file the next time the auto deployer checks

-          for changes.</li>

-        <li>Deleting a context file will trigger an undeploy of the application

-          with the removal of any associated work directory. Any current user

-          sessions will not be persisted. If there is an associated WAR file

-          and/or directory, they will not be deleted and the application will be

-          redeployed from the WAR file (or from directory if there is no WAR

-          file) the next time the auto deployer checks for changes.</li>

-        <li>Updating a WAR file will trigger an undeploy of the application with

-          the removal of any associated expanded directory, context file and

-          work directory. Any current user sessions will not be persisted.</li>

-        <li>Updating a directory (not the directory contents) will trigger an

-          undeploy of the application with the removal of any associated context

-          file and work directory. Any current user sessions will not be

-          persisted. The application will be redeployed the next time the auto

-          deployer checks for changes.</li>

-        <li>Updating a context file will trigger an undeploy of the application

-          with the removal of any associated work directory. Any current user

-          sessions will not be persisted. The application will be redeployed the

-          next time the auto deployer checks for changes.</li>

-    </ul>

-    </p>

+    <p><code>deployOnStartup</code> and <code>autoDeploy</code> trigger

+    execution of exactly the same code so the behaviour is very similar.

+    However, there is one key difference. When Tomcat starts it has no knowledge

+    of which files are the same, which have been changed and which are new. It

+    therefore treats all files as new. While Tomcat is running, it can

+    differentiate between unchanged, modified and new files. This leads to some

+    differences in behaviour between files being modified while Tomcat is

+    running and files being modified while Tomcat is stopped.</p>

+

+    <p>When you use automatic deployment, related files (a web application may

+    have a context.xml file, a WAR and a directory) that exist in the

+    <strong>Host</strong>'s <em>appBase</em> and/or <em>configBase</em>

+    must conform to the expected <a href="context.html#Naming">naming

+    convention</a>. In short, this means files for the same web application must

+    share the same <em>base name</em>.</p>

+

+    <p>The automatic deployment process identifies new and/or modified web

+    applications using the following search order:</p>

+

+    <ol>

+      <li>Web applications with a context.xml file located in the Host's

+      <em>configBase</em>.</li>

+      <li>Web applications with a WAR file located in the Host's

+      <em>appBase</em> that have not already been identified during the scan for

+      context.xml files.</li>

+      <li>Web applications with a directory located in the Host's

+      <em>appBase</em> that have not already been identified during the scans

+      for context.xml and/or WAR files.</li>

+    </ol>

+

+    <p>When <code>autoDeploy</code> is <code>true</code>, the automatic

+    deployment process will monitor the deployed web applications for changes.

+    Depending on exactly what changes, the web application will either be

+    re-deployed or reloaded. Re-deployment involves the creation of a new web

+    application and, if using the standard session manager, user sessions will

+    not be retained. Reloading uses the existing web application but re-parses

+    the web.xml and reloads any classes. If using the standard session manager,

+    user sessions will be persisted.</p>

+

+    <p>Users may add to the files that the automatic deployment process monitors

+    for reloading (i.e. any change to one of these files triggers a reload of

+    the web application) by adding a <em>WatchedResources</em> element to the

+    context.xml file. See the

+    <a href="context.html#Nested_Components">Context</a> documentation for

+    further details.</p>

 

     <p>When using automatic deployment, the <code>docBase</code> defined by

     an XML <a href="context.html">Context</a> file should be outside of the

@@ -348,12 +425,17 @@
     be deployed twice. The <code>deployIgnore</code> attribute can be used

     to avoid this situation.</p>

 

-    <p>Finally, note that if you are defining contexts explicitly in server.xml,

-    you should probably turn off automatic application deployment or specify

+    <p>Note that if you are defining contexts explicitly in server.xml, you

+    should probably turn off automatic application deployment or specify

     <code>deployIgnore</code> carefully. Otherwise, the web applications

     will each be deployed twice, and that may cause problems for the

     applications.</p>

 

+    <p>There are many possible combinations of settings, new files, changed

+    files and deleted files. A separate page describes the

+    <a href="automatic-deployment.html">expected behaviour of the automatic

+    deployment process</a> in many of these scenarios.</p>

+

   </blockquote></td></tr></table>

 

 

@@ -377,13 +459,11 @@
     <p>This is accomplished by utilizing one or more <strong>Alias</strong>

     elements nested inside your <strong>Host</strong> element.  For

     example:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;Host name="www.mycompany.com" ...&gt;

+<div class="codeBox"><pre><code>&lt;Host name="www.mycompany.com" ...&gt;

   ...

   &lt;Alias&gt;mycompany.com&lt;/Alias&gt;

   ...

-&lt;/Host&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/Host&gt;</code></pre></div>

 

     <p>In order for this strategy to be effective, all of the network names

     involved must be registered in your DNS server to resolve to the

@@ -402,13 +482,11 @@
     it will be notified about the occurrence of the corresponding

     lifecycle events.  Configuration of such a listener looks like this:</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;Host name="localhost" ...&gt;

+<div class="codeBox"><pre><code>&lt;Host name="localhost" ...&gt;

   ...

   &lt;Listener className="com.mycompany.mypackage.MyListener" ... &gt;

   ...

-&lt;/Host&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/Host&gt;</code></pre></div>

 

     <p>Note that a Listener can have any number of additional properties

     that may be configured from this element.  Attribute names are matched

@@ -424,25 +502,23 @@
     incoming request directed to the surrounding

     <a href="engine.html">Engine</a>, <a href="host.html">Host</a>, or

     <a href="context.html">Context</a> element.  The remote address or name

-    will be checked against a configured list of "accept" and/or "deny"

+    will be checked against configured "accept" and/or "deny"

     filters, which are defined using <code>java.util.regex</code> Regular

     Expression syntax.  Requests that come from locations that are

     not accepted will be rejected with an HTTP "Forbidden" error.

     Example filter declarations:</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;Host name="localhost" ...&gt;

+<div class="codeBox"><pre><code>&lt;Host name="localhost" ...&gt;

   ...

   &lt;Valve className="org.apache.catalina.valves.RemoteHostValve"

          allow=".*\.mycompany\.com|www\.yourcompany\.com"/&gt;

   &lt;Valve className="org.apache.catalina.valves.RemoteAddrValve"

          deny="192\.168\.1\.\d+"/&gt;

   ...

-&lt;/Host&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/Host&gt;</code></pre></div>

 

-  <p>See <a href="valve.html#Remote Address Filter">Remote Address Filter</a>

-  and <a href="valve.html#Remote Host Filter">Remote Host Filter</a> for

+  <p>See <a href="valve.html#Remote_Address_Filter">Remote Address Filter</a>

+  and <a href="valve.html#Remote_Host_Filter">Remote Host Filter</a> for

   more information about the configuration options that are supported.</p>

 

   </blockquote></td></tr></table>

@@ -451,18 +527,16 @@
   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Single Sign On"><!--()--></a><a name="Single_Sign_On"><strong>Single Sign On</strong></a></font></td></tr><tr><td><blockquote>

 

     <p>In many environments, but particularly in portal environments, it

-    is desireable to have a user challenged to authenticate themselves only

+    is desirable to have a user challenged to authenticate themselves only

     once over a set of web applications deployed on a particular virtual

     host.  This can be accomplished by nesting an element like this inside

     the Host element for this virtual host:</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;Host name="localhost" ...&gt;

+<div class="codeBox"><pre><code>&lt;Host name="localhost" ...&gt;

   ...

   &lt;Valve className="org.apache.catalina.authenticator.SingleSignOn"/&gt;

   ...

-&lt;/Host&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/Host&gt;</code></pre></div>

 

     <p>The Single Sign On facility operates according to the following rules:

     </p>

@@ -508,39 +582,33 @@
     <strong>Listener</strong> element like this (on a Unix system that

     uses the <code>/etc/passwd</code> file to identify valid users):</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;Host name="localhost" ...&gt;

+<div class="codeBox"><pre><code>&lt;Host name="localhost" ...&gt;

   ...

   &lt;Listener className="org.apache.catalina.startup.UserConfig"

             directoryName="public_html"

             userClass="org.apache.catalina.startup.PasswdUserDatabase"/&gt;

   ...

-&lt;/Host&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/Host&gt;</code></pre></div>

 

     <p>On a server where <code>/etc/passwd</code> is not in use, you can

     request Catalina to consider all directories found in a specified base

     directory (such as <code>c:\Homes</code> in this example) to be

     considered "user home" directories for the purposes of this directive:</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;Host name="localhost" ...&gt;

+<div class="codeBox"><pre><code>&lt;Host name="localhost" ...&gt;

   ...

   &lt;Listener className="org.apache.catalina.startup.UserConfig"

             directoryName="public_html"

-            homeBase=c:\Homes"

+            homeBase="c:\Homes"

             userClass="org.apache.catalina.startup.HomesUserDatabase"/&gt;

   ...

-&lt;/Host&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/Host&gt;</code></pre></div>

 

     <p>If a user home directory has been set up for a user named

     <code>craigmcc</code>, then its contents will be visible from a

     client browser by making a request to a URL like:</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-http://www.mycompany.com:8080/~craigmcc

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>http://www.mycompany.com:8080/~craigmcc</code></pre></div>

 

     <p>Successful use of this feature requires recognition of the following

     considerations:</p>

@@ -558,6 +626,31 @@
   </blockquote></td></tr></table>

 

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/config/host.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/config/http.html b/tomcat-uid/webapps/docs/config/http.html
index 47e1645..2d6e436 100644
--- a/tomcat-uid/webapps/docs/config/http.html
+++ b/tomcat-uid/webapps/docs/config/http.html
@@ -1,10 +1,85 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat Configuration Reference (6.0.41) - The HTTP Connector</title><meta name="author" content="Craig R. McClanahan"><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.77) - The HTTP Connector</title><meta name="author" content="Craig R. McClanahan"><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

     The Apache Tomcat Servlet/JSP Container

-  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat Configuration Reference</h1><h2>The HTTP Connector</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

-<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#Standard_Implementation">Standard Implementation</a></li><li><a href="#Nio_Implementation">Nio Implementation</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Special_Features">Special Features</a><ol><li><a href="#HTTP/1.1_and_HTTP/1.0_Support">HTTP/1.1 and HTTP/1.0 Support</a></li><li><a href="#Proxy_Support">Proxy Support</a></li><li><a href="#SSL_Support">SSL Support</a></li><li><a href="#Connector_Comparison">Connector Comparison</a></li></ol></li></ul>

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="sessionidgenerator.html">SessionIdGenerator</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The HTTP Connector</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#Standard_Implementation">Standard Implementation</a></li><li><a href="#Java_TCP_socket_attributes">Java TCP socket attributes</a></li><li><a href="#BIO_specific_configuration">BIO specific configuration</a></li><li><a href="#NIO_specific_configuration">NIO specific configuration</a></li><li><a href="#APR/native_specific_configuration">APR/native specific configuration</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Special_Features">Special Features</a><ol><li><a href="#HTTP/1.1_and_HTTP/1.0_Support">HTTP/1.1 and HTTP/1.0 Support</a></li><li><a href="#Proxy_Support">Proxy Support</a></li><li><a href="#SSL_Support">SSL Support</a><ol><li><a href="#SSL_Support_-_BIO_and_NIO">SSL Support - BIO and NIO</a></li><li><a href="#SSL_Support_-_APR/Native">SSL Support - APR/Native</a></li></ol></li><li><a href="#Connector_Comparison">Connector Comparison</a></li></ol></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

   <p>The <strong>HTTP Connector</strong> element represents a

@@ -19,8 +94,8 @@
 

   <p>If you wish to configure the <strong>Connector</strong> that is used

   for connections to web servers using the AJP protocol (such as the

-  <code>mod_jk 1.2.x</code> connector for Apache 1.3), see

-  <a href="ajp.html">here</a> instead.</p>

+  <code>mod_jk 1.2.x</code> connector for Apache 1.3), please refer to the

+  <a href="ajp.html">AJP Connector</a> documentation.</p>

 

   <p>Each incoming request requires

   a thread for the duration of that request.  If more simultaneous requests

@@ -40,43 +115,39 @@
   <p>All implementations of <strong>Connector</strong>

   support the following attributes:</p>

 

-  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>allowTrace</code></td><td align="left" valign="center">

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">allowTrace</code></td><td align="left" valign="center">

       <p>A boolean value which can be used to enable or disable the TRACE

       HTTP method. If not specified, this attribute is set to false.</p>

-    </td></tr><tr><td align="left" valign="center"><code>emptySessionPath</code></td><td align="left" valign="center">

-      <p>If set to <code>true</code>, all paths for session cookies will be set

-      to <code>/</code>. This can be useful for portlet specification implementations.

-      If not specified, this attribute is set to <code>false</code>.<br>

-      A side effect to setting this to true, is that if Tomcat creates a new session it will attempt to use the 

-      cookie session id if supplied by the client.<br>

-      <a href="http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/connector/Request.java?diff_format=h&view=log#rev303682">SVN check in</a><br>

-      <a href="http://tomcat.markmail.org/search/?q=emptysessionpath%20reuse#query:emptysessionpath%20reuse%20date%3A200502%20+page:1+mid:2bocwjhn3cczsoii+state:results">Dev discussion</a><br>

-      <a href="https://issues.apache.org/bugzilla/show_bug.cgi?id=47298">Work around</a>

-      </p>

-    </td></tr><tr><td align="left" valign="center"><code>enableLookups</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">asyncTimeout</code></td><td align="left" valign="center">

+      <p>The default timeout for asynchronous requests in milliseconds. If not

+      specified, this attribute is set to 10000 (10 seconds).</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">enableLookups</code></td><td align="left" valign="center">

       <p>Set to <code>true</code> if you want calls to

       <code>request.getRemoteHost()</code> to perform DNS lookups in

       order to return the actual host name of the remote client.  Set

       to <code>false</code> to skip the DNS lookup and return the IP

       address in String form instead (thereby improving performance).

       By default, DNS lookups are disabled.</p>

-    </td></tr><tr><td align="left" valign="center"><code>maxHeaderCount</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxHeaderCount</code></td><td align="left" valign="center">

       <p>The maximum number of headers in a request that are allowed by the

       container. A request that contains more headers than the specified limit

       will be rejected. A value of less than 0 means no limit.

       If not specified, a default of 100 is used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>maxParameterCount</code></td><td align="left" valign="center">

-      <p>The maximum number of parameters (GET plus POST) which will be

-      automatically parsed by the container. A value of less than 0 means no

-      limit. If not specified, a default of 10000 is used. Note that

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxParameterCount</code></td><td align="left" valign="center">

+      <p>The maximum number of parameter and value pairs (GET plus POST) which

+      will be automatically parsed by the container. Parameter and value pairs

+      beyond this limit will be ignored. A value of less than 0 means no limit.

+      If not specified, a default of 10000 is used. Note that

       <code>FailedRequestFilter</code> <a href="filter.html">filter</a> can be

       used to reject requests that hit the limit.</p>

-    </td></tr><tr><td align="left" valign="center"><code>maxPostSize</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxPostSize</code></td><td align="left" valign="center">

       <p>The maximum size in bytes of the POST which will be handled by

       the container FORM URL parameter parsing. The limit can be disabled by

-      setting this attribute to a value less than or equal to 0.

-      If not specified, this attribute is set to 2097152 (2 megabytes).</p>

-    </td></tr><tr><td align="left" valign="center"><code>maxSavePostSize</code></td><td align="left" valign="center">

+      setting this attribute to a value less than zero. If not specified, this

+      attribute is set to 2097152 (2 megabytes). Note that the

+      <a href="filter.html#Failed_Request_Filter"><code>FailedRequestFilter</code></a>

+      can be used to reject requests that exceed this limit.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxSavePostSize</code></td><td align="left" valign="center">

       <p>The maximum size in bytes of the POST which will be saved/buffered by

       the container during FORM or CLIENT-CERT authentication. For both types

       of authentication, the POST will be saved/buffered before the user is

@@ -89,88 +160,86 @@
       attribute to -1. Setting the attribute to zero will disable the saving of

       POST data during authentication. If not specified, this attribute is set

       to 4096 (4 kilobytes).</p>

-    </td></tr><tr><td align="left" valign="center"><code>parseBodyMethods</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">parseBodyMethods</code></td><td align="left" valign="center">

       <p>A comma-separated list of HTTP methods for which request

       bodies will be parsed for request parameters identically

       to POST. This is useful in RESTful applications that want to

       support POST-style semantics for PUT requests.

       Note that any setting other than <code>POST</code> causes Tomcat

-      to behave in a way that does against the intent of the servlet

+      to behave in a way that goes against the intent of the servlet

       specification.

       The HTTP method TRACE is specifically forbidden here in accordance

       with the HTTP specification.

       The default is <code>POST</code></p>

-    </td></tr><tr><td align="left" valign="center"><strong><code>port</code></strong></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">port</code></strong></td><td align="left" valign="center">

       <p>The TCP port number on which this <strong>Connector</strong>

       will create a server socket and await incoming connections.  Your

       operating system will allow only one server application to listen

-      to a particular port number on a particular IP address.</p>

-    </td></tr><tr><td align="left" valign="center"><code>protocol</code></td><td align="left" valign="center">

-      <p>

-        Sets the protocol to handle incoming traffic.

-        The default value is <code>HTTP/1.1</code> and configures the 

-        <code>org.apache.coyote.http11.Http11Protocol</code>. This is the blocking Java connector.<br>

-        If the <code>PATH</code> (Windows) or <code>LD_LIBRARY_PATH</code> (on most unix systems)

-        environment variables contain the Tomcat native library, the APR connector

-        will automatically be configured. Please be advised that the APR connector has different

-        settings for HTTPS than the default Java connector.<br>

-        Other values for this attribute are, but not limited to:<br>

-        <code>org.apache.coyote.http11.Http11Protocol</code> - same as HTTP/1.1<br>

-        <code>org.apache.coyote.http11.Http11NioProtocol</code> - non blocking Java connector<br>

-        <code>org.apache.coyote.http11.Http11AprProtocol</code> - the APR connector.<br>

-        Take a look at our <a href="#Connector Comparison">Connector Comparison</a> chart.

-        The configuration for both Java connectors are identical, both for http and https. <br>

-        For more information on the APR connector and APR specific SSL settings please 

-        visit the <a href="../apr.html">APR documentation</a>

+      to a particular port number on a particular IP address. If the special

+      value of 0 (zero) is used, then Tomcat will select a free port at random

+      to use for this connector. This is typically only useful in embedded and

+      testing applications.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">protocol</code></td><td align="left" valign="center">

+      <p>Sets the protocol to handle incoming traffic. The default value is

+        <code>HTTP/1.1</code> which uses an auto-switching mechanism to select

+        either a blocking Java based connector or an APR/native based connector.

+        If the <code>PATH</code> (Windows) or <code>LD_LIBRARY_PATH</code> (on

+        most unix systems) environment variables contain the Tomcat native

+        library, the APR/native connector will be used. If the native library

+        cannot be found, the blocking Java based connector will be used. Note

+        that the APR/native connector has different settings for HTTPS than the

+        Java connectors.<br>

+        To use an explicit protocol rather than rely on the auto-switching

+        mechanism described above, the following values may be used:<br>

+        <code>org.apache.coyote.http11.Http11Protocol</code> -

+              blocking Java connector<br>

+        <code>org.apache.coyote.http11.Http11NioProtocol</code> -

+              non blocking Java connector<br>

+        <code>org.apache.coyote.http11.Http11AprProtocol</code> -

+              the APR/native connector.<br>

+        Custom implementations may also be used.<br>

+        Take a look at our <a href="#Connector_Comparison">Connector

+        Comparison</a> chart. The configuration for both Java connectors is

+        identical, for http and https.<br>

+        For more information on the APR connector and APR specific SSL settings

+        please  visit the <a href="../apr.html">APR documentation</a>

       </p>

-    </td></tr><tr><td align="left" valign="center"><code>proxyName</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">proxyName</code></td><td align="left" valign="center">

       <p>If this <strong>Connector</strong> is being used in a proxy

       configuration, configure this attribute to specify the server name

       to be returned for calls to <code>request.getServerName()</code>.

-      See <a href="#Proxy Support">Proxy Support</a> for more

+      See <a href="#Proxy_Support">Proxy Support</a> for more

       information.</p>

-    </td></tr><tr><td align="left" valign="center"><code>proxyPort</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">proxyPort</code></td><td align="left" valign="center">

       <p>If this <strong>Connector</strong> is being used in a proxy

       configuration, configure this attribute to specify the server port

       to be returned for calls to <code>request.getServerPort()</code>.

-      See <a href="#Proxy Support">Proxy Support</a> for more

+      See <a href="#Proxy_Support">Proxy Support</a> for more

       information.</p>

-    </td></tr><tr><td align="left" valign="center"><code>redirectPort</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">redirectPort</code></td><td align="left" valign="center">

       <p>If this <strong>Connector</strong> is supporting non-SSL

       requests, and a request is received for which a matching

       <code>&lt;security-constraint&gt;</code> requires SSL transport,

       Catalina will automatically redirect the request to the port

       number specified here.</p>

-    </td></tr><tr><td align="left" valign="center"><code>SSLEnabled</code></td><td align="left" valign="center">

-      <p>

-      Use this attribute to enable SSL traffic on a connector.

-      To turn on SSL handshake/encryption/decryption on a connector

-      set this value to <code>true</code>.

-      The default value is <code>false</code>.

-      When turning this value <code>true</code> you will want to set the 

-      <code>scheme</code> and the <code>secure</code> attributes as well

-      to pass the correct <code>request.getScheme()</code> and 

-      <code>request.isSecure()</code> values to the servlets

-      See <a href="#SSL Support">SSL Support</a> for more information.

-      </p>

-    </td></tr><tr><td align="left" valign="center"><code>scheme</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">scheme</code></td><td align="left" valign="center">

       <p>Set this attribute to the name of the protocol you wish to have

       returned by calls to <code>request.getScheme()</code>.  For

       example, you would set this attribute to "<code>https</code>"

       for an SSL Connector.  The default value is "<code>http</code>".

       </p>

-    </td></tr><tr><td align="left" valign="center"><code>secure</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">secure</code></td><td align="left" valign="center">

       <p>Set this attribute to <code>true</code> if you wish to have

       calls to <code>request.isSecure()</code> to return <code>true</code>

       for requests received by this Connector. You would want this on an

-      SSL Connector or a non SSL connector that is receiving data from a 

+      SSL Connector or a non SSL connector that is receiving data from a

       SSL accelerator, like a crypto card, a SSL appliance or even a webserver.

       The default value is <code>false</code>.</p>

-    </td></tr><tr><td align="left" valign="center"><code>URIEncoding</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">URIEncoding</code></td><td align="left" valign="center">

       <p>This specifies the character encoding used to decode the URI bytes,

       after %xx decoding the URL. If not specified, ISO-8859-1 will be used.

       </p>

-    </td></tr><tr><td align="left" valign="center"><code>useBodyEncodingForURI</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">useBodyEncodingForURI</code></td><td align="left" valign="center">

       <p>This specifies if the encoding specified in contentType should be used

       for URI query parameters, instead of using the URIEncoding. This

       setting is present for compatibility with Tomcat 4.1.x, where the

@@ -178,11 +247,20 @@
       Request.setCharacterEncoding method was also used for the parameters from

       the URL. The default value is <code>false</code>.

       </p>

-    </td></tr><tr><td align="left" valign="center"><code>useIPVHosts</code></td><td align="left" valign="center">

+      <p><strong>Notes:</strong> 1) This setting is applied only to the

+      query string of a request. Unlike <code>URIEncoding</code> it does not

+      affect the path portion of a request URI. 2) If request character

+      encoding is not known (is not provided by a browser and is not set by

+      <code>SetCharacterEncodingFilter</code> or a similar filter using

+      Request.setCharacterEncoding method), the default encoding is always

+      "ISO-8859-1". The <code>URIEncoding</code> setting has no effect on

+      this default.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">useIPVHosts</code></td><td align="left" valign="center">

       <p>Set this attribute to <code>true</code> to cause Tomcat to use

       the IP address that the request was received on to determine the Host

       to send the request to.  The default value is <code>false</code>.</p>

-    </td></tr><tr><td align="left" valign="center"><code>xpoweredBy</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">xpoweredBy</code></td><td align="left" valign="center">

       <p>Set this attribute to <code>true</code> to cause Tomcat to advertise

       support for the Servlet specification using the header recommended in the

       specification.  The default value is <code>false</code>.</p>

@@ -192,29 +270,50 @@
 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Standard Implementation"><!--()--></a><a name="Standard_Implementation"><strong>Standard Implementation</strong></a></font></td></tr><tr><td><blockquote>

 

-  <p>

-  HTTP supports the following additional attributes (in addition to the

-  common attributes listed above):</p>

+  <p>The standard HTTP connectors (BIO, NIO and APR/native) all support the

+  following attributes in addition to the common Connector attributes listed

+  above.</p>

 

-  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>acceptCount</code></td><td align="left" valign="center">

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">acceptCount</code></td><td align="left" valign="center">

       <p>The maximum queue length for incoming connection requests when

       all possible request processing threads are in use.  Any requests

       received when the queue is full will be refused.  The default

       value is 100.</p>

-    </td></tr><tr><td align="left" valign="center"><code>address</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">acceptorThreadCount</code></td><td align="left" valign="center">

+      <p>The number of threads to be used to accept connections. Increase this

+      value on a multi CPU machine, although you would never really need more

+      than <code>2</code>. Also, with a lot of non keep alive connections, you

+      might want to increase this value as well. Default value is

+      <code>1</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">acceptorThreadPriority</code></td><td align="left" valign="center">

+      <p>The priority of the acceptor threads. The threads used to accept

+      new connections. The default value is <code>5</code> (the value of the

+      <code>java.lang.Thread.NORM_PRIORITY</code> constant). See the JavaDoc

+      for the <code>java.lang.Thread</code> class for more details on what

+      this priority means.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">address</code></td><td align="left" valign="center">

       <p>For servers with more than one IP address, this attribute

       specifies which address will be used for listening on the specified

       port.  By default, this port will be used on all IP addresses

       associated with the server.</p>

-    </td></tr><tr><td align="left" valign="center"><code>bufferSize</code></td><td align="left" valign="center">

-      <p>The size (in bytes) of the buffer to be provided for input

-      streams created by this connector.  By default, buffers of

-      2048 bytes will be provided.</p>

-    </td></tr><tr><td align="left" valign="center"><code>compressableMimeType</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">allowedTrailerHeaders</code></td><td align="left" valign="center">

+      <p>By default Tomcat will ignore all trailer headers when processing

+      chunked input. For a header to be processed, it must be added to this

+      comma-separated list of header names.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">bindOnInit</code></td><td align="left" valign="center">

+      <p>Controls when the socket used by the connector is bound. By default it

+      is bound when the connector is initiated and unbound when the connector is

+      destroyed. If set to <code>false</code>, the socket will be bound when the

+      connector is started and unbound when it is stopped.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">compressibleMimeType</code></td><td align="left" valign="center">

       <p>The value is a comma separated list of MIME types for which HTTP

       compression may be used.

-      The default value is <code>text/html,text/xml,text/plain</code>.</p>

-    </td></tr><tr><td align="left" valign="center"><code>compression</code></td><td align="left" valign="center">

+      The default value is

+      <code>

+      text/html,text/xml,text/plain,text/css,text/javascript,application/javascript

+      </code>.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">compression</code></td><td align="left" valign="center">

       <p>The <strong>Connector</strong> may use HTTP/1.1 GZIP compression in

       an attempt to save server bandwidth. The acceptable values for the

       parameter is "off" (disable compression), "on" (allow compression, which

@@ -236,67 +335,141 @@
       <code>conf/web.xml</code> or in the <code>web.xml</code> of your web

       application.

       </p>

-    </td></tr><tr><td align="left" valign="center"><code>connectionLinger</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">compressionMinSize</code></td><td align="left" valign="center">

+      <p>If <strong>compression</strong> is set to "on" then this attribute

+      may be used to specify the minimum amount of data before the output is

+      compressed. If not specified, this attribute is defaults to "2048".</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">connectionLinger</code></td><td align="left" valign="center">

       <p>The number of seconds during which the sockets used by this

-      <strong>Connector</strong> will linger when they are closed. Setting this

-      attribute to <code>-1</code> will disable connection linger. The default

-      value for the BIO and AJP connectors is 100. The default value for the NIO

-      connection is 25.</p>

-    </td></tr><tr><td align="left" valign="center"><code>connectionTimeout</code></td><td align="left" valign="center">

+      <strong>Connector</strong> will linger when they are closed. The default

+      value is <code>-1</code> which disables socket linger.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">connectionTimeout</code></td><td align="left" valign="center">

       <p>The number of milliseconds this <strong>Connector</strong> will wait,

       after accepting a connection, for the request URI line to be

-      presented.  The default value is 60000 (i.e. 60 seconds).</p>

-    </td></tr><tr><td align="left" valign="center"><code>executor</code></td><td align="left" valign="center">

-      <p>A reference to the name in an <a href="executor.html">Executor</a> element.

-         If this attribute is enabled, and the named executor exists, the connector will

-         use the executor, and all the other thread attributes will be ignored.</p>

-    </td></tr><tr><td align="left" valign="center"><code>keepAliveTimeout</code></td><td align="left" valign="center">

-      <p>The number of milliseconds this <strong>Connector</strong> will wait for

-       another HTTP request before closing the connection.

-       The default value is to use the value that has been set for the

-       connectionTimeout attribute.</p>

-    </td></tr><tr><td align="left" valign="center"><code>disableUploadTimeout</code></td><td align="left" valign="center">

-      <p>This flag allows the servlet container to use a different, longer

-      connection timeout while a servlet is being executed, which in the end

-      allows either the servlet a longer amount of time to complete its

-      execution, or a longer timeout during data upload. If not specified,

-      this attribute is set to "true".</p>

-    </td></tr><tr><td align="left" valign="center"><code>maxHttpHeaderSize</code></td><td align="left" valign="center">

+      presented. Use a value of -1 to indicate no (i.e. infinite) timeout.

+      The default value is 60000 (i.e. 60 seconds) but note that the standard

+      server.xml that ships with Tomcat sets this to 20000 (i.e. 20 seconds).

+      Unless <strong>disableUploadTimeout</strong> is set to <code>false</code>,

+      this timeout will also be used when reading the request body (if any).</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">connectionUploadTimeout</code></td><td align="left" valign="center">

+      <p>Specifies the timeout, in milliseconds, to use while a data upload is

+      in progress. This only takes effect if

+      <strong>disableUploadTimeout</strong> is set to <code>false</code>.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">disableUploadTimeout</code></td><td align="left" valign="center">

+      <p>This flag allows the servlet container to use a different, usually

+      longer connection timeout during data upload. If not specified, this

+      attribute is set to <code>true</code> which disables this longer timeout.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">executor</code></td><td align="left" valign="center">

+      <p>A reference to the name in an <a href="executor.html">Executor</a>

+      element. If this attribute is set, and the named executor exists, the

+      connector will use the executor, and all the other thread attributes will

+      be ignored. Note that if a shared executor is not specified for a

+      connector then the connector will use a private, internal executor to

+      provide the thread pool.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">executorTerminationTimeoutMillis</code></td><td align="left" valign="center">

+      <p>The time that the private internal executor will wait for request

+      processing threads to terminate before continuing with the process of

+      stopping the connector. If not set, the default is <code>0</code> (zero)

+      for the BIO connector and <code>5000</code> (5 seconds) for the NIO and

+      APR/native connectors.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">keepAliveTimeout</code></td><td align="left" valign="center">

+      <p>The number of milliseconds this <strong>Connector</strong> will wait

+      for another HTTP request before closing the connection. The default value

+      is to use the value that has been set for the

+      <strong>connectionTimeout</strong> attribute.

+      Use a value of -1 to indicate no (i.e. infinite) timeout.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxConnections</code></td><td align="left" valign="center">

+      <p>The maximum number of connections that the server will accept and

+      process at any given time. When this number has been reached, the server

+      will accept, but not process, one further connection. This additional

+      connection be blocked until the number of connections being processed

+      falls below <strong>maxConnections</strong> at which point the server will

+      start accepting and processing new connections again. Note that once the

+      limit has been reached, the operating system may still accept connections

+      based on the <code>acceptCount</code> setting. The default value varies by

+      connector type. For BIO the default is the value of

+      <strong>maxThreads</strong> unless an <a href="executor.html">Executor</a>

+      is used in which case the default will be the value of maxThreads from the

+      executor. For NIO the default is <code>10000</code>.

+      For APR/native, the default is <code>8192</code>.</p>

+      <p>Note that for APR/native on Windows, the configured value will be

+      reduced to the highest multiple of 1024 that is less than or equal to

+      maxConnections. This is done for performance reasons.<br>

+      If set to a value of -1, the maxConnections feature is disabled 

+      and connections are not counted.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxCookieCount</code></td><td align="left" valign="center">

+      <p>The maximum number of cookies that are permitted for a request. A value

+      of less than zero means no limit. If not specified, a default value of 200

+      will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxExtensionSize</code></td><td align="left" valign="center">

+      <p>Limits the total length of chunk extensions in chunked HTTP requests.

+      If the value is <code>-1</code>, no limit will be imposed. If not

+      specified, the default value of <code>8192</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxHttpHeaderSize</code></td><td align="left" valign="center">

       <p>The maximum size of the request and response HTTP header, specified

-      in bytes.

-      If not specified, this attribute is set to 8192 (8 KB).</p>

-    </td></tr><tr><td align="left" valign="center"><code>maxKeepAliveRequests</code></td><td align="left" valign="center">

+      in bytes. If not specified, this attribute is set to 8192 (8 KB).</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxKeepAliveRequests</code></td><td align="left" valign="center">

       <p>The maximum number of HTTP requests which can be pipelined until

       the connection is closed by the server. Setting this attribute to 1 will

       disable HTTP/1.0 keep-alive, as well as HTTP/1.1 keep-alive and

       pipelining. Setting this to -1 will allow an unlimited amount of

       pipelined or keep-alive HTTP requests.

       If not specified, this attribute is set to 100.</p>

-    </td></tr><tr><td align="left" valign="center"><code>maxThreads</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxSwallowSize</code></td><td align="left" valign="center">

+      <p>The maximum number of request body bytes (excluding transfer encoding

+      overhead) that will be swallowed by Tomcat for an aborted upload. An

+      aborted upload is when Tomcat knows that the request body is going to be

+      ignored but the client still sends it. If Tomcat does not swallow the body

+      the client is unlikely to see the response. If not specified the default

+      of 2097152 (2 megabytes) will be used. A value of less than zero indicates

+      that no limit should be enforced.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxThreads</code></td><td align="left" valign="center">

       <p>The maximum number of request processing threads to be created

       by this <strong>Connector</strong>, which therefore determines the

       maximum number of simultaneous requests that can be handled.  If

       not specified, this attribute is set to 200. If an executor is associated

-      with this connector, this attribute is ignored as the connector will 

-      execute tasks using the executor rather than an internal thread pool.</p>

-    </td></tr><tr><td align="left" valign="center"><code>noCompressionUserAgents</code></td><td align="left" valign="center">

-      <p>The value is a comma separated list of regular expressions matching

-      user-agents of HTTP clients for which compression should not be used,

+      with this connector, this attribute is ignored as the connector will

+      execute tasks using the executor rather than an internal thread pool. Note

+      that if an executor is configured any value set for this attribute will be

+      recorded correctly but it will be reported (e.g. via JMX) as

+      <code>-1</code> to make clear that it is not used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxTrailerSize</code></td><td align="left" valign="center">

+      <p>Limits the total length of trailing headers in the last chunk of

+      a chunked HTTP request. If the value is <code>-1</code>, no limit will be

+      imposed. If not specified, the default value of <code>8192</code> will be

+      used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">minSpareThreads</code></td><td align="left" valign="center">

+      <p>The minimum number of threads always kept running. If not specified,

+      the default of <code>10</code> is used. If an executor is associated

+      with this connector, this attribute is ignored as the connector will

+      execute tasks using the executor rather than an internal thread pool. Note

+      that if an executor is configured any value set for this attribute will be

+      recorded correctly but it will be reported (e.g. via JMX) as

+      <code>-1</code> to make clear that it is not used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">noCompressionUserAgents</code></td><td align="left" valign="center">

+      <p>The value is a regular expression (using <code>java.util.regex</code>)

+      matching the <code>user-agent</code> header of HTTP clients for which

+      compression should not be used,

       because these clients, although they do advertise support for the

       feature, have a broken implementation.

       The default value is an empty String (regexp matching disabled).</p>

-    </td></tr><tr><td align="left" valign="center"><strong><code>port</code></strong></td><td align="left" valign="center">

-      <p>The TCP port number on which this <strong>Connector</strong>

-      will create a server socket and await incoming connections.  Your

-      operating system will allow only one server application to listen

-      to a particular port number on a particular IP address.</p>

-    </td></tr><tr><td align="left" valign="center"><code>restrictedUserAgents</code></td><td align="left" valign="center">

-      <p>The value is a comma separated list of regular expressions matching

-      user-agents of HTTP clients for which HTTP/1.1 or HTTP/1.0 keep alive

-      should not be used, even if the clients advertise support for these

-      features.

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">processorCache</code></td><td align="left" valign="center">

+      <p>The protocol handler caches Processor objects to speed up performance.

+      This setting dictates how many of these objects get cached.

+      <code>-1</code> means unlimited, default is <code>200</code>. If not using

+      Servlet 3.0 asynchronous processing, a good default is to use the same as

+      the maxThreads setting. If using Servlet 3.0 asynchronous processing, a

+      good default is to use the larger of maxThreads and the maximum number of

+      expected concurrent requests (synchronous and asynchronous).</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">restrictedUserAgents</code></td><td align="left" valign="center">

+      <p>The value is a regular expression (using <code>java.util.regex</code>)

+      matching the <code>user-agent</code> header of HTTP clients for which

+      HTTP/1.1 or HTTP/1.0 keep alive should not be used, even if the clients

+      advertise support for these features.

       The default value is an empty String (regexp matching disabled).</p>

-    </td></tr><tr><td align="left" valign="center"><code>server</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">server</code></td><td align="left" valign="center">

       <p>Overrides the Server header for the http response. If set, the value

       for this attribute overrides the Tomcat default and any Server header set

       by a web application. If not set, any value specified by the application

@@ -304,194 +477,291 @@
       <code>Apache-Coyote/1.1</code> is used. Unless you are paranoid, you won't

       need this feature.

       </p>

-    </td></tr><tr><td align="left" valign="center"><code>socketBuffer</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">socketBuffer</code></td><td align="left" valign="center">

       <p>The size (in bytes) of the buffer to be provided for socket

       output buffering. -1 can be specified to disable the use of a buffer.

       By default, a buffers of 9000 bytes will be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>tcpNoDelay</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLEnabled</code></td><td align="left" valign="center">

+      <p>Use this attribute to enable SSL traffic on a connector.

+      To turn on SSL handshake/encryption/decryption on a connector

+      set this value to <code>true</code>.

+      The default value is <code>false</code>.

+      When turning this value <code>true</code> you will want to set the

+      <code>scheme</code> and the <code>secure</code> attributes as well

+      to pass the correct <code>request.getScheme()</code> and

+      <code>request.isSecure()</code> values to the servlets

+      See <a href="#SSL_Support">SSL Support</a> for more information.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">tcpNoDelay</code></td><td align="left" valign="center">

       <p>If set to <code>true</code>, the TCP_NO_DELAY option will be

       set on the server socket, which improves performance under most

       circumstances.  This is set to <code>true</code> by default.</p>

-    </td></tr><tr><td align="left" valign="center"><code>threadPriority</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">threadPriority</code></td><td align="left" valign="center">

       <p>The priority of the request processing threads within the JVM.

       The default value is <code>5</code> (the value of the

       <code>java.lang.Thread.NORM_PRIORITY</code> constant). See the JavaDoc

       for the <code>java.lang.Thread</code> class for more details on what

-      this priority means.

-      </p>

+      this priority means. If an executor is associated

+      with this connector, this attribute is ignored as the connector will

+      execute tasks using the executor rather than an internal thread pool. Note

+      that if an executor is configured any value set for this attribute will be

+      recorded correctly but it will be reported (e.g. via JMX) as

+      <code>-1</code> to make clear that it is not used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">upgradeAsyncWriteBufferSize</code></td><td align="left" valign="center">

+      <p>The default size of the buffer to allocate to for asynchronous writes

+      that can not be completed in a single operation, specified in bytes. Data that can't be

+      written immediately will be stored in this buffer until it can be written.

+      If more data needs to be stored than space is available in the buffer than

+      the size of the buffer will be increased for the duration of the write. If

+      not specified the default value of 8192 will be used.</p>

     </td></tr></table>

 

   </blockquote></td></tr></table>

-  

-    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Nio Implementation"><!--()--></a><a name="Nio_Implementation"><strong>Nio Implementation</strong></a></font></td></tr><tr><td><blockquote>

 

-    <p>The NIO connector exposes all the low level socket properties that can be used to tune the connector.

-    Most of these attributes are directly linked to the socket implementation in the JDK so you can find out 

-    about the actual meaning in the JDK API documentation.<br>

-    <strong>Note:</strong> On some JDK versions, setTrafficClass causes a problem, a work around for this is to add 

-    the <code>-Djava.net.preferIPv4Stack=true</code> value to your command line</p>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Java TCP socket attributes"><!--()--></a><a name="Java_TCP_socket_attributes"><strong>Java TCP socket attributes</strong></a></font></td></tr><tr><td><blockquote>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>useSendfile</code></td><td align="left" valign="center">

-        <p>(bool)Use this attribute to enable or disable sendfile capability.

-           The default value is <code>true</code>

-        </p>

-      </td></tr><tr><td align="left" valign="center"><code>useExecutor</code></td><td align="left" valign="center">

-        <p>(bool)Set to true to use the NIO thread pool executor. The default value is <code>true</code>.

-        If set to false, it uses a thread pool based on a stack for its execution.

-        Generally, using the executor yields a little bit slower performance, but yields a better

-        fairness for processing connections in a high load environment as the traffic gets queued through a 

-        FIFO queue. If set to true(default) then the max pool size is the <code>maxThreads</code> attribute

-        and the core pool size is the <code>minSpareThreads</code>.

-        This value is ignored if the <code>executor</code> attribute is present and points to a valid shared thread pool.

-        </p>

-      </td></tr><tr><td align="left" valign="center"><code>executor</code></td><td align="left" valign="center">

-        <p>A reference to the name in an <a href="executor.html">Executor</a> element.

-           If this attribute is enabled, and the named executor exists, the connector will

-           use the executor, and all the other thread attributes will be ignored.</p>

-      </td></tr><tr><td align="left" valign="center"><code>acceptorThreadCount</code></td><td align="left" valign="center">

-        <p>(int)The number of threads to be used to accept connections. Increase this value on a multi CPU machine,

-        although you would never really need more than <code>2</code>. Also, with a lot of non keep alive connections,

-        you might want to increase this value as well. Default value is <code>1</code>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>pollerThreadCount</code></td><td align="left" valign="center">

+    <p>The BIO and NIO implementation support the following Java TCP socket

+    attributes in addition to the common Connector and HTTP attributes listed

+    above.</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">socket.rxBufSize</code></td><td align="left" valign="center">

+        <p>(int)The socket receive buffer (SO_RCVBUF) size in bytes. JVM default

+        used if not set.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.txBufSize</code></td><td align="left" valign="center">

+        <p>(int)The socket send buffer (SO_SNDBUF) size in bytes. JVM default

+        used if not set.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.tcpNoDelay</code></td><td align="left" valign="center">

+        <p>(bool)This is equivalent to standard attribute

+        <strong>tcpNoDelay</strong>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.soKeepAlive</code></td><td align="left" valign="center">

+        <p>(bool)Boolean value for the socket's keep alive setting

+        (SO_KEEPALIVE). JVM default used if not set.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.ooBInline</code></td><td align="left" valign="center">

+        <p>(bool)Boolean value for the socket OOBINLINE setting. JVM default

+        used if not set.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.soReuseAddress</code></td><td align="left" valign="center">

+        <p>(bool)Boolean value for the sockets reuse address option

+        (SO_REUSEADDR). JVM default used if not set.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.soLingerOn</code></td><td align="left" valign="center">

+        <p>(bool)Boolean value for the sockets so linger option (SO_LINGER).

+        A value for the standard attribute <strong>connectionLinger</strong>

+        that is &gt;=0 is equivalent to setting this to <code>true</code>.

+        A value for the standard attribute <strong>connectionLinger</strong>

+        that is &lt;0 is equivalent to setting this to <code>false</code>.

+        Both this attribute and <code>soLingerTime</code> must be set else the

+        JVM defaults will be used for both.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.soLingerTime</code></td><td align="left" valign="center">

+        <p>(int)Value in seconds for the sockets so linger option (SO_LINGER).

+        This is equivalent to standard attribute

+        <strong>connectionLinger</strong>.

+        Both this attribute and <code>soLingerOn</code> must be set else the

+        JVM defaults will be used for both.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.soTimeout</code></td><td align="left" valign="center">

+        <p>This is equivalent to standard attribute

+        <strong>connectionTimeout</strong>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.performanceConnectionTime</code></td><td align="left" valign="center">

+        <p>(int)The first value for the performance settings. See

+        <a href="http://docs.oracle.com/javase/6/docs/api/java/net/Socket.html#setPerformancePreferences(int,%20int,%20int)">Socket Performance Options</a>.

+        All three performance attributes must be set else the JVM defaults will

+        be used for all three.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.performanceLatency</code></td><td align="left" valign="center">

+        <p>(int)The second value for the performance settings. See

+        <a href="http://docs.oracle.com/javase/6/docs/api/java/net/Socket.html#setPerformancePreferences(int,%20int,%20int)">Socket Performance Options</a>.

+        All three performance attributes must be set else the JVM defaults will

+        be used for all three.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.performanceBandwidth</code></td><td align="left" valign="center">

+        <p>(int)The third value for the performance settings. See

+        <a href="http://docs.oracle.com/javase/6/docs/api/java/net/Socket.html#setPerformancePreferences(int,%20int,%20int)">Socket Performance Options</a>.

+        All three performance attributes must be set else the JVM defaults will

+        be used for all three.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.unlockTimeout</code></td><td align="left" valign="center">

+        <p>(int) The timeout for a socket unlock. When a connector is stopped, it will try to release the acceptor thread by opening a connector to itself.

+           The default value is <code>250</code> and the value is in milliseconds</p>

+      </td></tr></table>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="BIO specific configuration"><!--()--></a><a name="BIO_specific_configuration"><strong>BIO specific configuration</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The following attributes are specific to the BIO connector.</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">disableKeepAlivePercentage</code></td><td align="left" valign="center">

+        <p>The percentage of processing threads that have to be in use before

+        HTTP keep-alives are disabled to improve scalability. Values less than

+        <code>0</code> will be changed to <code>0</code> and values greater than

+        <code>100</code> will be changed to <code>100</code>. If not specified,

+        the default value is <code>75</code>.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="NIO specific configuration"><!--()--></a><a name="NIO_specific_configuration"><strong>NIO specific configuration</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The following attributes are specific to the NIO connector.</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">pollerThreadCount</code></td><td align="left" valign="center">

         <p>(int)The number of threads to be used to run for the polling events.

-        Default value is <code>1</code> per processor. Can't see a reason to go

-        above that. But experiment and find your own results.</p>

-      </td></tr><tr><td align="left" valign="center"><code>pollerThreadPriority</code></td><td align="left" valign="center">

+        Default value is <code>1</code> per processor up to and including version 7.0.27.

+        Default value as of version 7.0.28 is <code>1</code> per processor but not more than 2.<br>

+        When accepting a socket, the operating system holds a global lock. So the benefit of 

+        going above 2 threads diminishes rapidly. Having more than one thread is for 

+        system that need to accept connections very rapidly. However usually just 

+        increasing <code>acceptCount</code> will solve that problem. 

+        Increasing this value may also be beneficial when a large amount of send file 

+        operations are going on.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">pollerThreadPriority</code></td><td align="left" valign="center">

         <p>(int)The priority of the poller threads.

         The default value is <code>5</code> (the value of the

         <code>java.lang.Thread.NORM_PRIORITY</code> constant). See the JavaDoc

         for the <code>java.lang.Thread</code> class for more details on what

-        this priority means.

+        this priority means.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">selectorTimeout</code></td><td align="left" valign="center">

+        <p>(int)The time in milliseconds to timeout on a select() for the

+        poller. This value is important, since connection clean up is done on

+        the same thread, so do not set this value to an extremely high one. The

+        default value is <code>1000</code> milliseconds.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">useComet</code></td><td align="left" valign="center">

+        <p>(bool)Whether to allow comet servlets or not. Default value is

+        <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">useSendfile</code></td><td align="left" valign="center">

+        <p>(bool)Use this attribute to enable or disable sendfile capability.

+        The default value is <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.directBuffer</code></td><td align="left" valign="center">

+        <p>(bool)Boolean value, whether to use direct ByteBuffers or java mapped

+        ByteBuffers. If <code>true</code> then

+        <code>java.nio.ByteBuffer.allocateDirect()</code> is used to allocate

+        the buffers, if <code>false</code> then

+        <code>java.nio.ByteBuffer.allocate()</code> is used. The default value

+        is <code>false</code>.<br>

+        When you are using direct buffers, make sure you allocate the

+        appropriate amount of memory for the direct memory space. On Sun's JDK

+        that would be something like <code>-XX:MaxDirectMemorySize=256m</code>.

         </p>

-      </td></tr><tr><td align="left" valign="center"><code>acceptorThreadPriority</code></td><td align="left" valign="center">

-        <p>(int)The priority of the acceptor threads. The threads used to accept new connections.

-        The default value is <code>5</code> (the value of the

-        <code>java.lang.Thread.NORM_PRIORITY</code> constant). See the JavaDoc

-        for the <code>java.lang.Thread</code> class for more details on what

-        this priority means.

-        </p>

-      </td></tr><tr><td align="left" valign="center"><code>selectorTimeout</code></td><td align="left" valign="center">

-        <p>(int)The time in milliseconds to timeout on a select() for the poller.

-           This value is important, since connection clean up is done on the same thread, so do not set this 

-           value to an extremely high one. The default value is <code>1000</code> milliseconds.</p>

-      </td></tr><tr><td align="left" valign="center"><code>useComet</code></td><td align="left" valign="center">

-        <p>(bool)Whether to allow comet servlets or not, Default value is <code>true</code>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>processorCache</code></td><td align="left" valign="center">

-        <p>(int)The protocol handler caches Http11NioProcessor objects to speed up performance.

-           This setting dictates how many of these objects get cached.

-           <code>-1</code> means unlimited, default is <code>200</code>. Set this value somewhere close to your maxThreads value.

-        </p>

-      </td></tr><tr><td align="left" valign="center"><code>maxKeepAliveRequests</code></td><td align="left" valign="center">

-        <p>The maximum number of HTTP requests which can be pipelined until

-        the connection is closed by the server. Setting this attribute to 1 will

-        disable HTTP/1.0 keep-alive, as well as HTTP/1.1 keep-alive and

-        pipelining. Setting this to -1 will allow an unlimited amount of

-        pipelined or keep-alive HTTP requests.

-        If not specified, this attribute is set to 100.</p>

-      </td></tr><tr><td align="left" valign="center"><code>socket.directBuffer</code></td><td align="left" valign="center">

-        <p>(bool)Boolean value, whether to use direct ByteBuffers or java mapped ByteBuffers. Default is <code>false</code>

-           <br>When you are using direct buffers, make sure you allocate the appropriate amount of memory for the 

-                direct memory space. On Sun's JDK that would be something like <code>-XX:MaxDirectMemorySize=256m</code></p>

-      </td></tr><tr><td align="left" valign="center"><code>socket.rxBufSize</code></td><td align="left" valign="center">

-        <p>(int)The socket receive buffer (SO_RCVBUF) size in bytes. Default value is <code>25188</code></p>

-      </td></tr><tr><td align="left" valign="center"><code>socket.txBufSize</code></td><td align="left" valign="center">

-        <p>(int)The socket send buffer (SO_SNDBUF) size in bytes. Default value is <code>43800</code></p>

-      </td></tr><tr><td align="left" valign="center"><code>socket.appReadBufSize</code></td><td align="left" valign="center">

-        <p>(int)Each connection that is opened up in Tomcat get associated with a read and a write ByteBuffer

-           This attribute controls the size of these buffers. By default this read buffer is sized at <code>8192</code> bytes.

-           For lower concurrency, you can increase this to buffer more data.

-           For an extreme amount of keep alive connections, decrease this number or increase your heap size.</p>

-      </td></tr><tr><td align="left" valign="center"><code>socket.appWriteBufSize</code></td><td align="left" valign="center">

-        <p>(int)Each connection that is opened up in Tomcat get associated with a read and a write ByteBuffer

-           This attribute controls the size of these buffers. By default this write buffer is sized at <code>8192</code> bytes.

-           For low concurrency you can increase this to buffer more response data.

-           For an extreme amount of keep alive connections, decrease this number or increase your heap size.

-           <br>

-           The default value here is pretty low, you should up it if you are not dealing with tens of thousands

-           concurrent connections.</p>

-      </td></tr><tr><td align="left" valign="center"><code>socket.bufferPool</code></td><td align="left" valign="center">

-        <p>(int)The Nio connector uses a class called NioChannel that holds elements linked to a socket.

-           To reduce garbage collection, the Nio connector caches these channel objects.

-           This value specifies the size of this cache.

-           The default value is <code>500</code>, and represents that the cache will hold 500 NioChannel objects.

-           Other values are <code>-1</code>. unlimited cache, and <code>0</code>, no cache.</p>

-      </td></tr><tr><td align="left" valign="center"><code>socket.bufferPoolSize</code></td><td align="left" valign="center">

-        <p>(int)The NioChannel pool can also be size based, not used object based. The size is calculated as follows:<br>

-        NioChannel <code>buffer size = read buffer size + write buffer size</code><br>

-        SecureNioChannel <code>buffer size = application read buffer size + application write buffer size + network read buffer size + network write buffer size</code><br>

-        The value is in bytes, the default value is <code>1024*1024*100</code> (100MB)

-        </p>

-      </td></tr><tr><td align="left" valign="center"><code>socket.processorCache</code></td><td align="left" valign="center">

-        <p>(int)Tomcat will cache SocketProcessor objects to reduce garbage collection.

-           The integer value specifies how many objects to keep in the cache at most.

-           The default is <code>500</code>.

-           Other values are <code>-1</code>. unlimited cache, and <code>0</code>, no cache.</p>

-      </td></tr><tr><td align="left" valign="center"><code>socket.keyCache</code></td><td align="left" valign="center">

-        <p>(int)Tomcat will cache KeyAttachment objects to reduce garbage collection.

-           The integer value specifies how many objects to keep in the cache at most.

-           The default is <code>500</code>.

-           Other values are <code>-1</code>. unlimited cache, and <code>0</code>, no cache.</p>

-      </td></tr><tr><td align="left" valign="center"><code>socket.eventCache</code></td><td align="left" valign="center">

-        <p>(int)Tomcat will cache PollerEvent objects to reduce garbage collection.

-           The integer value specifies how many objects to keep in the cache at most.

-           The default is <code>500</code>.

-           Other values are <code>-1</code>. unlimited cache, and <code>0</code>, no cache.</p>

-      </td></tr><tr><td align="left" valign="center"><code>socket.tcpNoDelay</code></td><td align="left" valign="center">

-        <p>(bool)same as the standard setting <code>tcpNoDelay</code>. Default value is <code>false</code></p>

-      </td></tr><tr><td align="left" valign="center"><code>socket.soKeepAlive</code></td><td align="left" valign="center">

-        <p>(bool)Boolean value for the socket's keep alive setting (SO_KEEPALIVE). Default is <code>false</code>. </p>

-      </td></tr><tr><td align="left" valign="center"><code>socket.ooBInline</code></td><td align="left" valign="center">

-        <p>(bool)Boolean value for the socket OOBINLINE setting. Default value is <code>true</code></p>

-      </td></tr><tr><td align="left" valign="center"><code>socket.soReuseAddress</code></td><td align="left" valign="center">

-        <p>(bool)Boolean value for the sockets reuse address option (SO_REUSEADDR). Default value is <code>true</code></p>

-      </td></tr><tr><td align="left" valign="center"><code>socket.soLingerOn</code></td><td align="left" valign="center">

-        <p>(bool)Boolean value for the sockets so linger option (SO_LINGER). Default value is <code>true</code>.

-           This option is paired with the <code>soLingerTime</code> value.</p>

-      </td></tr><tr><td align="left" valign="center"><code>socket.soLingerTime</code></td><td align="left" valign="center">

-        <p>(bool)Value in seconds for the sockets so linger option (SO_LINGER). Default value is <code>25</code> seconds.

-           This option is paired with the soLinger value.</p>

-      </td></tr><tr><td align="left" valign="center"><code>socket.soTimeout</code></td><td align="left" valign="center">

-        <p>(int)Value in milliseconds for the sockets read timeout (SO_TIMEOUT). Default value is <code>5000</code> milliseconds.</p>

-      </td></tr><tr><td align="left" valign="center"><code>socket.soTrafficClass</code></td><td align="left" valign="center">

-        <p>(byte)Value between <code>0</code> and <code>255</code> for the traffic class on the socket, <code>0x04 | 0x08 | 0x010</code></p>

-      </td></tr><tr><td align="left" valign="center"><code>socket.performanceConnectionTime</code></td><td align="left" valign="center">

-        <p>(int)The first value for the performance settings. Default is <code>1</code>, see <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/net/Socket.html#setPerformancePreferences(int,%20int,%20int)">Socket Performance Options</a></p>

-      </td></tr><tr><td align="left" valign="center"><code>socket.performanceLatency</code></td><td align="left" valign="center">

-        <p>(int)The second value for the performance settings. Default is <code>0</code>, see <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/net/Socket.html#setPerformancePreferences(int,%20int,%20int)">Socket Performance Options</a></p>

-      </td></tr><tr><td align="left" valign="center"><code>socket.performanceBandwidth</code></td><td align="left" valign="center">

-        <p>(int)The third value for the performance settings. Default is <code>1</code>, see <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/net/Socket.html#setPerformancePreferences(int,%20int,%20int)">Socket Performance Options</a></p>

-      </td></tr><tr><td align="left" valign="center"><code>selectorPool.maxSelectors</code></td><td align="left" valign="center">

-        <p>(int)The max selectors to be used in the pool, to reduce selector contention.

-        Use this option when the command line <code>org.apache.tomcat.util.net.NioSelectorShared</code> value is set to false.

-        Default value is <code>200</code>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>selectorPool.maxSpareSelectors</code></td><td align="left" valign="center">

-        <p>(int)The max spare selectors to be used in the pool, to reduce selector contention.

-        When a selector is returned to the pool, the system can decide to keep it or let it be GC:ed.

-        Use this option when the command line <code>org.apache.tomcat.util.net.NioSelectorShared</code> value is set to false.

-        Default value is <code>-1</code> (unlimited)</p>

-      </td></tr><tr><td align="left" valign="center"><code>command-line-options</code></td><td align="left" valign="center">

-        <p>The following command line options are available for the NIO connector:<br>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.appReadBufSize</code></td><td align="left" valign="center">

+        <p>(int)Each connection that is opened up in Tomcat get associated with

+        a read ByteBuffer. This attribute controls the size of this buffer. By

+        default this read buffer is sized at <code>8192</code> bytes. For lower

+        concurrency, you can increase this to buffer more data. For an extreme

+        amount of keep alive connections, decrease this number or increase your

+        heap size.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.appWriteBufSize</code></td><td align="left" valign="center">

+        <p>(int)Each connection that is opened up in Tomcat get associated with

+        a write ByteBuffer. This attribute controls the size of this buffer. By

+        default this write buffer is sized at <code>8192</code> bytes. For low

+        concurrency you can increase this to buffer more response data. For an

+        extreme amount of keep alive connections, decrease this number or

+        increase your heap size.<br>

+        The default value here is pretty low, you should up it if you are not

+        dealing with tens of thousands concurrent connections.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.bufferPool</code></td><td align="left" valign="center">

+        <p>(int)The NIO connector uses a class called NioChannel that holds

+        elements linked to a socket. To reduce garbage collection, the NIO

+        connector caches these channel objects. This value specifies the size of

+        this cache. The default value is <code>500</code>, and represents that

+        the cache will hold 500 NioChannel objects. Other values are

+        <code>-1</code> for unlimited cache and <code>0</code> for no cache.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.bufferPoolSize</code></td><td align="left" valign="center">

+        <p>(int)The NioChannel pool can also be size based, not used object

+        based. The size is calculated as follows:<br>

+        NioChannel

+        <code>buffer size = read buffer size + write buffer size</code><br>

+        SecureNioChannel <code>buffer size = application read buffer size +

+        application write buffer size + network read buffer size +

+        network write buffer size</code><br>

+        The value is in bytes, the default value is <code>1024*1024*100</code>

+        (100MB).</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.processorCache</code></td><td align="left" valign="center">

+        <p>(int)Tomcat will cache SocketProcessor objects to reduce garbage

+        collection. The integer value specifies how many objects to keep in the

+        cache at most. The default is <code>500</code>. Other values are

+        <code>-1</code> for unlimited cache and <code>0</code> for no cache.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.keyCache</code></td><td align="left" valign="center">

+        <p>(int)Tomcat will cache KeyAttachment objects to reduce garbage

+        collection. The integer value specifies how many objects to keep in the

+        cache at most. The default is <code>500</code>. Other values are

+        <code>-1</code> for unlimited cache and <code>0</code> for no cache.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.eventCache</code></td><td align="left" valign="center">

+        <p>(int)Tomcat will cache PollerEvent objects to reduce garbage

+        collection. The integer value specifies how many objects to keep in the

+        cache at most. The default is <code>500</code>. Other values are

+        <code>-1</code> for unlimited cache and <code>0</code> for no cache.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">selectorPool.maxSelectors</code></td><td align="left" valign="center">

+        <p>(int)The max selectors to be used in the pool, to reduce selector

+        contention. Use this option when the command line

+        <code>org.apache.tomcat.util.net.NioSelectorShared</code> value is set

+        to false. Default value is <code>200</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">selectorPool.maxSpareSelectors</code></td><td align="left" valign="center">

+        <p>(int)The max spare selectors to be used in the pool, to reduce

+        selector contention. When a selector is returned to the pool, the system

+        can decide to keep it or let it be GC'd. Use this option when the

+        command line <code>org.apache.tomcat.util.net.NioSelectorShared</code>

+        value is set to false. Default value is <code>-1</code> (unlimited).</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">command-line-options</code></td><td align="left" valign="center">

+        <p>The following command line options are available for the NIO

+        connector:<br>

         <code>-Dorg.apache.tomcat.util.net.NioSelectorShared=true|false</code>

         - default is <code>true</code>. Set this value to <code>false</code> if you wish to

         use a selector for each thread. When you set it to <code>false</code>, you can

-        control the size of the pool of selectors by using the 

-        <strong>selectorPool.maxSelectors</strong> attribute</p>

-      </td></tr><tr><td align="left" valign="center"><code>oomParachute</code></td><td align="left" valign="center">

-        <p>(int)The NIO connector implements an OutOfMemoryError strategy called parachute.

-           It holds a chunk of data as a byte array. In case of an OOM,

-           this chunk of data is released and the error is reported. This will give the VM enough room

-           to clean up. The <code>oomParachute</code> represent the size in bytes of the parachute(the byte array).

-           The default value is <code>1024*1024</code>(1MB).

-           Please note, this only works for OOM errors regarding the Java Heap space, and there is absolutely no 

-           guarantee that you will be able to recover at all.

-           If you have an OOM outside of the Java Heap, then this parachute trick will not help.

+        control the size of the pool of selectors by using the

+        <strong>selectorPool.maxSelectors</strong> attribute.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">oomParachute</code></td><td align="left" valign="center">

+        <p>(int)The NIO connector implements an OutOfMemoryError strategy called

+        parachute. It holds a chunk of data as a byte array. In case of an OOM,

+        this chunk of data is released and the error is reported. This will give

+        the VM enough room to clean up. The <code>oomParachute</code> represents

+        the size in bytes of the parachute(the byte array). The default value is

+        <code>1024*1024</code>(1MB). Please note, this only works for OOM errors

+        regarding the Java Heap space, and there is absolutely no  guarantee

+        that you will be able to recover at all. If you have an OOM outside of

+        the Java Heap, then this parachute trick will not help.

         </p>

-      </td></tr><tr><td align="left" valign="center"><code>socket.unlockTimeout</code></td><td align="left" valign="center">

-        <p>(int) The timeout for a socket unlock. When a connector is stopped, it will try to release the acceptor thread by opening a connector to itself.

-           The default value is <code>250</code> and the value is in milliseconds</p>

       </td></tr></table>

   </blockquote></td></tr></table>

 

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="APR/native specific configuration"><!--()--></a><a name="APR/native_specific_configuration"><strong>APR/native specific configuration</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The following attributes are specific to the APR/native connector.</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">deferAccept</code></td><td align="left" valign="center">

+        <p>Sets the <code>TCP_DEFER_ACCEPT</code> flag on the listening socket

+        for this connector. The default value is <code>true</code> where

+        <code>TCP_DEFER_ACCEPT</code> is supported by the operating system,

+        otherwise it is <code>false</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">pollerSize</code></td><td align="left" valign="center">

+        <p>Amount of sockets that the poller responsible for polling kept alive

+        connections can hold at a given time. Extra connections will be closed

+        right away. The default value is 8192, corresponding to 8192 keep-alive

+        connections. This is a synonym for maxConnections.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">pollTime</code></td><td align="left" valign="center">

+        <p>Duration of a poll call in microseconds. Lowering this value will

+        slightly decrease latency of connections being kept alive in some cases,

+        but will use more CPU as more poll calls are being made. The default

+        value is 2000 (2ms).</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sendfileSize</code></td><td align="left" valign="center">

+        <p>Amount of sockets that the poller responsible for sending static

+        files asynchronously can hold at a given time. Extra connections will be

+        closed right away without any data being sent (resulting in a zero

+        length file on the client side). Note that in most cases, sendfile is a

+        call that will return right away (being taken care of "synchronously" by

+        the kernel), and the sendfile poller will not be used, so the amount of

+        static files which can be sent concurrently is much larger than the

+        specified amount. The default value is 1024.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">threadPriority</code></td><td align="left" valign="center">

+        <p>(int)The priority of the acceptor and poller threads.

+        The default value is <code>5</code> (the value of the

+        <code>java.lang.Thread.NORM_PRIORITY</code> constant). See the JavaDoc

+        for the <code>java.lang.Thread</code> class for more details on what

+        this priority means.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">useComet</code></td><td align="left" valign="center">

+        <p>(bool)Whether to allow comet servlets or not. Default value is

+        <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">useSendfile</code></td><td align="left" valign="center">

+        <p>(bool)Use this attribute to enable or disable sendfile capability.

+        The default value is <code>true</code>.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Nested Components"><!--()--></a><a name="Nested_Components"><strong>Nested Components</strong></a></font></td></tr><tr><td><blockquote>

 

   <p>None at this time.</p>

@@ -543,137 +813,30 @@
   <strong>Connector</strong> by setting the <code>SSLEnabled</code> attribute to

   <code>true</code>.</p>

 

-  <p>You will also need to set the <code>scheme</code> and <code>secure</code> attributes

-  to the values <code>https</code> and <code>true</code> respectively,

-  to pass correct information to the servlets.</p>

+  <p>You will also need to set the <code>scheme</code> and <code>secure</code>

+  attributes to the values <code>https</code> and <code>true</code>

+  respectively, to pass correct information to the servlets.</p>

 

-  <p>In addition, you may need to configure the following

-  attributes:</p>

+  <p>The BIO and NIO connectors use the JSSE SSL whereas the APR/native

+  connector uses OpenSSL. Therefore, in addition to using different attributes

+  to configure SSL, the APR/native connector also requires keys and certificates

+  to be provided in a different format.</p>

 

-  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>algorithm</code></td><td align="left" valign="center">

+  <p>For more information, see the

+  <a href="../ssl-howto.html">SSL Configuration HOW-TO</a>.</p>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="SSL Support - BIO and NIO"><!--()--></a><a name="SSL_Support_-_BIO_and_NIO"><strong>SSL Support - BIO and NIO</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>The BIO and NIO connectors use the following attributes to configure SSL:

+  </p>

+

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">algorithm</code></td><td align="left" valign="center">

       <p>The certificate encoding algorithm to be used. This defaults to

       <code>KeyManagerFactory.getDefaultAlgorithm()</code> which returns

       <code>SunX509</code> for Sun JVMs. IBM JVMs return

       <code>IbmX509</code>. For other vendors, consult the JVM

       documentation for the default value.</p>

-    </td></tr><tr><td align="left" valign="center"><code>clientAuth</code></td><td align="left" valign="center">

-      <p>Set to <code>true</code> if you want the SSL stack to require a

-      valid certificate chain from the client before accepting a connection.

-      Set to <code>want</code> if you want the SSL stack to request a client

-      Certificate, but not fail if one isn't presented. A <code>false</code>

-      value (which is the default) will not require a certificate chain

-      unless the client requests a resource protected by a security

-      constraint that uses <code>CLIENT-CERT</code> authentication. See the

-      <a href="../ssl-howto.html">SSL HowTo</a> for an example.</p>

-    </td></tr><tr><td align="left" valign="center"><code>clientCertProvider</code></td><td align="left" valign="center">

-      <p>When client certificate information is presented in a form other than

-      instances of <code>java.security.cert.X509Certificate</code> it needs to

-      be converted before it can be used and this property controls which JSSE

-      provider is used to perform the conversion. For example it is used with

-      the <a href="ajp.html">AJP connectors</a>, the HTTP APR connector and

-      with the <a href="valve.html#SSL_Authenticator_Valve">

-      org.apache.catalina.valves.SSLValve</a>. If not specified, the default

-      provider will be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>keystoreFile</code></td><td align="left" valign="center">

-      <p>The pathname of the keystore file where you have stored the

-      server certificate to be loaded.  By default, the pathname is

-      the file "<code>.keystore</code>" in the operating system home

-      directory of the user that is running Tomcat. If your

-      <code>keystoreType</code> doesn't need a file use <code>""</code>

-      (empty string) for this parameter.</p>

-    </td></tr><tr><td align="left" valign="center"><code>keystorePass</code></td><td align="left" valign="center">

-      <p>The password used to access the server certificate from the

-      specified keystore file.  The default value is "<code>changeit</code>".

-      </p>

-    </td></tr><tr><td align="left" valign="center"><code>keystoreType</code></td><td align="left" valign="center">

-      <p>The type of keystore file to be used for the server certificate.

-      If not specified, the default value is "<code>JKS</code>".</p>

-    </td></tr><tr><td align="left" valign="center"><code>keystoreProvider</code></td><td align="left" valign="center">

-      <p>The name of the keystore provider to be used for the server

-      certificate. If not specified, the list of registered providers is

-      traversed in preference order and the first provider that supports the

-      <code>keystoreType</code> is used.

-      </p>

-    </td></tr><tr><td align="left" valign="center"><code>sslProtocol</code></td><td align="left" valign="center">

-      <p>The the SSL protocol(s) to use (a single value may enable multiple

-      protocols - see the JVM documentation for details). If not specified, the

-      default is <code>TLS</code>. The permitted values may be obtained from the

-      JVM documentation for the allowed values for algorithm when creating an

-      <code>SSLContext</code> instance e.g.

-      <a href="http://docs.oracle.com/javase/6/docs/technotes/guides/security/StandardNames.html#SSLContext">

-      Oracle Java 6</a> and

-      <a href="http://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#SSLContext">

-      Oracle Java 7</a>. Note: There is overlap between this attribute and

-      <code>sslEnabledProtocols</code>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>ciphers</code></td><td align="left" valign="center">

-      <p>The comma separated list of encryption ciphers that this socket is 

-      allowed to use. By default, the default ciphers for the JVM will be used.

-      Note that this usually means that the weak export grade ciphers will be

-      included in the list of available ciphers. The ciphers are specified using

-      the JSSE cipher naming convention.</p>

-    </td></tr><tr><td align="left" valign="center"><code>keyAlias</code></td><td align="left" valign="center">

-      <p>The alias used to for the server certificate in the keystore. If not

-      specified the first key read in the keystore will be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>trustManagerClassName</code></td><td align="left" valign="center">

-      <p>The name of a custom trust manager class to use to validate client

-      certificates. The class must have a zero argument constructor and must

-      also implement <code>javax.net.ssl.X509TrustManager</code>. If this

-      attribute is set, the trust store attributes may be ignored.

-      </p>

-    </td></tr><tr><td align="left" valign="center"><code>truststoreFile</code></td><td align="left" valign="center">

-      <p>The trust store file to use to validate client certificates. The

-      default is the value of the <code>javax.net.ssl.trustStore</code> system

-      property. If neither this attribute nor the default system property is

-      set, no trust store will be configured.</p>

-    </td></tr><tr><td align="left" valign="center"><code>truststorePass</code></td><td align="left" valign="center">

-      <p>The password to access the trust store. The default is the value of the

-      <code>javax.net.ssl.trustStorePassword</code> system property. If that

-      property is null, the value of <code>keystorePass</code> is used as the

-      default. If an invalid trust store password is specified, a warning will

-      be logged and an attempt will be made to access the trust store without a

-      password which will skip validation of the trust store contents. If the

-      trust store password is defined as <code>""</code> then no

-      password will be used to access the store which will also skip validation

-      of the trust store contents.</p>

-    </td></tr><tr><td align="left" valign="center"><code>truststoreType</code></td><td align="left" valign="center">

-      <p>The type of key store used for the trust store. The default is the

-      value of the <code>javax.net.ssl.trustStoreType</code> system property. If

-      that property is null, the value of <code>keystoreType</code> is used as

-      the default.</p>

-     </td></tr><tr><td align="left" valign="center"><code>truststoreProvider</code></td><td align="left" valign="center">

-      <p>The name of the truststore provider to be used for the server

-      certificate. The default is the value of the

-      <code>javax.net.ssl.trustStoreProvider</code> system property. If

-      that property is null, the value of <code>keystoreProvider</code> is used

-      as the default. If neither this attribute, the default system property nor

-      <code>keystoreProvider</code>is set, the list of registered providers is

-      traversed in preference order and the first provider that supports the

-      <code>truststoreType</code> is used.

-      </p>

-    </td></tr><tr><td align="left" valign="center"><code>sessionCacheSize</code></td><td align="left" valign="center">

-      <p>The number of SSL sessions to maintain in the session cache. Use 0 to

-      specify an unlimited cache size. If not specified, a default of 0 is

-      used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>sessionTimeout</code></td><td align="left" valign="center">

-      <p>The time, in seconds, after the creation of an SSL session that it will

-      timeout. Use 0 to specify an unlimited timeout. If not specified, a

-      default of 86400 (24 hours) is used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>sslEnabledProtocols</code></td><td align="left" valign="center">

-      <p>The comma separated list of SSL protocols to support for HTTPS

-      connections. If specified, only the protocols that are listed and

-      supported by the SSL implementation will be enabled. If not specified,

-      the JVM default is used. The permitted values may be obtained from the

-      JVM documentation for the allowed values for 

-      <code>SSLSocket.setEnabledProtocols()</code> e.g.

-      <a href="http://docs.oracle.com/javase/6/docs/technotes/guides/security/StandardNames.html#jssenames">

-      Oracle Java 6</a> and

-      <a href="http://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#jssenames">

-      Oracle Java 7</a>. Note: There is overlap between this attribute and

-      <code>sslProtocol</code>.</p>

-    </td></tr><tr><td align="left" valign="center"><code>crlFile</code></td><td align="left" valign="center">

-      <p>The certificate revocation list file to use to validate client

-      certificates.</p>

-    </td></tr><tr><td align="left" valign="center"><code>allowUnsafeLegacyRenegotiation</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">allowUnsafeLegacyRenegotiation</code></td><td align="left" valign="center">

       <p>Is unsafe legacy TLS renegotiation allowed which is likely to expose

       users to CVE-2009-3555, a man-in-the-middle vulnerability in the TLS

       protocol that allows an attacker to inject arbitrary data into the user's

@@ -684,32 +847,319 @@
       onwards. Where RFC 5746 is supported the renegotiation - including support

       for unsafe legacy renegotiation - is controlled by the JVM configuration.

       </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">useServerCipherSuitesOrder</code></td><td align="left" valign="center">

+      <p>

+        Set to <code>true</code> to enforce the server's cipher order

+        (from the <code>ciphers</code> setting). Set to <code>false</code>

+        to choose the first acceptable cipher suite presented by the client.

+        <b>Use of this feature requires Java 8 or later.</b>

+        Default is <i>undefined</i>, leaving the choice up to the JSSE

+        implementation.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">ciphers</code></td><td align="left" valign="center">

+      <p>The comma separated list of encryption ciphers to support for HTTPS

+      connections. If specified, only the ciphers that are listed and supported

+      by the SSL implementation will be used. By default, the default ciphers

+      for the JVM will be used less those considered to be insecure. Note that

+      with older JVMs this will result in a very limited set of ciphers being

+      available by default. The ciphers are specified using the JSSE cipher

+      naming convention. The special value of <code>ALL</code> will enable all

+      supported ciphers. This will include many that are not secure.

+      <code>ALL</code> is intended for testing purposes only.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">clientAuth</code></td><td align="left" valign="center">

+      <p>Set to <code>true</code> if you want the SSL stack to require a

+      valid certificate chain from the client before accepting a connection.

+      Set to <code>want</code> if you want the SSL stack to request a client

+      Certificate, but not fail if one isn't presented. A <code>false</code>

+      value (which is the default) will not require a certificate chain

+      unless the client requests a resource protected by a security

+      constraint that uses <code>CLIENT-CERT</code> authentication.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">clientCertProvider</code></td><td align="left" valign="center">

+      <p>When client certificate information is presented in a form other than

+      instances of <code>java.security.cert.X509Certificate</code> it needs to

+      be converted before it can be used and this property controls which JSSE

+      provider is used to perform the conversion. For example it is used with

+      the <a href="ajp.html">AJP connectors</a>, the HTTP APR connector and

+      with the <a href="valve.html#SSL_Authenticator_Valve">

+      org.apache.catalina.valves.SSLValve</a>. If not specified, the default

+      provider will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">crlFile</code></td><td align="left" valign="center">

+      <p>The certificate revocation list to be used to verify client

+      certificates. If not defined, client certificates will not be checked

+      against a certificate revocation list. The file may be specified using a

+      URL, an absolute path or a relative (to CATALINA_BASE) path.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">keyAlias</code></td><td align="left" valign="center">

+      <p>The alias used for the server key and certificate in the keystore. If

+      not specified, the first key read from the keystore will be used. The

+      order in which keys are read from the keystore is implementation

+      dependent. It may not be the case that keys are read from the keystore in

+      the same order as they were added. If more than one key is present in the

+      keystore it is strongly recommended that a keyAlias is configured to

+      ensure that the correct key is used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">keyPass</code></td><td align="left" valign="center">

+      <p>The password used to access the server certificate from the

+      specified keystore file.  The default value is "<code>changeit</code>".

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">keystoreFile</code></td><td align="left" valign="center">

+      <p>The pathname of the keystore file where you have stored the

+      server certificate to be loaded.  By default, the pathname is

+      the file "<code>.keystore</code>" in the operating system home

+      directory of the user that is running Tomcat. If your

+      <code>keystoreType</code> doesn't need a file use <code>""</code>

+      (empty string) for this parameter. The file may be specified using a

+      URL, an absolute path or a relative (to CATALINA_BASE) path.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">keystorePass</code></td><td align="left" valign="center">

+      <p>The password used to access the specified keystore file. The default

+      value is the value of the <code>keyPass</code> attribute.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">keystoreProvider</code></td><td align="left" valign="center">

+      <p>The name of the keystore provider to be used for the server

+      certificate. If not specified, the list of registered providers is

+      traversed in preference order and the first provider that supports the

+      <code>keystoreType</code> is used.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">keystoreType</code></td><td align="left" valign="center">

+      <p>The type of keystore file to be used for the server certificate.

+      If not specified, the default value is "<code>JKS</code>".</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">sessionCacheSize</code></td><td align="left" valign="center">

+      <p>The number of SSL sessions to maintain in the session cache. Use 0 to

+      specify an unlimited cache size. If not specified, a default of 0 is

+      used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">sessionTimeout</code></td><td align="left" valign="center">

+      <p>The time, in seconds, after the creation of an SSL session that it will

+      timeout. Use 0 to specify an unlimited timeout. If not specified, a

+      default of 86400 (24 hours) is used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">sslEnabledProtocols</code></td><td align="left" valign="center">

+      <p>The comma separated list of SSL protocols to support for HTTPS

+      connections. If specified, only the protocols that are listed and

+      supported by the SSL implementation will be enabled.  If not specified,

+      the JVM default (excluding SSLv2 and SSLv3 if the JVM enables either or

+      both of them by default) is used. The permitted values may be obtained from the

+      JVM documentation for the allowed values for 

+      <code>SSLSocket.setEnabledProtocols()</code> e.g.

+      <a href="http://docs.oracle.com/javase/6/docs/technotes/guides/security/StandardNames.html#jssenames">

+      Oracle Java 6</a> and

+      <a href="http://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#jssenames">

+      Oracle Java 7</a>. Note: There is overlap between this attribute and

+      <code>sslProtocol</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">sslImplementationName</code></td><td align="left" valign="center">

+      <p>The class name of the SSL implementation to use. If not specified, the

+      default of <code>org.apache.tomcat.util.net.jsse.JSSEImplementation</code>

+      will be used which wraps JVM's default JSSE provider. Note that the

+      JVM can be configured to use a different JSSE provider as the default.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">sslProtocol</code></td><td align="left" valign="center">

+      <p>The SSL protocol(s) to use (a single value may enable multiple

+      protocols - see the JVM documentation for details). If not specified, the

+      default is <code>TLS</code>. The permitted values may be obtained from the

+      JVM documentation for the allowed values for algorithm when creating an

+      <code>SSLContext</code> instance e.g.

+      <a href="http://docs.oracle.com/javase/6/docs/technotes/guides/security/StandardNames.html#SSLContext">

+      Oracle Java 6</a> and

+      <a href="http://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#SSLContext">

+      Oracle Java 7</a>. Note: There is overlap between this attribute and

+      <code>sslEnabledProtocols</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">trustManagerClassName</code></td><td align="left" valign="center">

+      <p>The name of a custom trust manager class to use to validate client

+      certificates. The class must have a zero argument constructor and must

+      also implement <code>javax.net.ssl.X509TrustManager</code>. If this

+      attribute is set, the trust store attributes may be ignored.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">trustMaxCertLength</code></td><td align="left" valign="center">

+      <p>The maximum number of intermediate certificates that will be allowed

+      when validating client certificates. If not specified, the default value

+      of 5 will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">truststoreAlgorithm</code></td><td align="left" valign="center">

+      <p>The algorithm to use for truststore. If not specified, the default

+      value returned by

+      <code>javax.net.ssl.TrustManagerFactory.getDefaultAlgorithm()</code> is

+      used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">truststoreFile</code></td><td align="left" valign="center">

+      <p>The trust store file to use to validate client certificates. The

+      default is the value of the <code>javax.net.ssl.trustStore</code> system

+      property. If neither this attribute nor the default system property is

+      set, no trust store will be configured. The file may be specified using a

+      URL, an absolute path or a relative (to CATALINA_BASE) path.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">truststorePass</code></td><td align="left" valign="center">

+      <p>The password to access the trust store. The default is the value of the

+      <code>javax.net.ssl.trustStorePassword</code> system property. If that

+      property is null, no trust store password will be configured. If an

+      invalid trust store password is specified, a warning will be logged and an

+      attempt will be made to access the trust store without a password which

+      will skip validation of the trust store contents.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">truststoreProvider</code></td><td align="left" valign="center">

+      <p>The name of the truststore provider to be used for the server

+      certificate. The default is the value of the

+      <code>javax.net.ssl.trustStoreProvider</code> system property. If

+      that property is null, the value of <code>keystoreProvider</code> is used

+      as the default. If neither this attribute, the default system property nor

+      <code>keystoreProvider</code>is set, the list of registered providers is

+      traversed in preference order and the first provider that supports the

+      <code>truststoreType</code> is used.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">truststoreType</code></td><td align="left" valign="center">

+      <p>The type of key store used for the trust store. The default is the

+      value of the <code>javax.net.ssl.trustStoreType</code> system property. If

+      that property is null, the value of <code>keystoreType</code> is used as

+      the default.</p>

+     </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="SSL Support - APR/Native"><!--()--></a><a name="SSL_Support_-_APR/Native"><strong>SSL Support - APR/Native</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>When APR/native is enabled, the HTTPS connector will use a socket poller

+  for keep-alive, increasing scalability of the server. It also uses OpenSSL,

+  which may be more optimized than JSSE depending on the processor being used,

+  and can be complemented with many commercial accelerator components. Unlike

+  the HTTP connector, the HTTPS connector cannot use sendfile to optimize static

+  file processing.</p>

+

+  <p>The HTTPS APR/native connector has the same attributes than the HTTP

+  APR/native connector, but adds OpenSSL specific ones. For the full details on

+  using OpenSSL, please refer to OpenSSL documentations and the many books

+  available for it (see the <a href="http://www.openssl.org">Official OpenSSL

+  website</a>). The SSL specific attributes for the APR/native connector are:

+  </p>

+

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">SSLCACertificateFile</code></td><td align="left" valign="center">

+      <p>See <a href="http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslcacertificatefile">

+      the mod_ssl documentation</a>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLCACertificatePath</code></td><td align="left" valign="center">

+      <p>See <a href="http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslcacertificatepath">

+      the mod_ssl documentation</a>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLCARevocationFile</code></td><td align="left" valign="center">

+      <p>See <a href="http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslcarevocationfile">

+      the mod_ssl documentation</a>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLCARevocationPath</code></td><td align="left" valign="center">

+      <p>See <a href="http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslcarevocationpath">

+      the mod_ssl documentation</a>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLCertificateChainFile</code></td><td align="left" valign="center">

+      <p>See <a href="http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslcertificatechainfile">

+      the mod_ssl documentation</a>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLCACertificateFile</code></td><td align="left" valign="center">

+      <p>Name of the file that contains the concatenated certificates for the

+      trusted certificate authorities. The format is PEM-encoded.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLCACertificatePath</code></td><td align="left" valign="center">

+      <p>Name of the directory that contains the certificates for the trusted

+      certificate authorities. The format is PEM-encoded.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLCARevocationFile</code></td><td align="left" valign="center">

+      <p>Name of the file that contains the concatenated certificate revocation

+      lists for the certificate authorities. The format is PEM-encoded.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLCARevocationPath</code></td><td align="left" valign="center">

+      <p>Name of the directory that contains the certificate revocation lists

+      for the certificate authorities. The format is PEM-encoded.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLCertificateChainFile</code></td><td align="left" valign="center">

+      <p>Name of the file that contains concatenated certifcates for the

+      certificate authorities which form the certifcate chain for the server

+      certificate. The format is PEM-encoded.</p>

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">SSLCertificateFile</code></strong></td><td align="left" valign="center">

+      <p>Name of the file that contains the server certificate. The format is

+      PEM-encoded.</p>

+      <p>In addition to the certificate, the file can also contain as optional

+      elements DH parameters and/or an EC curve name for ephemeral keys, as

+      generated by <code>openssl dhparam</code> and <code>openssl ecparam</code>,

+      respectively. The output of the respective OpenSSL command can simply

+      be concatenated to the certificate file. This feature needs APR/native

+      version 1.1.34 or later.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLCertificateKeyFile</code></td><td align="left" valign="center">

+      <p>Name of the file that contains the server private key. The format is

+      PEM-encoded. The default value is the value of "SSLCertificateFile" and in

+      this case both certificate and private key have to be in this file (NOT

+      RECOMMENDED).</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLCipherSuite</code></td><td align="left" valign="center">

+      <p>Ciphers which may be used for communicating with clients. The default

+      is "HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!kRSA". See the OpenSSL

+      documentation for details of the cipher configuration options.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLDisableCompression</code></td><td align="left" valign="center">

+      <p>Disables compression if set to <code>true</code> and OpenSSL supports

+      disabling compression. Default is <code>false</code> which inherits the

+      default compression setting in OpenSSL.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLHonorCipherOrder</code></td><td align="left" valign="center">

+      <p>Set to <code>true</code> to enforce the server's cipher order

+      (from the <code>SSLCipherSuite</code> setting) instead of allowing

+      the client to choose the cipher (which is the default).</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLPassword</code></td><td align="left" valign="center">

+      <p>Pass phrase for the encrypted private key. If "SSLPassword" is not

+      provided, the callback function should prompt for the pass phrase.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLProtocol</code></td><td align="left" valign="center">

+      <p>The names of the protocols to support when communicating with clients.

+      This should be a list of any combination of the following:

+      </p>

+      <ul><li>SSLv2</li><li>SSLv3</li><li>TLSv1</li>

+          <li>TLSv1.1</li><li>TLSv1.2</li><li>all</li></ul>

+      <p>Each token in the list can be prefixed with a plus sign ("+")

+      or a minus sign ("-"). A plus sign adds the protocol, a minus sign

+      removes it form the current list. The list is built starting from

+      an empty list.</p>

+      <p>The token <code>all</code> is an alias for

+      <code>TLSv1+TLSv1.1+TLSv1.2</code>.</p>

+      <p>If more than one protocol is specified for an OpenSSL

+      based secure connector it will always support <code>SSLv2Hello</code>. If a

+      single protocol is specified it will not support

+      <code>SSLv2Hello</code>.</p>

+      <p>Note that <code>SSLv2</code> and <code>SSLv3</code> are inherently

+      unsafe.</p>

+      <p>If not specified, the default value of <code>all</code> will be

+      used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLVerifyClient</code></td><td align="left" valign="center">

+      <p>Ask client for certificate. The default is "none", meaning the client

+      will not have the opportunity to submit a certificate. Other acceptable

+      values include "optional", "require" and "optionalNoCA".</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLVerifyDepth</code></td><td align="left" valign="center">

+      <p>Maximum verification depth for client certificates. The default is

+      "10".</p>

     </td></tr></table>

 

-  <p>For more information, see the

-  <a href="../ssl-howto.html">SSL Configuration HOW-TO</a>.</p>

+  </blockquote></td></tr></table>

 

   </blockquote></td></tr></table>

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Connector Comparison"><!--()--></a><a name="Connector_Comparison"><strong>Connector Comparison</strong></a></font></td></tr><tr><td><blockquote>

 

-    <p>Below is a small chart that shows how the connectors differentiate.</p>

-    <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-                  Java Blocking Connector       Java Nio Blocking Connector       APR Connector

-    Classname         Http11Protocol                  Http11NioProtocol         Http11AprProtocol

-    Tomcat Version   3.x 4.x 5.x 6.x                       6.x                     5.5.x 6.x

-    Support Polling         NO                             YES                        YES

-    Polling Size           N/A                   Unlimited - Restricted by mem        Unlimited - Configurable

-    Read HTTP Request     Blocking                     Non Blocking                   Blocking

-    Read HTTP Body        Blocking                     Sim Blocking                   Blocking

-    Write HTTP Response   Blocking                     Sim Blocking                   Blocking

-    SSL Support           Java SSL                     Java SSL                       OpenSSL

-    SSL Handshake         Blocking                     Non blocking                   Blocking

-    Max Connections       maxThreads                   See polling size               See polling size

-    

-    

-    </pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <p>Below is a small chart that shows how the connectors differ.</p>

+    <div class="codeBox"><pre><code>

+                       Java Blocking Connector   Java Non Blocking Connector   APR/native Connector

+                                 BIO                         NIO                       APR

+    Classname              Http11Protocol             Http11NioProtocol         Http11AprProtocol

+    Tomcat Version           3.x onwards                 6.x onwards              5.5.x onwards

+    Support Polling              NO                          YES                       YES

+    Polling Size                 N/A                   maxConnections             maxConnections

+    Read Request Headers      Blocking                  Non Blocking                 Blocking

+    Read Request Body         Blocking                    Blocking                   Blocking

+    Write Response            Blocking                    Blocking                   Blocking

+    Wait for next Request     Blocking                  Non Blocking               Non Blocking

+    SSL Support               Java SSL                    Java SSL                   OpenSSL

+    SSL Handshake             Blocking                  Non blocking                 Blocking

+    Max Connections        maxConnections              maxConnections             maxConnections

+

+

+    </code></pre></div>

 

   </blockquote></td></tr></table>

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/config/http.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/config/index.html b/tomcat-uid/webapps/docs/config/index.html
index c8bb491..7e26890 100644
--- a/tomcat-uid/webapps/docs/config/index.html
+++ b/tomcat-uid/webapps/docs/config/index.html
@@ -1,13 +1,88 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat Configuration Reference (6.0.41) - Overview</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.77) - Overview</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

     The Apache Tomcat Servlet/JSP Container

-  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat Configuration Reference</h1><h2>Overview</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Overview"><strong>Overview</strong></a></font></td></tr><tr><td><blockquote>

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="sessionidgenerator.html">SessionIdGenerator</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Overview</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Overview"><strong>Overview</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>This manual contains reference information about all of the configuration

 directives that can be included in a <code>conf/server.xml</code> file to

-configure the behavior of the Tomcat 6 Servlet/JSP container.  It does not

+configure the behavior of the Tomcat 7 Servlet/JSP container.  It does not

 attempt to describe which configuration directives should be used to perform

 specific tasks - for that, see the various <em>HOW-TO</em> documents on the

 main index page.</p>

@@ -62,6 +137,31 @@
     supported by the standard implementation of this interface.</li>

 </ul>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/config/index.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/config/jar-scanner.html b/tomcat-uid/webapps/docs/config/jar-scanner.html
new file mode 100644
index 0000000..0e66e31
--- /dev/null
+++ b/tomcat-uid/webapps/docs/config/jar-scanner.html
@@ -0,0 +1,190 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.77) - The Jar Scanner Component</title><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+    The Apache Tomcat Servlet/JSP Container

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="sessionidgenerator.html">SessionIdGenerator</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Jar Scanner Component</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#Standard_Implementation">Standard Implementation</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Special_Features">Special Features</a></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>The <strong>Jar Scanner</strong> element represents the component that is

+  used to scan the web application for JAR files. It is typically used during

+  web application start to identify configuration files such as TLDs or

+  web-fragment.xml files that must be processed as part of the web application

+  initialisation.</p>

+

+  <p>A Jar Scanner element MAY be nested inside a

+  <a href="context.html">Context</a> component.  If it is not included,

+  a default Jar Scanner configuration will be created automatically, which

+  is sufficient for most requirements.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Attributes"><!--()--></a><a name="Common_Attributes"><strong>Common Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>All implementations of <strong>Jar Scanner</strong>

+    support the following attributes:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">className</code></td><td align="left" valign="center">

+        <p>Java class name of the implementation to use.  This class must

+        implement the <code>org.apache.tomcat.JarScanner</code> interface.

+        If not specified, the standard value (defined below) will be used.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Standard Implementation"><!--()--></a><a name="Standard_Implementation"><strong>Standard Implementation</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The standard implementation of <strong>Jar Scanner</strong> is

+    <strong>org.apache.tomcat.util.scan.StandardJarScanner</strong>.

+    Additional attributes that it supports (in addition to the common attributes

+    listed above) are listed in the table.</p>

+

+    <p>There are several

+    <a href="systemprops.html#JAR_Scanning">system properties</a>

+    that control what JAR files are skipped by JarScanner.

+    Those properties are lists of file name pattern. The

+    patterns are separated by comma (','). The leading and trailing whitespace

+    characters in a pattern are ignored. The patterns are matched

+    case-sensitively. The following two special characters are supported:</p>

+

+    <ul>

+      <li>'*' &#151; means zero or more characters,</li>

+      <li>'?' &#151; means one and only one character.</li>

+    </ul>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">scanAllDirectories</code></td><td align="left" valign="center">

+       <p>If <code>true</code>, any directories found on the classpath will be

+       checked to see if they are expanded JAR files.

+       The default is <code>false</code>.</p>

+       <p>Tomcat determines if a directory is an expanded JAR file by looking

+       for a META-INF sub-directory. Only if the META-INF sub-directory exists,

+       the directory is assumed to be an expanded JAR file.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">scanAllFiles</code></td><td align="left" valign="center">

+       <p>If <code>true</code>, any files found on the classpath will be checked

+       to see if they are Jar files rather than relying on the file extension

+       being <code>.jar</code>. The default is <code>false</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">scanClassPath</code></td><td align="left" valign="center">

+       <p>If <code>true</code>, the full web application classpath, including

+       the shared and common classloaders and the system classpath (but not the

+       bootstrap classpath) will be scanned for Jar files in addition to the web

+       application. The default is <code>true</code>. </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">scanBootstrapClassPath</code></td><td align="left" valign="center">

+       <p>If <strong>scanClassPath</strong> is <code>true</code> and this is

+       <code>true</code> the bootstrap classpath will also be scanned for Jar

+       files. The default is <code>false</code>.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Nested Components"><!--()--></a><a name="Nested_Components"><strong>Nested Components</strong></a></font></td></tr><tr><td><blockquote>

+  <p>No components may be nested inside a <strong>Jar Scanner</strong> element.

+  </p>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Special Features"><!--()--></a><a name="Special_Features"><strong>Special Features</strong></a></font></td></tr><tr><td><blockquote>

+  <p>No special features are associated with a <strong>Jar Scanner</strong>

+  element.</p>

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/config/jar-scanner.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/config/listeners.html b/tomcat-uid/webapps/docs/config/listeners.html
index 92ae7a3..1db674f 100644
--- a/tomcat-uid/webapps/docs/config/listeners.html
+++ b/tomcat-uid/webapps/docs/config/listeners.html
@@ -1,17 +1,92 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat Configuration Reference (6.0.41) - The LifeCycle Listener Component</title><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.77) - The LifeCycle Listener Component</title><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

     The Apache Tomcat Servlet/JSP Container

-  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat Configuration Reference</h1><h2>The LifeCycle Listener Component</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

-<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Standard_Implementation">Standard Implementation</a><ol><li><a href="#APR_Lifecycle_Listener_-_org.apache.catalina.core.AprLifecycleListener">APR Lifecycle Listener - org.apache.catalina.core.AprLifecycleListener</a></li><li><a href="#Jasper_Listener_-_org.apache.catalina.core.JasperListener">Jasper Listener - org.apache.catalina.core.JasperListener</a></li><li><a href="#Server_Lifecycle_Listener_-_org.apache.catalina.mbeans.ServerLifecycleListener">Server Lifecycle Listener - org.apache.catalina.mbeans.ServerLifecycleListener</a></li><li><a href="#Global_Resources_Lifecycle_Listener_-_org.apache.catalina.mbeans.GlobalResourcesLifecycleListener">Global Resources Lifecycle Listener - org.apache.catalina.mbeans.GlobalResourcesLifecycleListener</a></li><li><a href="#JMX_Remote_Lifecycle_Listener_-_org.apache.catalina.mbeans.JmxRemoteLifecycleListener">JMX Remote Lifecycle Listener - org.apache.catalina.mbeans.JmxRemoteLifecycleListener</a></li><li><a href="#JRE_Memory_Leak_Prevention_Listener_-_org.apache.catalina.core.JreMemoryLeakPreventionListener">JRE Memory Leak Prevention Listener - org.apache.catalina.core.JreMemoryLeakPreventionListener</a></li><li><a href="#UserConfig_-_org.apache.catalina.startup.UserConfig">UserConfig - org.apache.catalina.startup.UserConfig</a></li></ol></li></ul>

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="sessionidgenerator.html">SessionIdGenerator</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The LifeCycle Listener Component</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Standard_Implementations">Standard Implementations</a><ol><li><a href="#APR_Lifecycle_Listener_-_org.apache.catalina.core.AprLifecycleListener">APR Lifecycle Listener - org.apache.catalina.core.AprLifecycleListener</a></li><li><a href="#Jasper_Listener_-_org.apache.catalina.core.JasperListener">Jasper Listener - org.apache.catalina.core.JasperListener</a></li><li><a href="#Global_Resources_Lifecycle_Listener_-_org.apache.catalina.mbeans.GlobalResourcesLifecycleListener">Global Resources Lifecycle Listener - org.apache.catalina.mbeans.GlobalResourcesLifecycleListener</a></li><li><a href="#JRE_Memory_Leak_Prevention_Listener_-_org.apache.catalina.core.JreMemoryLeakPreventionListener">JRE Memory Leak Prevention Listener - org.apache.catalina.core.JreMemoryLeakPreventionListener</a><ol><li><a href="#JreMemoryLeakPreventionListener_Examples">JreMemoryLeakPreventionListener Examples</a></li></ol></li><li><a href="#Security_Lifecycle_Listener_-_org.apache.catalina.security.SecurityListener">Security Lifecycle Listener - org.apache.catalina.security.SecurityListener</a></li><li><a href="#ThreadLocal_Leak_Prevention_Listener_-_org.apache.catalina.core.ThreadLocalLeakPreventionListener">ThreadLocal Leak Prevention Listener - org.apache.catalina.core.ThreadLocalLeakPreventionListener</a></li><li><a href="#UserConfig_-_org.apache.catalina.startup.UserConfig">UserConfig - org.apache.catalina.startup.UserConfig</a></li><li><a href="#Version_Logging_Lifecycle_Listener_-_org.apache.catalina.startup.VersionLoggerListener">Version Logging Lifecycle Listener - org.apache.catalina.startup.VersionLoggerListener</a></li></ol></li><li><a href="#Additional_Implementations">Additional Implementations</a><ol><li><a href="#JMX_Remote_Lifecycle_Listener_-_org.apache.catalina.mbeans.JmxRemoteLifecycleListener">JMX Remote Lifecycle Listener - org.apache.catalina.mbeans.JmxRemoteLifecycleListener</a></li></ol></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

   <p>A <strong>Listener</strong> element defines a component that performs

   actions when specific events occur, usually Tomcat starting or Tomcat

   stopping.</p>

 

-  <p>Listeners may be nested inside a <a href="server.html">Server</a>, 

+  <p>Listeners may be nested inside a <a href="server.html">Server</a>,

   <a href="engine.html">Engine</a>, <a href="host.html">Host</a> or

   <a href="context.html">Context</a>. Some Listeners are only intended to be

   nested inside specific elements. These constraints are noted in the

@@ -24,7 +99,7 @@
     <p>All implementations of <strong>Listener</strong>

     support the following attributes:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>className</code></strong></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

         <p>Java class name of the implementation to use. This class must

         implement the <code>org.apache.catalina.LifecycleListener</code>

         interface.</p>

@@ -36,12 +111,12 @@
 

   <p>No element may be nested inside a <strong>Listener</strong>.</p>

 

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Standard Implementation"><!--()--></a><a name="Standard_Implementation"><strong>Standard Implementation</strong></a></font></td></tr><tr><td><blockquote>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Standard Implementations"><!--()--></a><a name="Standard_Implementations"><strong>Standard Implementations</strong></a></font></td></tr><tr><td><blockquote>

 

-    <p>Unlike most Catalina components, there are several standard

-    <strong>Listener</strong> implementations available.  As a result,

-    the <code>className</code> attribute MUST be used to select the

-    implementation you wish to use.</p>

+  <p>Unlike most Catalina components, there are several standard

+  <strong>Listener</strong> implementations available.  As a result,

+  the <code>className</code> attribute MUST be used to select the

+  implementation you wish to use.</p>

 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="APR Lifecycle Listener - org.apache.catalina.core.AprLifecycleListener"><!--()--></a><a name="APR_Lifecycle_Listener_-_org.apache.catalina.core.AprLifecycleListener"><strong>APR Lifecycle Listener - org.apache.catalina.core.AprLifecycleListener</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -55,7 +130,7 @@
     <p>The following additional attributes are supported by the <strong>APR

     Lifecycle Listener</strong>:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>SSLEngine</code></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">SSLEngine</code></td><td align="left" valign="center">

         <p>Name of the SSLEngine to use. <code>off</code>: do not use SSL,

         <code>on</code>: use SSL but no specific ENGINE.</p>

         <p>The default value is <b>on</b>. This initializes the

@@ -64,11 +139,11 @@
         <p>See the <a href="http://www.openssl.org/">Official OpenSSL website</a>

         for more details on supported SSL hardware engines and manufacturers.

         </p>

-      </td></tr><tr><td align="left" valign="center"><code>SSLRandomSeed</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLRandomSeed</code></td><td align="left" valign="center">

         <p>Entropy source used to seed the SSLEngine's PRNG. The default value

         is <code>builtin</code>. On development systems, you may want to set

         this to <code>/dev/urandom</code> to allow quicker start times.</p>

-      </td></tr><tr><td align="left" valign="center"><code>FIPSMode</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">FIPSMode</code></td><td align="left" valign="center">

         <p>Set to <code>on</code> to request that OpenSSL be in FIPS mode

         (if OpenSSL is already in FIPS mode, it will remain in FIPS mode).

         Set to <code>enter</code> to force OpenSSL to enter FIPS mode (an error

@@ -100,20 +175,6 @@
 

   </blockquote></td></tr></table>

 

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Server Lifecycle Listener - org.apache.catalina.mbeans.ServerLifecycleListener"><!--()--></a><a name="Server_Lifecycle_Listener_-_org.apache.catalina.mbeans.ServerLifecycleListener"><strong>Server Lifecycle Listener - org.apache.catalina.mbeans.ServerLifecycleListener</strong></a></font></td></tr><tr><td><blockquote>

-

-    <p>The <strong>Server Lifecycle Listener</strong> initializes the

-    MBeanServer for the MBeans that may be used to manage Tomcat via JMX.

-    Without this listener, none of the Tomcat MBeans will be available.</p>

-

-    <p>This listener must only be nested within <a href="server.html">Server</a>

-    elements.</p>

-

-    <p>No additional attributes are supported by the <strong>Server Lifecycle

-    Listener</strong>.</p>

-

-  </blockquote></td></tr></table>

-

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Global Resources Lifecycle Listener - org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"><!--()--></a><a name="Global_Resources_Lifecycle_Listener_-_org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"><strong>Global Resources Lifecycle Listener - org.apache.catalina.mbeans.GlobalResourcesLifecycleListener</strong></a></font></td></tr><tr><td><blockquote>

 

     <p>The <strong>Global Resources Lifecycle Listener</strong> initializes the

@@ -128,6 +189,267 @@
 

   </blockquote></td></tr></table>

 

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JRE Memory Leak Prevention Listener - org.apache.catalina.core.JreMemoryLeakPreventionListener"><!--()--></a><a name="JRE_Memory_Leak_Prevention_Listener_-_org.apache.catalina.core.JreMemoryLeakPreventionListener"><strong>JRE Memory Leak Prevention Listener - org.apache.catalina.core.JreMemoryLeakPreventionListener</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>JRE Memory Leak Prevention Listener</strong> provides

+    work-arounds for known places where the Java Runtime environment uses

+    the context class loader to load a singleton as this will cause a memory

+    leak if a web application class loader happens to be the context class

+    loader at the time. The work-around is to initialise these singletons when

+    this listener starts as Tomcat's common class loader is the context class

+    loader at that time. It also provides work-arounds for known issues that

+    can result in locked JAR files.</p>

+

+    <p>This listener must only be nested within <a href="server.html">Server</a>

+    elements.</p>

+

+    <p>The following additional attributes are supported by the <strong>JRE

+    Memory Leak Prevention Listener</strong>:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">appContextProtection</code></td><td align="left" valign="center">

+        <p>Enables protection so that calls to

+        <code>sun.awt.AppContext.getAppContext()</code> triggered by a web

+        application do not result in a memory leak. Note that a call to this

+        method will be triggered as part of the web application stop process

+        when running on Java 6 and earlier. It is therefore strongly recommended

+        that this protection is enabled when running on Java 6 and earlier. The

+        default is <code>true</code> for Java 6 and earlier versions. The

+        default is <code>false</code> for Java 7 and later versions.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">AWTThreadProtection</code></td><td align="left" valign="center">

+        <p>Enables protection so that calls to

+        <code>java.awt.Toolkit.getDefaultToolkit()</code> triggered by a web

+        application do not result in a memory leak.

+        Defaults to <code>false</code> because an AWT thread is launched.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">classesToInitialize</code></td><td align="left" valign="center">

+        <p>List of comma-separated fully qualified class names to load and initialize

+        during the startup of this Listener. This allows to pre-load classes that are

+        known to provoke classloader leaks if they are loaded during a request

+        processing. Non-JRE classes may be referenced, like

+        <code>oracle.jdbc.driver.OracleTimeoutThreadPerVM</code>.

+        The default value is empty, but specific JRE classes are loaded by other leak

+        protection features managed by other attributes of this Listener.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">driverManagerProtection</code></td><td align="left" valign="center">

+        <p>The first use of <code>java.sql.DriverManager</code> will trigger the

+        loading of JDBC Driver in the current class loader. The web

+        application level memory leak protection can take care of this in most

+        cases but triggering the loading here has fewer side-effects. The

+        default is <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">forkJoinCommonPoolProtection</code></td><td align="left" valign="center">

+        <p>Enables protection so the threads created for

+        <code>ForkJoinPool.commonPool()</code> do not result in a memory leak.

+        The protection is enabled by setting the

+        <code>java.util.concurrent.ForkJoinPool.common.threadFactory</code>

+        system property. If this property is set when Tomcat starts, Tomcat will

+        not over-ride it even if this protection is explictly enabled. The

+        default is <code>true</code>. This protection is only used when running

+        on Java 8 onwards. The common pool does not exist in earlier

+        versions.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">gcDaemonProtection</code></td><td align="left" valign="center">

+        <p>Enables protection so that calls to

+        <code>sun.misc.GC.requestLatency(long)</code> triggered by a web

+        application do not result in a memory leak. Use of RMI is likely to

+        trigger a call to this method. A side effect of enabling this protection

+        is the creation of a thread named "GC Daemon". The protection uses

+        reflection to access internal Sun classes and may generate errors on

+        startup on non-Sun JVMs. The default is <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">java2DDisposerProtection</code></td><td align="left" valign="center">

+        <p>Enables protection so that loading the

+        <code>sun.java2d.Disposer</code> class by a web application does not

+        result in a memory leak.

+        Defaults to <code>false</code> because a thread is launched.</p>

+        <p>Note: The underlying leak has been fixed in Java 1.6.0 update 21

+        onwards and Java 7 onwards. This option is unnecessary if running on a

+        fixed version of Java.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">ldapPoolProtection</code></td><td align="left" valign="center">

+        <p>Enables protection so that the PoolCleaner thread started by

+        <code>com.sun.jndi.ldap.LdapPoolManager</code> does not result in a

+        memory leak. The thread is started the first time the

+        <code>LdapPoolManager</code> class is used if the system property

+        <code>com.sun.jndi.ldap.connect.pool.timeout</code> is set to a value

+        greater than 0. Without this protection, if a web application uses this

+        class the PoolCleaner thread will be configured with the thread's

+        context class loader set to the web application class loader which in

+        turn will trigger a memory leak on reload. Defaults to

+        <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">securityLoginConfigurationProtection</code></td><td align="left" valign="center">

+        <p>Enables protection so that usage of the

+        <code>javax.security.auth.login.Configuration</code> class by a web

+        application does not provoke a memory leak. The first access of this

+        class will trigger the initializer that will retain a static reference

+        to the context class loader. The protection loads the class with the

+        system class loader to ensure that the static initializer is not

+        triggered by a web application. Defaults to <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">securityPolicyProtection</code></td><td align="left" valign="center">

+        <p>Enables protection so that usage of the deprecated

+        <code>javax.security.auth.Policy</code> class by a web application does not

+        result in a memory leak. The first access of this class will trigger the

+        static initializer that will retain a static reference to the context

+        class loader. The protection calls the <code>getPolicy()</code> method

+        of this class to ensure that the static initializer is not triggered by

+        a web application. Defaults to <code>true</code>.</p>

+        <p>Note: The underlying leak has been fixed in Java 7 update 51 onwards

+        and Java 8 onwards. This option is unnecessary if running on a fixed

+        version of Java.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">tokenPollerProtection</code></td><td align="left" valign="center">

+        <p>Enables protection so that any token poller thread initialized by

+        <code>sun.security.pkcs11.SunPKCS11.initToken()</code> does not

+        result in a memory leak. The thread is started depending on various

+        conditions as part of the initialization of the Java Cryptography

+        Architecture. Without the protection this can happen during Webapp

+        deployment when the MessageDigest for generating session IDs is

+        initialized. As a result the thread has the Webapp class loader as its

+        thread context class loader. Enabling the protection initializes JCA

+        early during Tomcat startup. Defaults to <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">urlCacheProtection</code></td><td align="left" valign="center">

+        <p>Enables protection so that reading resources from JAR files using

+        <code>java.net.URLConnection</code>s does not result in the JAR file

+        being locked. Note that enabling this protection disables caching by

+        default for all resources obtained via

+        <code>java.net.URLConnection</code>s. Caching may be re-enabled on a

+        case by case basis as required. Defaults to <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">xmlParsingProtection</code></td><td align="left" valign="center">

+        <p>Enables protection so that parsing XML files within a web application

+        does not result in a memory leak. Note that memory profilers may not

+        display the GC root associated with this leak making it particularly

+        hard to diagnose. Defaults to <code>true</code>.</p>

+      </td></tr></table>

+

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JreMemoryLeakPreventionListener Examples"><!--()--></a><a name="JreMemoryLeakPreventionListener_Examples"><strong>JreMemoryLeakPreventionListener Examples</strong></a></font></td></tr><tr><td><blockquote>

+

+      <p>The following is an example of how to configure the

+      <code>classesToInitialize</code> attribute of this listener.</p>

+

+      <p>If this listener was configured in server.xml as:</p>

+

+      <div class="codeBox"><pre><code>  &lt;Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"

+            classesToInitialize="oracle.jdbc.driver.OracleTimeoutThreadPerVM" /&gt;</code></pre></div>

+

+      <p>then the <code>OracleTimeoutThreadPerVM</code> class would be loaded

+      and initialized during listener startup instead of during request

+      processing.</p>

+

+    </blockquote></td></tr></table>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Security Lifecycle Listener - org.apache.catalina.security.SecurityListener"><!--()--></a><a name="Security_Lifecycle_Listener_-_org.apache.catalina.security.SecurityListener"><strong>Security Lifecycle Listener - org.apache.catalina.security.SecurityListener</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Security Lifecycle Listener</strong> performs a number of

+    security checks when Tomcat starts and prevents Tomcat from starting if they

+    fail. The listener is not enabled by default. To enabled it uncomment the

+    listener in $CATALINA_BASE/conf/server.xml. If the operating system supports

+    umask then the line in $CATALINA_HOME/bin/catalina.sh that obtains the umask

+    also needs to be uncommented.</p>

+

+    <p>This listener must only be nested within <a href="server.html">Server</a>

+    elements.</p>

+

+    <p>The following additional attributes are supported by the <strong>Security

+    Lifecycle Listener</strong>:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">checkedOsUsers</code></td><td align="left" valign="center">

+        <p>A comma separated list of OS users that must not be used to start

+        Tomcat. If not specified, the default value of <b>root</b> is used. To

+        disable this check, set the attribute to the empty string. Usernames

+        are checked in a case-insensitive manner.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">minimumUmask</code></td><td align="left" valign="center">

+        <p>The least restrictive umask that must be configured before Tomcat

+        will start. If not specified, the default value of <b>0007</b> is used.

+        To disable this check, set the attribute to the empty string. The check

+        is not performed on Windows platforms.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="ThreadLocal Leak Prevention Listener - org.apache.catalina.core.ThreadLocalLeakPreventionListener"><!--()--></a><a name="ThreadLocal_Leak_Prevention_Listener_-_org.apache.catalina.core.ThreadLocalLeakPreventionListener"><strong>ThreadLocal Leak Prevention Listener - org.apache.catalina.core.ThreadLocalLeakPreventionListener</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>ThreadLocal Leak Prevention Listener</strong> triggers the

+    renewal of threads in <a href="executor.html">Executor</a> pools when a

+    <a href="context.html">Context</a> is being stopped to avoid thread-local

+    related memory leaks. Active threads will be renewed one by one when they

+    come back to the pool after executing their task. The renewal happens

+    only for contexts that have their <code>renewThreadsWhenStoppingContext</code>

+    attribute set to <code>true</code>.</p>

+

+    <p>This listener must only be nested within <a href="server.html">Server</a>

+    elements.</p>

+

+    <p>No additional attributes are supported by the <strong>ThreadLocal Leak

+    Prevention Listener</strong>.</p>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="UserConfig - org.apache.catalina.startup.UserConfig"><!--()--></a><a name="UserConfig_-_org.apache.catalina.startup.UserConfig"><strong>UserConfig - org.apache.catalina.startup.UserConfig</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>UserConfig</strong> provides feature of User Web Applications.

+    User Web Applications map a request URI starting with a tilde character ("~")

+    and a username to a directory (commonly named public_html) in that user's 

+    home directory on the server.</p>

+

+    <p>See the <a href="host.html#User_Web_Applications">User Web Applications</a>

+    special feature on the <strong>Host</strong> element for more information.</p>

+

+    <p>The following additional attributes are supported by the 

+    <strong>UserConfig</strong>:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">directoryName</code></td><td align="left" valign="center">

+        <p>The directory name to be searched for within each user home directory.

+        The default is <code>public_html</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">userClass</code></td><td align="left" valign="center">

+        <p>The class name of the user database class.

+        There are currently two user database, the 

+        <code>org.apache.catalina.startup.PasswdUserDatabase</code> is used on a

+        Unix system that uses the /etc/passwd file to identify valid users.

+        The <code>org.apache.catalina.startup.HomesUserDatabase</code> is used on 

+        a server where /etc/passwd is not in use. HomesUserDatabase deploy all 

+        directories found in a specified base directory.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">homeBase</code></td><td align="left" valign="center">

+        <p>The base directory containing user home directories. This is effective

+        only when <code>org.apache.catalina.startup.HomesUserDatabase</code> is

+        used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">allow</code></td><td align="left" valign="center">

+        <p>A regular expression defining user who deployment is allowed. If this 

+        attribute is specified, the user to deploy must match for this pattern.

+        If this attribute is not specified, all users will be deployed unless the

+        user matches a deny pattern.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">deny</code></td><td align="left" valign="center">

+        <p>A regular expression defining user who deployment is denied. If this

+        attribute is specified, the user to deploy must not match for this

+        pattern. If this attribute is not specified, deployment of user will be

+        governed by a allow attribute.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+  

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Version Logging Lifecycle Listener - org.apache.catalina.startup.VersionLoggerListener"><!--()--></a><a name="Version_Logging_Lifecycle_Listener_-_org.apache.catalina.startup.VersionLoggerListener"><strong>Version Logging Lifecycle Listener - org.apache.catalina.startup.VersionLoggerListener</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Version Logging Lifecycle Listener</strong> logs Tomcat, Java

+    and operating system information when Tomcat starts.</p>

+

+    <p>This listener must only be nested within <a href="server.html">Server</a>

+    elements and should be the first listener defined.</p>

+

+    <p>The following additional attributes are supported by the <strong>Version

+    Logging Lifecycle Listener</strong>:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">logArgs</code></td><td align="left" valign="center">

+        <p>If <code>true</code>, the command line arguments passed to Java when

+        Tomcat started will be logged. If not specified, the default value of

+        <code>true</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">logEnv</code></td><td align="left" valign="center">

+        <p>If <code>true</code>, the current environment variables when Tomcat

+        starts will be logged. If not specified, the default value of

+        <code>false</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">logProps</code></td><td align="left" valign="center">

+        <p>If <code>true</code>, the current Java system properties will be

+        logged. If not specified, the default value of

+        <code>false</code> will be used.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Additional Implementations"><!--()--></a><a name="Additional_Implementations"><strong>Additional Implementations</strong></a></font></td></tr><tr><td><blockquote>

+

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JMX Remote Lifecycle Listener - org.apache.catalina.mbeans.JmxRemoteLifecycleListener"><!--()--></a><a name="JMX_Remote_Lifecycle_Listener_-_org.apache.catalina.mbeans.JmxRemoteLifecycleListener"><strong>JMX Remote Lifecycle Listener - org.apache.catalina.mbeans.JmxRemoteLifecycleListener</strong></a></font></td></tr><tr><td><blockquote>

 

     <p>This listener requires <code>catalina-jmx-remote.jar</code> to be placed

@@ -144,196 +466,103 @@
     Monitoring and Management Using JMX</a> included with the Java SDK

     documentation.</p>

 

-    <p>If this listener was configured in server.xml as:

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"

-          rmiRegistryPortPlatform="10001" rmiServerPortPlatform="10002" /&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-    with the following system properties set (e.g. in setenv.sh):

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

--Dcom.sun.management.jmxremote.password.file=$CATALINA_BASE/conf/jmxremote.password

--Dcom.sun.management.jmxremote.access.file=$CATALINA_BASE/conf/jmxremote.access

--Dcom.sun.management.jmxremote.ssl=false

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-    $CATALINA_BASE/conf/jmxremote.password containing:

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-admin letmein

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-    $CATALINA_BASE/conf/jmxremote.access containing:

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-admin readwrite

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-    then opening ports 10001 (RMI Registry) and 10002 (JMX/RMI Server) in your

-    firewall would enable jconsole to connect to a Tomcat instance running

-    behind a firewall using a connection string of the form:

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-service:jmx:rmi://&lt;hostname&gt;:10002/jndi/rmi://&lt;hostname&gt;:10001/jmxrmi

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-    with a user name of <code>admin</code> and a password of

-    <code>letmein</code>.

-    </p>

-    

-    <p><strong>Note that the example above does not use SSL. JMX access should

-    be considered equivalent to administrative access and secured accordingly.

-    </strong></p>

-

     <p>This listener must only be nested within a <a href="server.html">Server</a>

     element.</p>

 

     <p>The following additional attributes are supported by the <strong>JMX Remote

     Lifecycle Listener</strong>:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>rmiRegistryPortPlatform</code></strong></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">rmiRegistryPortPlatform</code></strong></td><td align="left" valign="center">

         <p>The port to be used by the JMX/RMI registry for the Platform MBeans.

-        The replaces the use of the

+        This replaces the use of the

         <code>com.sun.management.jmxremote.port</code> system property that

-        should not be set when using this valve.</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>rmiServerPortPlatform</code></strong></td><td align="left" valign="center">

+        should not be set when using this listener.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">rmiServerPortPlatform</code></strong></td><td align="left" valign="center">

         <p>The port to be used by the Platform JMX/RMI server.</p>

-      </td></tr><tr><td align="left" valign="center"><code>useLocalPorts</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">rmiBindAddress</code></td><td align="left" valign="center">

+        <p>The address of the interface to be used by JMX/RMI server.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">useLocalPorts</code></td><td align="left" valign="center">

         <p>Should any clients using these ports be forced to use local ports to

-        connect to the the JMX/RMI server. This is useful when tunnelling

+        connect to the JMX/RMI server. This is useful when tunnelling

         connections over SSH or similar. Defaults to <code>false</code>.</p>

       </td></tr></table>

 

-  </blockquote></td></tr></table>

+    <h3>Using file-based Authentication and Authorisation</h3>

 

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JRE Memory Leak Prevention Listener - org.apache.catalina.core.JreMemoryLeakPreventionListener"><!--()--></a><a name="JRE_Memory_Leak_Prevention_Listener_-_org.apache.catalina.core.JreMemoryLeakPreventionListener"><strong>JRE Memory Leak Prevention Listener - org.apache.catalina.core.JreMemoryLeakPreventionListener</strong></a></font></td></tr><tr><td><blockquote>

+    <p>If this listener was configured in server.xml as:</p>

+  <div class="codeBox"><pre><code>  &lt;Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"

+          rmiRegistryPortPlatform="10001" rmiServerPortPlatform="10002" /&gt;</code></pre></div>

+    <p>with the following system properties set (e.g. in setenv.sh):</p>

+  <div class="codeBox"><pre><code>  -Dcom.sun.management.jmxremote.password.file=$CATALINA_BASE/conf/jmxremote.password

+  -Dcom.sun.management.jmxremote.access.file=$CATALINA_BASE/conf/jmxremote.access

+  -Dcom.sun.management.jmxremote.ssl=false</code></pre></div>

+    <p>$CATALINA_BASE/conf/jmxremote.password containing:</p>

+  <div class="codeBox"><pre><code>admin letmein</code></pre></div>

+    <p>$CATALINA_BASE/conf/jmxremote.access containing:</p>

+  <div class="codeBox"><pre><code>admin readwrite</code></pre></div>

+    <p>then opening ports 10001 (RMI Registry) and 10002 (JMX/RMI Server) in your

+    firewall would enable jconsole to connect to a Tomcat instance running

+    behind a firewall using a connection string of the form:</p>

+  <div class="codeBox"><pre><code>service:jmx:rmi://&lt;hostname&gt;:10002/jndi/rmi://&lt;hostname&gt;:10001/jmxrmi</code></pre></div>

+    <p>

+    with a user name of <code>admin</code> and a password of

+    <code>letmein</code>.

+    </p>

 

-    <p>The <strong>JRE Memory Leak Prevention Listener</strong> provides

-    work-arounds for known places where the Java Runtime environment uses

-    the context class loader to load a singleton as this will cause a memory

-    leak if a web application class loader happens to be the context class

-    loader at the time. The work-around is to initialise these singletons when

-    this listener starts as Tomcat's common class loader is the context class

-    loader at that time. It also provides work-arounds for known issues that

-    can result in locked JAR files.</p>

-    

-    <p>This listener must only be nested within <a href="server.html">Server</a>

-    elements.</p>

+    <h3>Using JAAS</h3>

 

-    <p>The following additional attributes are supported by the <strong>JRE

-    Memory Leak Prevention Listener</strong>:</p>

+    <p>If we use the following system properties instead:</p>

+  <div class="codeBox"><pre><code>  -Dcom.sun.management.jmxremote.login.config=Tomcat

+  -Djava.security.auth.login.config=$CATALINA_BASE/conf/login.config

+  -Dcom.sun.management.jmxremote.access.file=$CATALINA_BASE/conf/jmxremote.access

+  -Dcom.sun.management.jmxremote.ssl=false</code></pre></div>

+    <p>$CATALINA_BASE/conf/login.config containing your choice of JAAS LoginModule implementation, for example:</p>

+  <div class="codeBox"><pre><code>  Tomcat { /* should match to the com.sun.management.jmxremote.login.config property */

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>appContextProtection</code></td><td align="left" valign="center">

-        <p>Enables protection so that calls to

-        <code>sun.awt.AppContext.getAppContext()</code> triggered by a web

-        application do not result in a memory leak. Note that a call to this

-        method will be triggered as part of the web application stop process so

-        it is strongly recommended that this protection is enabled. The default

-        is <code>true</code>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>AWTThreadProtection</code></td><td align="left" valign="center">

-        <p>Enables protection so that calls to

-        <code>java.awt.Toolkit.getDefaultToolkit()</code> triggered by a web

-        application do not result in a memory leak.

-        Defaults to <code>false</code> because an AWT thread is launched.</p>

-      </td></tr><tr><td align="left" valign="center"><code>classesToInitialize</code></td><td align="left" valign="center">

-        <p>List of comma-separated fully qualified class names to load and initialize 

-        during the startup of this Listener. This allows to pre-load classes that are 

-        known to provoke classloader leaks if they are loaded during a request 

-        processing. Non-JRE classes may be referenced, like 

-        <code>oracle.jdbc.driver.OracleTimeoutThreadPerVM</code>.

-        The default value is empty, but specific JRE classes are loaded by other leak 

-        protection features managed by other attributes of this Listener.</p>

-      </td></tr><tr><td align="left" valign="center"><code>driverManagerProtection</code></td><td align="left" valign="center">

-        <p>The first use of <code>java.sql.DriverManager</code> will trigger the

-        loading of JDBC Driver in the the current class loader. The web

-        application level memory leak protection can take care of this in most

-        cases but triggering the loading here has fewer side-effects. The

-        default is <code>true</code>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>gcDaemonProtection</code></td><td align="left" valign="center">

-        <p>Enables protection so that calls to

-        <code>sun.misc.GC.requestLatency(long)</code> triggered by a web

-        application do not result in a memory leak. Use of RMI is likely to

-        trigger a call to this method. A side effect of enabling this protection

-        is the creation of a thread named "GC Daemon". The protection uses

-        reflection to access internal Sun classes and may generate errors on

-        startup on non-Sun JVMs. The default is <code>true</code>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>ldapPoolProtection</code></td><td align="left" valign="center">

-        <p>Enables protection so that the PoolCleaner thread started by

-        <code>com.sun.jndi.ldap.LdapPoolManager</code> does not result in a 

-        memory leak. The thread is started the first time the 

-        <code>LdapPoolManager</code> class is used if the system property 

-        <code>com.sun.jndi.ldap.connect.pool.timeout</code> is set to a value

-        greater than 0. Without this protection, if a web application uses this 

-        class the PoolCleaner thread will be configured with the thread's 

-        context class loader set to the web application class loader which in 

-        turn will trigger a memory leak on reload. Defaults to 

-        <code>true</code>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>securityLoginConfigurationProtection</code></td><td align="left" valign="center">

-        <p>Enables protection so that usage of the

-        <code>javax.security.auth.login.Configuration</code> class by a web 

-        application does not provoke a memory leak. The first access of this 

-        class will trigger the initializer that will retain a static reference 

-        to the context class loader. The protection loads the class with the 

-        system class loader to ensure that the static initializer is not 

-        triggered by a web application. Defaults to <code>true</code>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>securityPolicyProtection</code></td><td align="left" valign="center">

-        <p>Enables protection so that usage of the deprecated

-        <code>javax.security.auth.Policy</code> class by a web application does not

-        result in a memory leak. The first access of this class will trigger the

-        static initializer that will retain a static reference to the context

-        class loader. The protection calls the <code>getPolicy()</code> method

-        of this class to ensure that the static initializer is not triggered by

-        a web application. Defaults to <code>true</code>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>tokenPollerProtection</code></td><td align="left" valign="center">

-        <p>Enables protection so that any token poller thread initialized by

-        <code>sun.security.pkcs11.SunPKCS11.initToken()</code> does not

-        result in a memory leak. The thread is started depending on various

-        conditions as part of the initialization of the Java Cryptography

-        Architecture. Without the protection this can happen during Webapp

-        deployment when the MessageDigest for generating session IDs is

-        initialized. As a result the thread has the Webapp class loader as its

-        thread context class loader. Enabling the protection initializes JCA

-        early during Tomcat startup. Defaults to <code>true</code>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>urlCacheProtection</code></td><td align="left" valign="center">

-        <p>Enables protection so that reading resources from JAR files using

-        <code>java.net.URLConnection</code>s does not result in the JAR file

-        being locked. Note that enabling this protection disables caching by

-        default for all resources obtained via

-        <code>java.net.URLConnection</code>s. Caching may be re-enabled on a

-        case by case basis as required. Defaults to <code>true</code>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>xmlParsingProtection</code></td><td align="left" valign="center">

-        <p>Enables protection so that parsing XML files within a web application

-        does not result in a memory leak. Note that memory profilers may not

-        display the GC root associated with this leak making it particularly

-        hard to diagnose. Defaults to <code>true</code>.</p>

-      </td></tr></table>

+    /* for illustration purposes only */

+    com.sun.security.auth.module.LdapLoginModule REQUIRED

+      userProvider="ldap://ldap-svr/ou=people,dc=example,dc=com"

+      userFilter="(&amp;(uid={USERNAME})(objectClass=inetOrgPerson))"

+      authzIdentity="admin"

+      debug=true;

+  };</code></pre></div>

+    <p>$CATALINA_BASE/conf/jmxremote.access containing:</p>

+  <div class="codeBox"><pre><code>admin readwrite</code></pre></div>

+    <p>

+    then we would need to provide LDAP credentials instead.

+    </p>

+

+    <p><strong>Note that the examples above do not use SSL. JMX access should

+    be considered equivalent to administrative access and secured accordingly.

+    </strong></p>

 

   </blockquote></td></tr></table>

 

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="UserConfig - org.apache.catalina.startup.UserConfig"><!--()--></a><a name="UserConfig_-_org.apache.catalina.startup.UserConfig"><strong>UserConfig - org.apache.catalina.startup.UserConfig</strong></a></font></td></tr><tr><td><blockquote>

-

-    <p>The <strong>UserConfig</strong> provides feature of User Web Applications.

-    User Web Applications map a request URI starting with a tilde character ("~")

-    and a username to a directory (commonly named public_html) in that user's

-    home directory on the server.</p>

-

-    <p>See the <a href="host.html#User_Web_Applications">User Web Applications</a>

-    special feature on the <strong>Host</strong> element for more information.</p>

-

-    <p>The following additional attributes are supported by the

-    <strong>UserConfig</strong>:</p>

-

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>directoryName</code></td><td align="left" valign="center">

-        <p>The directory name to be searched for within each user home directory.

-        The default is <code>public_html</code>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>userClass</code></td><td align="left" valign="center">

-        <p>The class name of the user database class.

-        There are currently two user database, the

-        <code>org.apache.catalina.startup.PasswdUserDatabase</code> is used on a

-        Unix system that uses the /etc/passwd file to identify valid users.

-        The <code>org.apache.catalina.startup.HomesUserDatabase</code> is used on

-        a server where /etc/passwd is not in use. HomesUserDatabase deploy all

-        directories found in a specified base directory.</p>

-      </td></tr><tr><td align="left" valign="center"><code>homeBase</code></td><td align="left" valign="center">

-        <p>The base directory containing user home directories.This is effective

-        only when <code>org.apache.catalina.startup.HomesUserDatabase</code> is

-        used.</p>

-      </td></tr></table>

-

-  </blockquote></td></tr></table>

-

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/config/listeners.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/config/loader.html b/tomcat-uid/webapps/docs/config/loader.html
index 0ca3aef..74d1d1c 100644
--- a/tomcat-uid/webapps/docs/config/loader.html
+++ b/tomcat-uid/webapps/docs/config/loader.html
@@ -1,10 +1,85 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat Configuration Reference (6.0.41) - The Loader Component</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.77) - The Loader Component</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

     The Apache Tomcat Servlet/JSP Container

-  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat Configuration Reference</h1><h2>The Loader Component</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

-<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#Standard_Implementation">Standard Implementation</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Special_Features">Special Features</a><ol><li><a href="#Logging">Logging</a></li></ol></li></ul>

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="sessionidgenerator.html">SessionIdGenerator</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Loader Component</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#Standard_Implementation">Standard Implementation</a></li><li><a href="#VirtualWebappLoader_Implementation">VirtualWebappLoader Implementation</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Special_Features">Special Features</a><ol><li><a href="#Logging">Logging</a></li></ol></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

   <p>The <strong>Loader</strong> element represents the <em>web

@@ -28,13 +103,11 @@
   <p>For a more in-depth description of the class loader hierarchy

   that is implemented by Catalina, see <a href="../class-loader-howto.html">the ClassLoader HowTo</a>.</p>

 

-    <blockquote><em>

-    <p>The description below uses the variable name $CATALINA_BASE to refer the

+    <p><em>The description below uses the variable name $CATALINA_BASE to refer the

     base directory against which most relative paths are resolved. If you have

-    not configured Tomcat 6 for multiple instances by setting a CATALINA_BASE

+    not configured Tomcat for multiple instances by setting a CATALINA_BASE

     directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME,

-    the directory into which you have installed Tomcat 6.</p>

-    </em></blockquote>

+    the directory into which you have installed Tomcat.</em></p>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -43,18 +116,18 @@
     <p>All implementations of <strong>Loader</strong>

     support the following attributes:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>className</code></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">className</code></td><td align="left" valign="center">

         <p>Java class name of the implementation to use.  This class must

         implement the <code>org.apache.catalina.Loader</code> interface.

         If not specified, the standard value (defined below) will be used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>delegate</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">delegate</code></td><td align="left" valign="center">

         <p>Set to <code>true</code> if you want the class loader to follow

         the standard Java2 delegation model, and attempt to load classes from

         parent class loaders <strong>before</strong> looking inside the web

         application.  Set to <code>false</code> (the default) to have the

         class loader look inside the web application first, before asking

         parent class loaders to find requested classes or resources.</p>

-      </td></tr><tr><td align="left" valign="center"><code>reloadable</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">reloadable</code></td><td align="left" valign="center">

         <p>Set to <code>true</code> if you want Catalina to monitor classes in

         <code>/WEB-INF/classes/</code> and <code>/WEB-INF/lib</code> for

         changes, and automatically reload the web application if a change

@@ -81,13 +154,17 @@
     It supports the following additional attributes (in addition to the

     common attributes listed above):</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>loaderClass</code></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">loaderClass</code></td><td align="left" valign="center">

         <p>Java class name of the <code>java.lang.ClassLoader</code>

         implementation class to use.  If not specified, the default value is

         <code>org.apache.catalina.loader.WebappClassLoader</code>. Custom

         <strong>loaderClass</strong> implementations must extend

-        <code>org.apache.catalina.loader.WebappClassLoader</code>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>searchExternalFirst</code></td><td align="left" valign="center">

+        <code>org.apache.catalina.loader.WebappClassLoaderBase</code>.The

+        default <strong>loaderClass</strong> is not parallel capable. A parallel

+        capable <strong>loaderClass</strong> is available when running on a Java

+        7 or higher JRE and can be used by specifying

+        <code>org.apache.catalina.loader.ParallelWebappClassLoader</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">searchExternalFirst</code></td><td align="left" valign="center">

         <p>Set to <code>true</code> if you want repositories outside

         of <code>WEB-INF/classes</code> and <code>WEB-INF/lib</code> to

         be searched first. Default value is <code>false</code>.</p>

@@ -95,6 +172,36 @@
 

   </blockquote></td></tr></table>

 

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="VirtualWebappLoader Implementation"><!--()--></a><a name="VirtualWebappLoader_Implementation"><strong>VirtualWebappLoader Implementation</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>This implementation of <strong>Loader</strong> is

+    <strong>org.apache.catalina.loader.VirtualWebappLoader</strong>.

+    It extends <code>WebappLoader</code> and supports the following

+    additional attributes</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">virtualClasspath</code></td><td align="left" valign="center">

+        <p>Additional repositories to search for resources.

+        Multiple values can be joined using <code>;</code>

+        as a separator.</p>

+        <p>Leading and trailing whitespaces in values are ignored.

+        If a value does not point to an existing directory or

+        <code>*.jar</code> file, it is silently skipped.

+        Diagnostic messages can be seen if you enable debug logging for

+        the VirtualWebappLoader class.

+        </p>

+        <p>Example: <code>virtualClasspath="${catalina.base}/myapp_config"</code></p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">searchVirtualFirst</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> if you want the virtual

+        class path to be searched before

+        <code>WEB-INF/classes</code> and <code>WEB-INF/lib</code>.

+        Default value is <code>false</code>.</p>

+        <p>If searched before, resources located in the virtual

+        class path take precendence over resources with the same

+        name contained in the webapp.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Nested Components"><!--()--></a><a name="Nested_Components"><strong>Nested Components</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -108,6 +215,31 @@
 

   </blockquote></td></tr></table>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/config/loader.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/config/manager.html b/tomcat-uid/webapps/docs/config/manager.html
index 6e891e2..6e881a9 100644
--- a/tomcat-uid/webapps/docs/config/manager.html
+++ b/tomcat-uid/webapps/docs/config/manager.html
@@ -1,9 +1,84 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat Configuration Reference (6.0.41) - The Manager Component</title><meta name="author" content="Craig R. McClanahan"><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.77) - The Manager Component</title><meta name="author" content="Craig R. McClanahan"><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

     The Apache Tomcat Servlet/JSP Container

-  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat Configuration Reference</h1><h2>The Manager Component</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="sessionidgenerator.html">SessionIdGenerator</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Manager Component</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#Standard_Implementation">Standard Implementation</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Special_Features">Special Features</a><ol><li><a href="#Persistence_Across_Restarts">Persistence Across Restarts</a></li><li><a href="#Disable_Session_Persistence">Disable Session Persistence</a></li></ol></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -25,11 +100,13 @@
     <p>All implementations of <strong>Manager</strong>

     support the following attributes:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>className</code></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">className</code></td><td align="left" valign="center">

         <p>Java class name of the implementation to use.  This class must

         implement the <code>org.apache.catalina.Manager</code> interface.

         If not specified, the standard value (defined below) will be used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>distributable</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">distributable</code></td><td align="left" valign="center">

+        <p><strong>Deprecated</strong>: This should be configured via the

+        Context.</p>

         <p>Set to <code>true</code> to ask the session manager to enforce

         the restrictions described in the Servlet Specification on

         distributable applications (primarily, this would mean that all

@@ -41,6 +118,31 @@
         automatically based on the presence or absence of the

         <code>&lt;distributable&gt;</code> element in the web application

         deployment descriptor (<code>/WEB-INF/web.xml</code>).</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxActiveSessions</code></td><td align="left" valign="center">

+        <p>The maximum number of active sessions that will be created by

+        this Manager, or <code>-1</code> (the default) for no limit.</p>

+

+        <p>When the limit is reached, any attempt to create a new session

+        (e.g. with <code>HttpServletRequest.getSession()</code> call)

+        will fail with an <code>IllegalStateException</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxInactiveInterval</code></td><td align="left" valign="center">

+        <p><strong>Deprecated</strong>: This should be configured via the

+        Context.</p>

+        <p>The initial maximum time interval, in seconds,

+        between client requests before a session is invalidated. A negative value

+        will result in sessions never timing out. If the attribute is not provided,

+        a default of 1800 seconds (30 minutes) is used.</p>

+

+        <p>This attribute provides the initial value whenever a

+        new session is created, but the interval may be dynamically

+        varied by a servlet via the

+        <code>setMaxInactiveInterval</code> method of the <code>HttpSession</code> object.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sessionIdLength</code></td><td align="left" valign="center">

+       <p>The length of session ids created by this Manager, measured in bytes,

+        excluding subsequent conversion to a hexadecimal string and

+        excluding any JVM route information used for load balancing.

+        The default is 16. You should set the length on a nested

+        <strong>SessionIdGenerator</strong> element instead.</p>

       </td></tr></table>

 

   </blockquote></td></tr></table>

@@ -61,72 +163,79 @@
     It supports the following additional attributes (in addition to the

     common attributes listed above):</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>algorithm</code></td><td align="left" valign="center">

-        <p>Name of the <em>Message Digest</em> algorithm used to calculate

-        session identifiers produced by this Manager.  This value must

-        be supported by the <code>java.security.MessageDigest</code> class.

-        If not specified, the default value is "MD5".</p>

-      </td></tr><tr><td align="left" valign="center"><code>entropy</code></td><td align="left" valign="center">

-        <p>A String value that is utilized when seeding the random number

-        generator used to create session identifiers for this Manager.

-        If not specified, a semi-useful value is calculated, but a long

-        String value should be specified in security-conscious

-        environments.</p>

-      </td></tr><tr><td align="left" valign="center"><code>maxActiveSessions</code></td><td align="left" valign="center">

-        <p>The maximum number of active sessions that will be created by

-        this Manager, or -1 (the default) for no limit.</p>

-      </td></tr><tr><td align="left" valign="center"><code>maxInactiveInterval</code></td><td align="left" valign="center">

-        <p>The initial maximum time interval, in seconds, 

-        between client requests before a session is invalidated. A negative value

-        will result in sessions never timing out. If the attribute is not provided,

-        a default of 60 seconds is used.</p>

-        

-        <p>This attribute provides the initial value whenever a 

-        new session is created, but the interval may be dynamically 

-        varied by a servlet via the 

-        <code>setMaxInactiveInterval</code> method of the <code>HttpSession</code> object.</p>

-      </td></tr><tr><td align="left" valign="center"><code>pathname</code></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">pathname</code></td><td align="left" valign="center">

         <p>Absolute or relative (to the work directory for this Context)

         pathname of the file in which session state will be preserved

         across application restarts, if possible.  The default is

         "SESSIONS.ser".<br>See

         <a href="#Persistence_Across_Restarts">Persistence Across Restarts</a>

-        for more information. This persistence may be 

+        for more information. This persistence may be

         disabled by setting this attribute to an empty string.</p>

-      </td></tr><tr><td align="left" valign="center"><code>processExpiresFrequency</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">processExpiresFrequency</code></td><td align="left" valign="center">

         <p>Frequency of the session expiration, and related manager operations.

         Manager operations will be done once for the specified amount of

         backgroundProcess calls (i.e., the lower the amount, the more often the

         checks will occur). The minimum value is 1, and the default value is 6.

         </p>

-      </td></tr><tr><td align="left" valign="center"><code>randomClass</code></td><td align="left" valign="center">

-        <p>Java class name of the <code>java.util.Random</code>

-        implementation class to use.  If not specified, the default value is

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomClass</code></td><td align="left" valign="center">

+        <p>Name of the Java class that extends

+        <code>java.security.SecureRandom</code> to use to generate session IDs.

+        If not specified, the default value is

         <code>java.security.SecureRandom</code>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>randomFile</code></td><td align="left" valign="center">

-        <p>Name of a file that provides random data that are used to generate

-        session ids. If not specified, the default value is

-        <code>/dev/urandom</code> on Unix-like systems (those where such

-        file path is absolute) and empty on others.</p>

-      </td></tr><tr><td align="left" valign="center"><code>sessionIdLength</code></td><td align="left" valign="center">

-       <p>The length of session ids created by this Manager, measured in bytes,

-        excluding subsequent conversion to a hexadecimal string and

-        excluding any JVM route information used for load balancing.

-        The default is 16.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomProvider</code></td><td align="left" valign="center">

+        <p>Name of the provider to use to create the

+        <code>java.security.SecureRandom</code> instances that generate session

+        IDs. If an invalid algorithm and/or provider is specified, the Manager

+        will use the platform default provider and the default algorithm. If not

+        specified, the platform default provider will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomAlgorithm</code></td><td align="left" valign="center">

+        <p>Name of the algorithm to use to create the

+        <code>java.security.SecureRandom</code> instances that generate session

+        IDs. If an invalid algorithm and/or provider is specified, the Manager

+        will use the platform default provider and the default algorithm. If not

+        specified, the default algorithm of SHA1PRNG will be used. If the

+        default algorithm is not supported, the platform default will be used.

+        To specify that the platform default should be used, do not set the

+        secureRandomProvider attribute and set this attribute to the empty

+        string.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sessionAttributeNameFilter</code></td><td align="left" valign="center">

+        <p>A regular expression used to filter which session attributes will be

+        distributed. An attribute will only be distributed if its name matches

+        this pattern. If the pattern is zero length or <code>null</code>, all

+        attributes are eligible for distribution. The pattern is anchored so the

+        session attribute name must fully match the pattern. As an example, the

+        value <code>(userName|sessionHistory)</code> will only distribute the

+        two session attributes named <code>userName</code> and

+        <code>sessionHistory</code>. If not specified, the default value of

+        <code>null</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sessionAttributeValueClassNameFilter</code></td><td align="left" valign="center">

+        <p>A regular expression used to filter which session attributes will be

+        distributed. An attribute will only be distributed if the implementation

+        class name of the value matches this pattern. If the pattern is zero

+        length or <code>null</code>, all attributes are eligible for

+        distribution. The pattern is anchored so the fully qualified class name

+        must fully match the pattern. If not specified, the default value of

+        <code>null</code> will be used unless a <code>SecurityManager</code> is

+        enabled in which case the default will be

+        <code>java\\.lang\\.(?:Boolean|Integer|Long|Number|String)</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">warnOnSessionAttributeFilterFailure</code></td><td align="left" valign="center">

+        <p>If <strong>sessionAttributeNameFilter</strong> or

+        <strong>sessionAttributeValueClassNameFilter</strong> blocks an

+        attribute, should this be logged at <code>WARN</code> level? If

+        <code>WARN</code> level logging is disabled then it will be logged at

+        <code>DEBUG</code>. The default value of this attribute is

+        <code>false</code> unless a <code>SecurityManager</code> is enabled in

+        which case the default will be <code>true</code>.</p>

       </td></tr></table>

 

     <h3>Persistent Manager Implementation</h3>

 

-    <p><em><strong>WARNING - Use of this Manager implementation

-    has not been thoroughly tested, and should be considered experimental!

-    </strong></em></p>

-

     <p><strong>NOTE:</strong> You must set either the

     <code>org.apache.catalina.session.StandardSession.ACTIVITY_CHECK</code> or

     <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code>

     <a href="systemprops.html">system properties</a> to <code>true</code> for

     the persistent manager to work correctly.</p>

-    

+

     <p>The persistent implementation of <strong>Manager</strong> is

     <strong>org.apache.catalina.session.PersistentManager</strong>.  In

     addition to the usual operations of creating and deleting sessions, a

@@ -138,76 +247,82 @@
     element - this is required for use of <code>PersistentManager</code>.</p>

 

     <p>This implementation of Manager supports the following attributes in

-    addition to the <a href="#Common Attributes">Common Attributes</a>

+    addition to the <a href="#Common_Attributes">Common Attributes</a>

     described earlier.</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>algorithm</code></td><td align="left" valign="center">

-        <p>Name of the <em>Message Digest</em> algorithm used to calculate

-        session identifiers produced by this Manager.  This value must

-        be supported by the <code>java.security.MessageDigest</code> class.

-        If not specified, the default value is "MD5".</p>

-      </td></tr><tr><td align="left" valign="center"><code>className</code></td><td align="left" valign="center">

-        <p>Java class name of the implementation to use.  This class must

-        implement the <code>org.apache.catalina.Manager</code> interface.

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+        <p>It has the same meaning as described in the

+        <a href="#Common_Attributes">Common Attributes</a> above.

         You <strong>must</strong> specify

         <code>org.apache.catalina.session.PersistentManager</code> to use

         this manager implementation.</p>

-      </td></tr><tr><td align="left" valign="center"><code>entropy</code></td><td align="left" valign="center">

-        <p>A String value that is utilized when seeding the random number

-        generator used to create session identifiers for this Manager.

-        If not specified, a semi-useful value is calculated, but a long

-        String value should be specified in security-conscious

-        environments.</p>

-      </td></tr><tr><td align="left" valign="center"><code>maxActiveSessions</code></td><td align="left" valign="center">

-        <p>The maximum number of active sessions that will be created by

-        this Manager, or -1 (the default) for no limit.</p>

-      </td></tr><tr><td align="left" valign="center"><code>maxIdleBackup</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxIdleBackup</code></td><td align="left" valign="center">

         <p>The time interval (in seconds) since the last access to a session

         before it is eligible for being persisted to the session store, or

         <code>-1</code> to disable this feature.  By default, this feature is

         disabled.</p>

-      </td></tr><tr><td align="left" valign="center"><code>maxIdleSwap</code></td><td align="left" valign="center">

-        <p>The time interval (in seconds) since the last access to a session

-        before it should be persisted to the session store, and

-        passivated out of the server's memory, or <code>-1</code> to disable

-        this feature.  If this feature is enabled, the time interval specified

-        here should be equal to or longer than the value specified for

-        <code>maxIdleBackup</code>.  By default, this feature is disabled.</p>

-      </td></tr><tr><td align="left" valign="center"><code>minIdleSwap</code></td><td align="left" valign="center">

-        <p>The time interval (in seconds) since the last access to a session

-        before it will be eligible to be persisted to the session store, and

-        passivated out of the server's memory, or <code>-1</code> for this

-        swapping to be available at any time.  If specified, this value should

-        be less than that specified by <code>maxIdleSwap</code>.  By default,

-        this value is set to <code>-1</code>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>maxInactiveInterval</code></td><td align="left" valign="center">

-        <p>The initial maximum time interval, in seconds, 

-        between client requests before a session is invalidated. A negative value

-        will result in sessions never timing out. If the attribute is not provided,

-        a default of 60 seconds is used.</p>

-        

-        <p>This attribute provides the initial value whenever a 

-        new session is created, but the interval may be dynamically 

-        varied by a servlet via the 

-        <code>setMaxInactiveInterval</code>method of the <code>HttpSession</code> object.</p>

-      </td></tr><tr><td align="left" valign="center"><code>randomClass</code></td><td align="left" valign="center">

-        <p>Java class name of the <code>java.util.Random</code>

-        implementation class to use.  If not specified, the default value is

-        <code>java.security.SecureRandom</code>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>randomFile</code></td><td align="left" valign="center">

-        <p>Name of a file that provides random data that are used to generate

-        session ids. If not specified, the default value is

-        <code>/dev/urandom</code> on Unix-like systems (those where such

-        file path is absolute) and empty on others.</p>

-      </td></tr><tr><td align="left" valign="center"><code>saveOnRestart</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxIdleSwap</code></td><td align="left" valign="center">

+        <p>The maximum time a session may be idle before it is eligible to be

+        swapped to disk due to inactivity. Setting this to <code>-1</code> means

+        sessions should not be swapped out just because of inactivity. If this

+        feature is enabled, the time interval specified here should be equal to

+        or longer than the value specified for <code>maxIdleBackup</code>. By

+        default, this feature is disabled.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">minIdleSwap</code></td><td align="left" valign="center">

+        <p>The minimum time in seconds a session must be idle before it is

+        eligible to be swapped to disk to keep the active session count below

+        maxActiveSessions. Setting to <code>-1</code> means sessions will not be

+        swapped out to keep the active session count down. If specified, this

+        value should be less than that specified by <code>maxIdleSwap</code>.

+        By default, this value is set to <code>-1</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">processExpiresFrequency</code></td><td align="left" valign="center">

+        <p>It is the same as described above for the

+        <code>org.apache.catalina.session.StandardManager</code> class.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">saveOnRestart</code></td><td align="left" valign="center">

         <p>Should all sessions be persisted and reloaded when Tomcat is shut

         down and restarted (or when this application is reloaded)?  By default,

         this attribute is set to <code>true</code>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>sessionIdLength</code></td><td align="left" valign="center">

-       <p>The length of session ids created by this Manager, measured in bytes,

-        excluding subsequent conversion to a hexadecimal string and

-        excluding any JVM route information used for load balancing.

-        The default is 16.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomClass</code></td><td align="left" valign="center">

+        <p>It is the same as described above for the

+        <code>org.apache.catalina.session.StandardManager</code> class.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomProvider</code></td><td align="left" valign="center">

+        <p>It is the same as described above for the

+        <code>org.apache.catalina.session.StandardManager</code> class.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomAlgorithm</code></td><td align="left" valign="center">

+        <p>It is the same as described above for the

+        <code>org.apache.catalina.session.StandardManager</code> class.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sessionAttributeNameFilter</code></td><td align="left" valign="center">

+        <p>A regular expression used to filter which session attributes will be

+        distributed. An attribute will only be distributed if its name matches

+        this pattern. If the pattern is zero length or <code>null</code>, all

+        attributes are eligible for distribution. The pattern is anchored so the

+        session attribute name must fully match the pattern. As an example, the

+        value <code>(userName|sessionHistory)</code> will only distribute the

+        two session attributes named <code>userName</code> and

+        <code>sessionHistory</code>. If not specified, the default value of

+        <code>null</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sessionAttributeValueClassNameFilter</code></td><td align="left" valign="center">

+        <p>A regular expression used to filter which session attributes will be

+        distributed. An attribute will only be distributed if the implementation

+        class name of the value matches this pattern. If the pattern is zero

+        length or <code>null</code>, all attributes are eligible for

+        distribution. The pattern is anchored so the fully qualified class name

+        must fully match the pattern. If not specified, the default value of

+        <code>null</code> will be used unless a <code>SecurityManager</code> is

+        enabled in which case the default will be

+        <code>java\\.lang\\.(?:Boolean|Integer|Long|Number|String)</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">warnOnSessionAttributeFilterFailure</code></td><td align="left" valign="center">

+        <p>If <strong>sessionAttributeNameFilter</strong> or

+        <strong>sessionAttributeValueClassNameFilter</strong> blocks an

+        attribute, should this be logged at <code>WARN</code> level? If

+        <code>WARN</code> level logging is disabled then it will be logged at

+        <code>DEBUG</code>. The default value of this attribute is

+        <code>false</code> unless a <code>SecurityManager</code> is enabled in

+        which case the default will be <code>true</code>.</p>

       </td></tr></table>

 

     <p>In order to successfully use a PersistentManager, you must nest inside

@@ -218,11 +333,21 @@
 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Nested Components"><!--()--></a><a name="Nested_Components"><strong>Nested Components</strong></a></font></td></tr><tr><td><blockquote>

 

-  <h3>Standard Manager Implementation</h3>

+  <h3>All Manager Implementations</h3>

 

-  <p>If you are using the <em>Standard Manager Implementation</em>

-  as described above, no elements may be nested inside your

-  <strong>&lt;Manager&gt;</strong> element.</p>

+  <p>All Manager implementations bundled with Tomcat or extending

+  <code>ManagerBase</code> allow nesting of a

+  <strong>&lt;SessionIdGenerator&gt;</strong> element. It defines

+  the behavior of session id generation.  All implementations

+  of the <a href="sessionidgenerator.html">SessionIdGenerator</a> allow the

+  following attributes:

+  </p>

+

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">sessionIdLength</code></td><td align="left" valign="center">

+      <p>The length of the session ID may be changed with the

+      <strong>sessionIdLength</strong> attribute.

+      </p>

+    </td></tr></table>

 

   <h3>Persistent Manager Implementation</h3>

 

@@ -245,17 +370,17 @@
   your <code>&lt;Manager&gt;</code> element with the following attributes:

   </p>

 

-  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>checkInterval</code></td><td align="left" valign="center">

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">checkInterval</code></td><td align="left" valign="center">

       <p>The interval (in seconds) between checks for expired sessions

       among those sessions that are currently swapped out.  By default,

       this interval is set to 60 seconds (one minute).</p>

-    </td></tr><tr><td align="left" valign="center"><strong><code>className</code></strong></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

       <p>Java class name of the implementation to use.  This class must

       implement the <code>org.apache.catalina.Store</code> interface.  You

       <strong>must</strong> specify

       <code>org.apache.catalina.session.FileStore</code>

       to use this implementation.</p>

-    </td></tr><tr><td align="left" valign="center"><code>directory</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">directory</code></td><td align="left" valign="center">

       <p>Absolute or relative (to the temporary work directory for this web

       application) pathname of the directory into which individual session

       files are written.  If not specified, the temporary work directory

@@ -275,52 +400,60 @@
   your <code>&lt;Manager&gt;</code> element with the following attributes:

   </p>

 

-  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>checkInterval</code></td><td align="left" valign="center">

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">checkInterval</code></td><td align="left" valign="center">

       <p>The interval (in seconds) between checks for expired sessions

       among those sessions that are currently swapped out.  By default,

       this interval is set to 60 seconds (one minute).</p>

-    </td></tr><tr><td align="left" valign="center"><strong><code>className</code></strong></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

       <p>Java class name of the implementation to use.  This class must

       implement the <code>org.apache.catalina.Store</code> interface.  You

       <strong>must</strong> specify

       <code>org.apache.catalina.session.JDBCStore</code>

       to use this implementation.</p>

-    </td></tr><tr><td align="left" valign="center"><strong><code>connectionURL</code></strong></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">connectionURL</code></strong></td><td align="left" valign="center">

       <p>The connection URL that will be handed to the configured JDBC

       driver to establish a connection to the database containing our

       session table.</p>

-    </td></tr><tr><td align="left" valign="center"><strong><code>driverName</code></strong></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">dataSourceName</code></td><td align="left" valign="center">

+      <p>Name of the JNDI resource for a JDBC DataSource-factory. If this option

+      is given and a valid JDBC resource can be found, it will be used and any

+      direct configuration of a JDBC connection via <code>connectionURL</code>

+      and <code>driverName</code> will be ignored. Since this code uses prepared

+      statements, you might want to configure pooled prepared statements as

+      shown in <a href="../jndi-resources-howto.html">the JNDI resources

+      HOW-TO</a>.</p>

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">driverName</code></strong></td><td align="left" valign="center">

       <p>Java class name of the JDBC driver to be used.</p>

-    </td></tr><tr><td align="left" valign="center"><strong><code>sessionAppCol</code></strong></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">sessionAppCol</code></strong></td><td align="left" valign="center">

       <p>Name of the database column, contained in the specified session

       table, that contains the Engine, Host, and Web Application Context

       name in the format <code>/Engine/Host/Context</code>.</p>

-    </td></tr><tr><td align="left" valign="center"><strong><code>sessionDataCol</code></strong></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">sessionDataCol</code></strong></td><td align="left" valign="center">

       <p>Name of the database column, contained in the specified

       session table, that contains the serialized form of all session

       attributes for a swapped out session.  The column type must accept

       a binary object (typically called a BLOB).</p>

-    </td></tr><tr><td align="left" valign="center"><strong><code>sessionIdCol</code></strong></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">sessionIdCol</code></strong></td><td align="left" valign="center">

       <p>Name of the database column, contained in the specified

       session table, that contains the session identifier of the

       swapped out session.  The column type must accept character

       string data of at least as many characters as are contained

       in session identifiers created by Tomcat (typically 32).</p>

-    </td></tr><tr><td align="left" valign="center"><strong><code>sessionLastAccessedCol</code></strong></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">sessionLastAccessedCol</code></strong></td><td align="left" valign="center">

       <p>Name of the database column, contained in the specified

       session table, that contains the <code>lastAccessedTime</code>

       property of this session.  The column type must accept a

       Java <code>long</code> (64 bits).</p>

-    </td></tr><tr><td align="left" valign="center"><strong><code>sessionMaxInactiveCol</code></strong></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">sessionMaxInactiveCol</code></strong></td><td align="left" valign="center">

       <p>Name of the database column, contained in the specified

       session table, that contains the <code>maxInactiveInterval</code>

       property of this session.  The column type must accept a

       Java <code>integer</code> (32 bits).</p>

-    </td></tr><tr><td align="left" valign="center"><strong><code>sessionTable</code></strong></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">sessionTable</code></strong></td><td align="left" valign="center">

       <p>Name of the database table to be used for storing swapped out

       sessions.  This table must contain (at least) the database columns

       that are configured by the other attributes of this element.</p>

-    </td></tr><tr><td align="left" valign="center"><strong><code>sessionValidCol</code></strong></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">sessionValidCol</code></strong></td><td align="left" valign="center">

       <p>Name of the database column, contained in the specified

       session table, that contains a flag indicating whether this

       swapped out session is still valid or not.  The column type

@@ -332,8 +465,7 @@
   Detailed SQL commands vary depending on the database you are using, but

   a script like this will generally be required:</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-create table tomcat_sessions (

+<div class="codeBox"><pre><code>create table tomcat_sessions (

   session_id     varchar(100) not null primary key,

   valid_session  char(1) not null,

   max_inactive   int not null,

@@ -341,8 +473,7 @@
   app_name       varchar(255),

   session_data   mediumblob,

   KEY kapp_name(app_name)

-);

-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+);</code></pre></div>

 

   <p>In order for the JDBC Based Store to successfully connect to your

   database, the JDBC driver you configure must be visible to Tomcat's

@@ -368,6 +499,13 @@
     including the <code>&lt;distributable&gt;</code> element in your web

     application deployment descriptor (<code>/WEB-INF/web.xml</code>).</p>

 

+    <p>The persistence across restarts provided by the

+    <strong>StandardManager</strong> is a simpler implementation than that

+    provided by the <strong>PersistentManager</strong>. If robust, production

+    quality persistence across restarts is required then the

+    <strong>PersistentManager</strong> should be used with an appropriate

+    configuration.</p>

+

   </blockquote></td></tr></table>

 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Disable Session Persistence"><!--()--></a><a name="Disable_Session_Persistence"><strong>Disable Session Persistence</strong></a></font></td></tr><tr><td><blockquote>

@@ -378,9 +516,34 @@
     a <a href="context.html">Context</a> configuration file for your web

     application and add the following element there:</p>

 

-    <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>&lt;Manager pathname="" /&gt;</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <div class="codeBox"><pre><code>&lt;Manager pathname="" /&gt;</code></pre></div>

   </blockquote></td></tr></table>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/config/manager.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/config/realm.html b/tomcat-uid/webapps/docs/config/realm.html
index 64ca767..95c0912 100644
--- a/tomcat-uid/webapps/docs/config/realm.html
+++ b/tomcat-uid/webapps/docs/config/realm.html
@@ -1,10 +1,85 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat Configuration Reference (6.0.41) - The Realm Component</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.77) - The Realm Component</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

     The Apache Tomcat Servlet/JSP Container

-  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat Configuration Reference</h1><h2>The Realm Component</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

-<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#JDBC_Database_Realm_-_org.apache.catalina.realm.JDBCRealm">JDBC Database Realm - org.apache.catalina.realm.JDBCRealm</a></li><li><a href="#DataSource_Database_Realm_-_org.apache.catalina.realm.DataSourceRealm">DataSource Database Realm - org.apache.catalina.realm.DataSourceRealm</a></li><li><a href="#JNDI_Directory_Realm_-_org.apache.catalina.realm.JNDIRealm">JNDI Directory Realm - org.apache.catalina.realm.JNDIRealm</a></li><li><a href="#UserDatabase_Realm_-_org.apache.catalina.realm.UserDatabaseRealm">UserDatabase Realm - org.apache.catalina.realm.UserDatabaseRealm</a></li><li><a href="#Memory_Based_Realm_-_org.apache.catalina.realm.MemoryRealm">Memory Based Realm - org.apache.catalina.realm.MemoryRealm</a></li><li><a href="#JAAS_Realm_-_org.apache.catalina.realm.JAASRealm">JAAS Realm - org.apache.catalina.realm.JAASRealm</a></li><li><a href="#Combined_Realm_-_org.apache.catalina.realm.CombinedRealm">Combined Realm - org.apache.catalina.realm.CombinedRealm</a></li><li><a href="#LockOut_Realm_-_org.apache.catalina.realm.LockOutRealm">LockOut Realm - org.apache.catalina.realm.LockOutRealm</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Special_Features">Special Features</a></li></ul>

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="sessionidgenerator.html">SessionIdGenerator</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Realm Component</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#JDBC_Database_Realm_-_org.apache.catalina.realm.JDBCRealm">JDBC Database Realm - org.apache.catalina.realm.JDBCRealm</a></li><li><a href="#DataSource_Database_Realm_-_org.apache.catalina.realm.DataSourceRealm">DataSource Database Realm - org.apache.catalina.realm.DataSourceRealm</a></li><li><a href="#JNDI_Directory_Realm_-_org.apache.catalina.realm.JNDIRealm">JNDI Directory Realm - org.apache.catalina.realm.JNDIRealm</a></li><li><a href="#UserDatabase_Realm_-_org.apache.catalina.realm.UserDatabaseRealm">UserDatabase Realm - org.apache.catalina.realm.UserDatabaseRealm</a></li><li><a href="#Memory_Based_Realm_-_org.apache.catalina.realm.MemoryRealm">Memory Based Realm - org.apache.catalina.realm.MemoryRealm</a></li><li><a href="#JAAS_Realm_-_org.apache.catalina.realm.JAASRealm">JAAS Realm - org.apache.catalina.realm.JAASRealm</a></li><li><a href="#Combined_Realm_-_org.apache.catalina.realm.CombinedRealm">Combined Realm - org.apache.catalina.realm.CombinedRealm</a></li><li><a href="#LockOut_Realm_-_org.apache.catalina.realm.LockOutRealm">LockOut Realm - org.apache.catalina.realm.LockOutRealm</a></li><li><a href="#Null_Realm_-_org.apache.catalina.realm.NullRealm">Null Realm - org.apache.catalina.realm.NullRealm</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Special_Features">Special Features</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

   <p>A <strong>Realm</strong> element represents a "database" of usernames,

@@ -15,25 +90,27 @@
   <em>Container Managed Security</em> as described in the Servlet

   Specification.</p>

 

-  <p>You may nest a Realm inside any Catalina container

-  <a href="engine.html">Engine</a>, <a href="host.html">Host</a>, or

-  <a href="context.html">Context</a>).  In addition, Realms associated with

-  an Engine or a Host are automatically inherited by lower-level

-  containers, unless explicitly overridden.</p>

+  <p>A Catalina container (<a href="engine.html">Engine</a>,

+  <a href="host.html">Host</a>, or <a href="context.html">Context</a>) may

+  contain no more than one Realm element (although if supported by the Realm

+  this one Realm may itself contain multiple nested Realms). In addition, the

+  Realm associated with an Engine or a Host is automatically inherited by

+  lower-level containers unless the lower level container explicitly defines its

+  own Realm. If no Realm is configured for the Engine, an instance of the

+  <a href="#Null_Realm_-_org.apache.catalina.realm.NullRealm">Null Realm</a>

+  will be configured for the Engine automatically.</p>

 

   <p>For more in-depth information about container managed security in web

-  applications, as well as more information on configuring and using the 

-  standard realm component implementations, please see the 

+  applications, as well as more information on configuring and using the

+  standard realm component implementations, please see the

   <a href="../realm-howto.html">Container-Managed Security Guide</a>.

   </p>

 

-    <blockquote><em>

-    <p>The description below uses the variable name $CATALINA_BASE to refer the

+    <p><em>The description below uses the variable name $CATALINA_BASE to refer the

     base directory against which most relative paths are resolved. If you have

-    not configured Tomcat 6 for multiple instances by setting a CATALINA_BASE

+    not configured Tomcat for multiple instances by setting a CATALINA_BASE

     directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME,

-    the directory into which you have installed Tomcat 6.</p>

-    </em></blockquote>

+    the directory into which you have installed Tomcat.</em></p>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -42,7 +119,7 @@
     <p>All implementations of <strong>Realm</strong>

     support the following attributes:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>className</code></strong></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

         <p>Java class name of the implementation to use.  This class must

         implement the <code>org.apache.catalina.Realm</code> interface.</p>

       </td></tr></table>

@@ -57,7 +134,7 @@
 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JDBC Database Realm - org.apache.catalina.realm.JDBCRealm"><!--()--></a><a name="JDBC_Database_Realm_-_org.apache.catalina.realm.JDBCRealm"><strong>JDBC Database Realm - org.apache.catalina.realm.JDBCRealm</strong></a></font></td></tr><tr><td><blockquote>

 

-    <p>The <strong>JDBC Database Realm</strong> connects Catalina to

+    <p>The <strong>JDBC Database Realm</strong> connects Tomcat to

     a relational database, accessed through an appropriate JDBC driver,

     to perform lookups of usernames, passwords, and their associated

     roles.  Because the lookup is done each time that it is required,

@@ -68,7 +145,7 @@
     connection to the underlying database, as well as the table and

     column names used to retrieve the required information:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>allRolesMode</code></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">allRolesMode</code></td><td align="left" valign="center">

         <p>This attribute controls how the special role name <code>*</code> is

         handled when processing authorization constraints in web.xml. By

         default, the specification compliant value of <code>strict</code> is

@@ -84,53 +161,62 @@
         <strong>userRoleTable</strong> attributes become optional. If those two

         attributes are omitted, the user's roles will not be loaded by this

         Realm.</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>connectionName</code></strong></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">connectionName</code></strong></td><td align="left" valign="center">

         <p>The database username to use when establishing the JDBC

         connection.</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>connectionPassword</code></strong></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">connectionPassword</code></strong></td><td align="left" valign="center">

         <p>The database password to use when establishing the JDBC

         connection.</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>connectionURL</code></strong></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">connectionURL</code></strong></td><td align="left" valign="center">

         <p>The connection URL to be passed to the JDBC driver when

         establishing a database connection.</p>

-      </td></tr><tr><td align="left" valign="center"><code>digest</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">digest</code></td><td align="left" valign="center">

         <p>The name of the <code>MessageDigest</code> algorithm used

         to encode user passwords stored in the database.  If not specified,

         user passwords are assumed to be stored in clear-text.</p>

-      </td></tr><tr><td align="left" valign="center"><code>digestEncoding</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">digestEncoding</code></td><td align="left" valign="center">

         <p>The charset for encoding digests.  If not specified, the platform

         default will be used.</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>driverName</code></strong></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">driverName</code></strong></td><td align="left" valign="center">

         <p>Fully qualified Java class name of the JDBC driver to be

         used to connect to the authentication database.</p>

-      </td></tr><tr><td align="left" valign="center"><code>roleNameCol</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">roleNameCol</code></td><td align="left" valign="center">

         <p>Name of the column, in the "user roles" table, which contains

         a role name assigned to the corresponding user.</p>

         <p>This attribute is <strong>required</strong> in majority of

         configurations. See <strong>allRolesMode</strong> attribute for

         a rare case when it can be omitted.</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>userCredCol</code></strong></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">stripRealmForGss</code></td><td align="left" valign="center">

+        <p>When processing users authenticated via the GSS-API, this attribute

+        controls if any "@..." is removed from the end of the user

+        name. If not specified, the default is <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">transportGuaranteeRedirectStatus</code></td><td align="left" valign="center">

+        <p>The HTTP status code to use when the container needs to issue an HTTP

+           redirect to meet the requirements of a configured transport

+           guarantee. The provided status code is not validated. If not

+           specified, the default value of <code>302</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">userCredCol</code></strong></td><td align="left" valign="center">

         <p>Name of the column, in the "users" table, which contains

-        the user's credentials (i.e. password(.  If a value for the

+        the user's credentials (i.e. password).  If a value for the

         <code>digest</code> attribute is specified, this component

         will assume that the passwords have been encoded with the

         specified algorithm.  Otherwise, they will be assumed to be

         in clear text.</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>userNameCol</code></strong></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">userNameCol</code></strong></td><td align="left" valign="center">

         <p>Name of the column, in the "users" and "user roles" table,

         that contains the user's username.</p>

-      </td></tr><tr><td align="left" valign="center"><code>userRoleTable</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">userRoleTable</code></td><td align="left" valign="center">

         <p>Name of the "user roles" table, which must contain columns

         named by the <code>userNameCol</code> and <code>roleNameCol</code>

         attributes.</p>

         <p>This attribute is <strong>required</strong> in majority of

         configurations. See <strong>allRolesMode</strong> attribute for

         a rare case when it can be omitted.</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>userTable</code></strong></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">userTable</code></strong></td><td align="left" valign="center">

         <p>Name of the "users" table, which must contain columns named

         by the <code>userNameCol</code> and <code>userCredCol</code>

         attributes.</p>

-      </td></tr><tr><td align="left" valign="center"><code>X509UsernameRetrieverClassName</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">X509UsernameRetrieverClassName</code></td><td align="left" valign="center">

         <p>When using X509 client certificates, this specifies the class name

         that will be used to retrieve the user name from the certificate.

         The class must implement the

@@ -148,7 +234,7 @@
 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="DataSource Database Realm - org.apache.catalina.realm.DataSourceRealm"><!--()--></a><a name="DataSource_Database_Realm_-_org.apache.catalina.realm.DataSourceRealm"><strong>DataSource Database Realm - org.apache.catalina.realm.DataSourceRealm</strong></a></font></td></tr><tr><td><blockquote>

 

-    <p>The <strong>DataSource Database Realm</strong> connects Catalina to

+    <p>The <strong>DataSource Database Realm</strong> connects Tomcat to

     a relational database, accessed through a JNDI named JDBC DataSource

     to perform lookups of usernames, passwords, and their associated

     roles.  Because the lookup is done each time that it is required,

@@ -168,7 +254,7 @@
     of the JNDI JDBC DataSource, as well as the table and

     column names used to retrieve the required information:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>allRolesMode</code></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">allRolesMode</code></td><td align="left" valign="center">

         <p>This attribute controls how the special role name <code>*</code> is

         handled when processing authorization constraints in web.xml. By

         default, the specification compliant value of <code>strict</code> is

@@ -184,45 +270,54 @@
         <strong>userRoleTable</strong> attributes become optional. If those two

         attributes are omitted, the user's roles will not be loaded by this

         Realm.</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>dataSourceName</code></strong></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">dataSourceName</code></strong></td><td align="left" valign="center">

         <p>The name of the JNDI JDBC DataSource for this Realm.</p>

-      </td></tr><tr><td align="left" valign="center"><code>digest</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">digest</code></td><td align="left" valign="center">

         <p>The name of the <code>MessageDigest</code> algorithm used

         to encode user passwords stored in the database.  If not specified,

         user passwords are assumed to be stored in clear-text.</p>

-      </td></tr><tr><td align="left" valign="center"><code>localDataSource</code></td><td align="left" valign="center">

-        <p>When the realm is nested inside a Context element, this allows the 

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">localDataSource</code></td><td align="left" valign="center">

+        <p>When the realm is nested inside a Context element, this allows the

         realm to use a DataSource defined for the Context rather than a global

-        DataSource.  If not specified, the default is <code>false</code>: use a 

+        DataSource.  If not specified, the default is <code>false</code>: use a

         global DataSource.</p>

-      </td></tr><tr><td align="left" valign="center"><code>roleNameCol</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">roleNameCol</code></td><td align="left" valign="center">

         <p>Name of the column, in the "user roles" table, which contains

         a role name assigned to the corresponding user.</p>

         <p>This attribute is <strong>required</strong> in majority of

         configurations. See <strong>allRolesMode</strong> attribute for

         a rare case when it can be omitted.</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>userCredCol</code></strong></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">transportGuaranteeRedirectStatus</code></td><td align="left" valign="center">

+        <p>The HTTP status code to use when the container needs to issue an HTTP

+           redirect to meet the requirements of a configured transport

+           guarantee. The provided status code is not validated. If not

+           specified, the default value of <code>302</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">stripRealmForGss</code></td><td align="left" valign="center">

+        <p>When processing users authenticated via the GSS-API, this attribute

+        controls if any "@..." is removed from the end of the user

+        name. If not specified, the default is <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">userCredCol</code></strong></td><td align="left" valign="center">

         <p>Name of the column, in the "users" table, which contains

-        the user's credentials (i.e. password(.  If a value for the

+        the user's credentials (i.e. password).  If a value for the

         <code>digest</code> attribute is specified, this component

         will assume that the passwords have been encoded with the

         specified algorithm.  Otherwise, they will be assumed to be

         in clear text.</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>userNameCol</code></strong></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">userNameCol</code></strong></td><td align="left" valign="center">

         <p>Name of the column, in the "users" and "user roles" table,

         that contains the user's username.</p>

-      </td></tr><tr><td align="left" valign="center"><code>userRoleTable</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">userRoleTable</code></td><td align="left" valign="center">

         <p>Name of the "user roles" table, which must contain columns

         named by the <code>userNameCol</code> and <code>roleNameCol</code>

         attributes.</p>

         <p>This attribute is <strong>required</strong> in majority of

         configurations. See <strong>allRolesMode</strong> attribute for

         a rare case when it can be omitted.</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>userTable</code></strong></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">userTable</code></strong></td><td align="left" valign="center">

         <p>Name of the "users" table, which must contain columns named

         by the <code>userNameCol</code> and <code>userCredCol</code>

         attributes.</p>

-      </td></tr><tr><td align="left" valign="center"><code>X509UsernameRetrieverClassName</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">X509UsernameRetrieverClassName</code></td><td align="left" valign="center">

         <p>When using X509 client certificates, this specifies the class name

         that will be used to retrieve the user name from the certificate.

         The class must implement the

@@ -240,7 +335,7 @@
 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JNDI Directory Realm - org.apache.catalina.realm.JNDIRealm"><!--()--></a><a name="JNDI_Directory_Realm_-_org.apache.catalina.realm.JNDIRealm"><strong>JNDI Directory Realm - org.apache.catalina.realm.JNDIRealm</strong></a></font></td></tr><tr><td><blockquote>

 

-    <p>The <strong>JNDI Directory Realm</strong> connects Catalina to

+    <p>The <strong>JNDI Directory Realm</strong> connects Tomcat to

     an LDAP Directory, accessed through an appropriate JNDI driver,

     that stores usernames, passwords, and their associated

     roles. Changes to the directory are immediately reflected in the

@@ -274,14 +369,14 @@
     directory and the element and attribute names used to retrieve

     information from the directory:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>adCompat</code></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">adCompat</code></td><td align="left" valign="center">

         <p>Microsoft Active Directory often returns referrals.

         When iterating over NamingEnumerations these lead to

         PartialResultExceptions. If you want us to ignore those exceptions,

         set this attribute to "true". Unfortunately there's no stable way

         to detect, if the Exceptions really come from an AD referral.

         The default value is "false".</p>

-      </td></tr><tr><td align="left" valign="center"><code>allRolesMode</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">allRolesMode</code></td><td align="left" valign="center">

         <p>This attribute controls how the special role name <code>*</code> is

         handled when processing authorization constraints in web.xml. By

         default, the specification compliant value of <code>strict</code> is

@@ -292,56 +387,68 @@
         authenticated and no check will be made for assigned roles unless roles

         are defined in web.xml in which case the user must be assigned at least

         one of those roles.</p>

-      </td></tr><tr><td align="left" valign="center"><code>alternateURL</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">alternateURL</code></td><td align="left" valign="center">

         <p>If a socket connection can not be made to the provider at

         the <code>connectionURL</code> an attempt will be made to use the

         <code>alternateURL</code>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>authentication</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">authentication</code></td><td align="left" valign="center">

         <p>A string specifying the type of authentication to use.

         "none", "simple", "strong" or a provider specific definition

         can be used. If no value is given the providers default is used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>commonRole</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cipherSuites</code></td><td align="left" valign="center">

+        <p>Specify which cipher suites are allowed when trying to open

+        a secured connection using StartTLS. The allowed cipher suites

+        are specified by a comma separated list. The default is to use the

+        cipher suites of the JVM.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">commonRole</code></td><td align="left" valign="center">

         <p>A role name assigned to each successfully authenticated user in

         addition to the roles retrieved from LDAP. If not specified, only

         the roles retrieved via LDAP are used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>connectionName</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">connectionName</code></td><td align="left" valign="center">

         <p>The directory username to use when establishing a

         connection to the directory for LDAP search operations. If not

         specified an anonymous connection is made, which is often

         sufficient unless you specify the <code>userPassword</code>

         property.</p>

-      </td></tr><tr><td align="left" valign="center"><code>connectionPassword</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">connectionPassword</code></td><td align="left" valign="center">

         <p>The directory password to use when establishing a

         connection to the directory for LDAP search operations. If not

         specified an anonymous connection is made, which is often

         sufficient unless you specify the <code>userPassword</code>

         property.</p>

-      </td></tr><tr><td align="left" valign="center"><code>connectionTimeout</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">connectionTimeout</code></td><td align="left" valign="center">

         <p>The timeout in milliseconds to use when establishing the connection

         to the LDAP directory. If not specified, a value of 5000 (5 seconds) is

         used.</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>connectionURL</code></strong></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">connectionURL</code></strong></td><td align="left" valign="center">

         <p>The connection URL to be passed to the JNDI driver when

         establishing a connection to the directory.</p>

-      </td></tr><tr><td align="left" valign="center"><code>contextFactory</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">contextFactory</code></td><td align="left" valign="center">

         <p>Fully qualified Java class name of the factory class used

         to acquire our JNDI <code>InitialContext</code>.  By default,

         assumes that the standard JNDI LDAP provider will be utilized.</p>

-      </td></tr><tr><td align="left" valign="center"><code>derefAliases</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">derefAliases</code></td><td align="left" valign="center">

         <p>A string specifying how aliases are to be dereferenced during

         search operations. The allowed values are "always", "never",

         "finding" and "searching". If not specified, "always" is used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>digest</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">digest</code></td><td align="left" valign="center">

         <p>The digest algorithm to apply to the plaintext password offered

         by the user before comparing it with the value retrieved from the

         directory.  Valid values are those accepted for the algorithm name

         by the <code>java.security.MessageDigest</code> class. If not

         specified the plaintext password is assumed to be retrieved. Not

         required unless <code>userPassword</code> is specified</p>

-      </td></tr><tr><td align="left" valign="center"><code>protocol</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">hostnameVerifierClassName</code></td><td align="left" valign="center">

+        <p>The name of the class to use for hostname verification when

+        using StartTLS for securing the connection to the ldap server.

+        The default constructor will be used to construct an instance of

+        the verifier class. The default is to accept only those hostnames,

+        that are valid according to the peer certificate of the ldap

+        server.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">protocol</code></td><td align="left" valign="center">

          <p>A string specifying the security protocol to use. If not given

          the providers default is used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>referrals</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">referrals</code></td><td align="left" valign="center">

         <p>How do we handle JNDI referrals? Allowed values are

         "ignore", "follow", or "throw"  (see javax.naming.Context.REFERRAL

         for more information).

@@ -349,37 +456,116 @@
         If you need to follow them set referrals to "follow".

         Caution: if your DNS is not part of AD, the LDAP client lib might try

         to resolve your domain name in DNS to find another LDAP server.</p>

-      </td></tr><tr><td align="left" valign="center"><code>roleBase</code></td><td align="left" valign="center">

-        <p>The base directory entry for performing role searches. If

-        not specified the top-level element in the directory context

-        will be used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>roleName</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">roleBase</code></td><td align="left" valign="center">

+        <p>The base directory entry for performing role searches. If not

+        specified the top-level element in the directory context will be used.

+        If specified it may optionally include pattern replacements

+        "{0}".."{n}" corresponding to the name parts of the

+        user's distinguished name (as returned by

+        <code>javax.naming.Name.get()</code>).</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">roleName</code></td><td align="left" valign="center">

         <p>The name of the attribute that contains role names in the

         directory entries found by a role search. In addition you can

         use the <code>userRoleName</code> property to specify the name

         of an attribute, in the user's entry, containing additional

-        role names.  If <code>roleName</code> is not specified a role

+        role names.</p>

+        <p>If <code>roleName</code> is not specified a role

         search does not take place, and roles are taken only from the

         user's entry.</p>

-      </td></tr><tr><td align="left" valign="center"><code>roleSearch</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">roleNested</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> if you want to nest roles into roles.

+        When a role search is performed and the value of this property is

+        <code>true</code>, the search will be repeated recursively to find

+        all the roles that belong to the user either directly or indirectly.

+        If not specified, the default value of <code>false</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">roleSearch</code></td><td align="left" valign="center">

         <p>The LDAP filter expression used for performing role

-        searches.  Use <code>{0}</code> to substitute the

-        distinguished name (DN) of the user, and/or <code>{1}</code> to

-        substitute the username. If not specified a role search does

-        not take place and roles are taken only from the attribute in

-        the user's entry specified by the <code>userRoleName</code>

-        property.</p>

-      </td></tr><tr><td align="left" valign="center"><code>roleSubtree</code></td><td align="left" valign="center">

+        searches.</p>

+

+        <p>Use <code>{0}</code> to substitute the distinguished name (DN)

+        of the user, and/or <code>{1}</code> to substitute the username,

+        and/or <code>{2}</code> for the value of an attribute from the

+        user's directory entry, of the authenticated user.

+        The name of the attribute that provides the value for <code>{2}</code>

+        is configured by the <code>userRoleAttribute</code> property.</p>

+

+        <p>When <code>roleNested</code> property is <code>true</code>,

+        this filter expression will be also used to recursively search for

+        other roles, which indirectly belong to this user. To find the

+        roles that match the newly found role, the following values

+        are used:

+        <code>{0}</code> is substituted by the distinguished name of the newly

+        found role, and both <code>{1}</code> and <code>{2}</code> are

+        substituted by the name of the role (see the <code>roleName</code>

+        property). The <code>userRoleAttribute</code> property is not

+        applicable to this search.</p>

+

+        <p>If this property is not specified, a role search does not take

+        place and roles are taken only from the attribute in the user's entry

+        specified by the <code>userRoleName</code> property.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">roleSearchAsUser</code></td><td align="left" valign="center">

+        <p> When searching for user roles, should the search be performed as the

+        user currently being authenticated? If false,

+        <code>connectionName</code> and <code>connectionPassword</code> will be

+        used if specified, else an anonymous. If not specified, the default

+        value of <code>false</code> is used. Note that when accessing the

+        directory using delegated credentials, this attribute is always ignored

+        and the search is performed using the delegated credentials.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">roleSubtree</code></td><td align="left" valign="center">

         <p>Set to <code>true</code> if you want to search the entire

         subtree of the element specified by the <code>roleBase</code>

         property for role entries associated with the user. The

         default value of <code>false</code> causes only the top level

         to be searched.</p>

-      </td></tr><tr><td align="left" valign="center"><code>userBase</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sizeLimit</code></td><td align="left" valign="center">

+        <p>Specifies the maximum number of records to return when using the

+        <code>userSearch</code> attribute. If not specified, the default of

+        <code>0</code> is used which indicates no limit.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">spnegoDelegationQop</code></td><td align="left" valign="center">

+        <p>When the JNDI Realm is used with the SPNEGO authenticator and

+        <code>useDelegatedCredential</code> is <code>true</code> this attribute

+        controls the QOP (Quality of Protection) that should be used for

+        the connection to the LDAP

+        server after authentication. This value is used to set the

+        <code>javax.security.sasl.qop</code> environment property for the LDAP

+        connection. This attribute should be a comma-separated list of values

+        selected from <code>auth-conf</code>, <code>auth-int</code> and

+        <code>auth</code>. See <a href="http://docs.oracle.com/javase/7/docs/api/javax/security/sasl/Sasl.html#QOP" rel="nofollow">Java documentation</a> for more details.</p>

+        <p>The default value is <code>auth-conf</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sslProtocol</code></td><td align="left" valign="center">

+        <p>Specifies which ssl protocol should be used, when connecting with

+        StartTLS. The default is to let the jre decide. If you need even more

+        control, you can specify the <code>SSLSocketFactory</code> to use.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sslSocketFactory</code></td><td align="left" valign="center">

+        <p>Specifies which <code>SSLSocketFactory</code> to use when connecting

+        to the ldap server using StartTLS. An instance of the class will be

+        constructed using the default constructor. If none class name is given

+        the default jre <code>SSLSocketFactory</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">stripRealmForGss</code></td><td align="left" valign="center">

+        <p>When processing users authenticated via the GSS-API, this attribute

+        controls if any "@..." is removed from the end of the user

+        name. If not specified, the default is <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">timeLimit</code></td><td align="left" valign="center">

+        <p>Specifies the time (in milliseconds) to wait for records to be

+        returned when using the <code>userSearch</code> attribute. If not

+        specified, the default of <code>0</code> is used which indicates no

+        limit.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">transportGuaranteeRedirectStatus</code></td><td align="left" valign="center">

+        <p>The HTTP status code to use when the container needs to issue an HTTP

+           redirect to meet the requirements of a configured transport

+           guarantee. The provided status code is not validated. If not

+           specified, the default value of <code>302</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">useDelegatedCredential</code></td><td align="left" valign="center">

+        <p>When the JNDIRealm is used with the SPNEGO authenticator, delegated

+        credentials for the user may be available. If such credentials are

+        present, this attribute controls whether or not they are used to

+        connect to the directory. If not specified, the default value of

+        <code>true</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">userBase</code></td><td align="left" valign="center">

         <p>The base element for user searches performed using the

         <code>userSearch</code> expression.  Not used if you are using

         the <code>userPattern</code> expression.</p>

-      </td></tr><tr><td align="left" valign="center"><code>userPassword</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">userPassword</code></td><td align="left" valign="center">

         <p>Name of the attribute in the user's entry containing the

         user's password.  If you specify this value, JNDIRealm will

         bind to the directory using the values specified by

@@ -392,14 +578,18 @@
         user's entry and the password presented by the user, with a

         successful bind being interpreted as an authenticated

         user.</p>

-      </td></tr><tr><td align="left" valign="center"><code>userPattern</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">userPattern</code></td><td align="left" valign="center">

         <p>Pattern for the distinguished name (DN) of the user's

         directory entry, with <code>{0}</code> marking where the

         actual username should be inserted. You can use this property

         instead of <code>userSearch</code>, <code>userSubtree</code>

         and <code>userBase</code> when the distinguished name contains

-        the username and is otherwise the same for all users.</p>

-      </td></tr><tr><td align="left" valign="center"><code>userRoleName</code></td><td align="left" valign="center">

+        the username and is otherwise the same for all users. Note that

+        when accessing the directory using delegated credentials, this

+        attribute is always ignored and <code>userSearch</code>,

+        <code>userSubtree</code> and <code>userBase</code> are always

+        used instead.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">userRoleName</code></td><td align="left" valign="center">

         <p>The name of an attribute in the user's directory entry

         containing zero or more values for the names of roles assigned

         to this user.  In addition you can use the

@@ -408,7 +598,15 @@
         by searching the directory. If <code>userRoleName</code> is

         not specified all the roles for a user derive from the role

         search.</p>

-      </td></tr><tr><td align="left" valign="center"><code>userSearch</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">userRoleAttribute</code></td><td align="left" valign="center">

+        <p>The name of an attribute in the user's directory entry

+        containing the value that you wish to use when you search for

+        roles. This is especially useful for RFC 2307 where

+        the role memberUid can be the <code>uid</code> or the

+        <code>uidNumber</code> of the user. This value will be

+        marked as <code>{2}</code> in your role search filter expression.

+        This value will NOT be available for nested role searches.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">userSearch</code></td><td align="left" valign="center">

         <p>The LDAP filter expression to use when searching for a

         user's directory entry, with <code>{0}</code> marking where

         the actual username should be inserted.  Use this property

@@ -416,14 +614,26 @@
         <code>userSubtree</code> properties) instead of

         <code>userPattern</code> to search the directory for the

         user's entry.</p>

-      </td></tr><tr><td align="left" valign="center"><code>userSubtree</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">userSearchAsUser</code></td><td align="left" valign="center">

+        <p> When searching for a user's entry, should the search be performed as

+        the user currently being authenticated? If false,

+        <code>connectionName</code> and <code>connectionPassword</code> will be

+        used if specified, else an anonymous. If not specified, the default

+        value of <code>false</code> is used. Note that when accessing the

+        directory using delegated credentials, this attribute is always ignored

+        and the search is performed using the delegated credentials.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">userSubtree</code></td><td align="left" valign="center">

         <p>Set to <code>true</code> if you want to search the entire

         subtree of the element specified by the <code>userBase</code>

         property for the user's entry. The default value of

         <code>false</code> causes only the top level to be searched.

         Not used if you are using the <code>userPattern</code>

         expression.</p>

-      </td></tr><tr><td align="left" valign="center"><code>X509UsernameRetrieverClassName</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">useStartTls</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> if you want to use StartTLS for securing

+        the connection to the ldap server. The default value is <code>false</code>.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">X509UsernameRetrieverClassName</code></td><td align="left" valign="center">

         <p>When using X509 client certificates, this specifies the class name

         that will be used to retrieve the user name from the certificate.

         The class must implement the

@@ -448,7 +658,7 @@
     <p>The UserDatabase Realm implementation supports the following

     additional attributes:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>allRolesMode</code></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">allRolesMode</code></td><td align="left" valign="center">

         <p>This attribute controls how the special role name <code>*</code> is

         handled when processing authorization constraints in web.xml. By

         default, the specification compliant value of <code>strict</code> is

@@ -459,10 +669,15 @@
         authenticated and no check will be made for assigned roles unless roles

         are defined in web.xml in which case the user must be assigned at least

         one of those roles.</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>resourceName</code></strong></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">resourceName</code></strong></td><td align="left" valign="center">

         <p>The name of the global <code>UserDatabase</code> resource

         that this realm will use for user, password and role information.</p>

-      </td></tr><tr><td align="left" valign="center"><code>X509UsernameRetrieverClassName</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">transportGuaranteeRedirectStatus</code></td><td align="left" valign="center">

+        <p>The HTTP status code to use when the container needs to issue an HTTP

+           redirect to meet the requirements of a configured transport

+           guarantee. The provided status code is not validated. If not

+           specified, the default value of <code>302</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">X509UsernameRetrieverClassName</code></td><td align="left" valign="center">

         <p>When using X509 client certificates, this specifies the class name

         that will be used to retrieve the user name from the certificate.

         The class must implement the

@@ -494,7 +709,7 @@
     <p>The Memory Based Realm implementation supports the following

     additional attributes:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>allRolesMode</code></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">allRolesMode</code></td><td align="left" valign="center">

         <p>This attribute controls how the special role name <code>*</code> is

         handled when processing authorization constraints in web.xml. By

         default, the specification compliant value of <code>strict</code> is

@@ -505,17 +720,26 @@
         authenticated and no check will be made for assigned roles unless roles

         are defined in web.xml in which case the user must be assigned at least

         one of those roles.</p>

-      </td></tr><tr><td align="left" valign="center"><code>digest</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">digest</code></td><td align="left" valign="center">

         <p>The digest algorithm used to store passwords in non-plaintext

         formats. Valid values are those accepted for the algorithm name by the

         <code>java.security.MessageDigest</code> class. If not specified,

         passwords are stored in clear text.</p>

-      </td></tr><tr><td align="left" valign="center"><code>pathname</code></td><td align="left" valign="center">

-        <p>Absolute or relative (to $CATALINA_BASE) pathname to the XML file

-        containing our user information.  See below for details on the

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">pathname</code></td><td align="left" valign="center">

+        <p>URL, absolute path or relative path (to $CATALINA_BASE) for the XML

+        file containing our user information.  See below for details on the

         XML element format required.  If no pathname is specified, the

         default value is <code>conf/tomcat-users.xml</code>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>X509UsernameRetrieverClassName</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">stripRealmForGss</code></td><td align="left" valign="center">

+        <p>When processing users authenticated via the GSS-API, this attribute

+        controls if any "@..." is removed from the end of the user

+        name. If not specified, the default is <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">transportGuaranteeRedirectStatus</code></td><td align="left" valign="center">

+        <p>The HTTP status code to use when the container needs to issue an HTTP

+           redirect to meet the requirements of a configured transport

+           guarantee. The provided status code is not validated. If not

+           specified, the default value of <code>302</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">X509UsernameRetrieverClassName</code></td><td align="left" valign="center">

         <p>When using X509 client certificates, this specifies the class name

         that will be used to retrieve the user name from the certificate.

         The class must implement the

@@ -534,8 +758,10 @@
     <li>Each <code>&lt;user&gt;</code> element must have the following

         attributes:

         <ul>

-        <li><strong>name</strong> - Username of this user (must be unique

-            within this file).</li>

+        <li><strong>username</strong> - Username of this user (must be unique

+            within this file).<br>

+            For compatibility, it is allowed to use <strong>name</strong> as an

+            alternative name for this attribute.</li>

         <li><strong>password</strong> - Password of this user (in

             clear text).</li>

         <li><strong>roles</strong> - Comma-delimited list of the role names

@@ -552,7 +778,7 @@
 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JAAS Realm - org.apache.catalina.realm.JAASRealm"><!--()--></a><a name="JAAS_Realm_-_org.apache.catalina.realm.JAASRealm"><strong>JAAS Realm - org.apache.catalina.realm.JAASRealm</strong></a></font></td></tr><tr><td><blockquote>

 

-    <p><strong>JAASRealm</strong> is an implementation of the Tomcat 6

+    <p><strong>JAASRealm</strong> is an implementation of the Tomcat

     <code>Realm</code> interface that authenticates users through the Java

     Authentication &amp; Authorization Service (JAAS) framework which is now

     provided as part of the standard J2SE API.</p>

@@ -575,7 +801,7 @@
     <p>The JAAS Realm implementation supports the following additional

     attributes:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>allRolesMode</code></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">allRolesMode</code></td><td align="left" valign="center">

         <p>This attribute controls how the special role name <code>*</code> is

         handled when processing authorization constraints in web.xml. By

         default, the specification compliant value of <code>strict</code> is

@@ -586,24 +812,39 @@
         authenticated and no check will be made for assigned roles unless roles

         are defined in web.xml in which case the user must be assigned at least

         one of those roles.</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>appName</code></strong></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">appName</code></strong></td><td align="left" valign="center">

        <p>The name of the application as configured in your login configuration

-       file 

+       file

        (<a href="http://docs.oracle.com/javase/1.4.2/docs/guide/security/jaas/tutorials/LoginConfigFile.html">JAAS LoginConfig</a>).</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>userClassNames</code></strong></td><td align="left" valign="center">

-        <p>A comma-separated list of the names of the classes that you have made 

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">userClassNames</code></strong></td><td align="left" valign="center">

+        <p>A comma-separated list of the names of the classes that you have made

         for your user <code>Principals</code>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>roleClassNames</code></td><td align="left" valign="center">

-        <p>A comma-separated list of the names of the classes that you have made 

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">configFile</code></td><td align="left" valign="center">

+        <p>The name of a JAAS configuration file to use with this Realm. It will

+        be searched for using <code>ClassLoader#getResource(String)</code> so it

+        is possible for the configuration to be bundled within a web

+        application. If not specified, the default JVM global JAAS configuration

+        will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">roleClassNames</code></td><td align="left" valign="center">

+        <p>A comma-separated list of the names of the classes that you have made

         for your role <code>Principals</code>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>useContextClassLoader</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">stripRealmForGss</code></td><td align="left" valign="center">

+        <p>When processing users authenticated via the GSS-API, this attribute

+        controls if any "@..." is removed from the end of the user

+        name. If not specified, the default is <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">transportGuaranteeRedirectStatus</code></td><td align="left" valign="center">

+        <p>The HTTP status code to use when the container needs to issue an HTTP

+           redirect to meet the requirements of a configured transport

+           guarantee. The provided status code is not validated. If not

+           specified, the default value of <code>302</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">useContextClassLoader</code></td><td align="left" valign="center">

         <p>Instructs JAASRealm to use the context class loader for loading the

         user-specified <code>LoginModule</code> class and associated

         <code>Principal</code> classes. The default value is <code>true</code>,

         which is backwards-compatible with the way Tomcat 5 works. To load

         classes using the container's classloader, specify

         <code>false</code>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>X509UsernameRetrieverClassName</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">X509UsernameRetrieverClassName</code></td><td align="left" valign="center">

         <p>When using X509 client certificates, this specifies the class name

         that will be used to retrieve the user name from the certificate.

         The class must implement the

@@ -621,7 +862,7 @@
 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Combined Realm - org.apache.catalina.realm.CombinedRealm"><!--()--></a><a name="Combined_Realm_-_org.apache.catalina.realm.CombinedRealm"><strong>Combined Realm - org.apache.catalina.realm.CombinedRealm</strong></a></font></td></tr><tr><td><blockquote>

 

-    <p><strong>CombinedRealm</strong> is an implementation of the Tomcat 6

+    <p><strong>CombinedRealm</strong> is an implementation of the Tomcat

     <code>Realm</code> interface that authenticates users through one or more

     sub-Realms.</p>

 

@@ -643,7 +884,7 @@
     <p>The CombinedRealm implementation supports the following additional

     attributes.</p>

     

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>allRolesMode</code></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">allRolesMode</code></td><td align="left" valign="center">

         <p>This attribute controls how the special role name <code>*</code> is

         handled when processing authorization constraints in web.xml. By

         default, the specification compliant value of <code>strict</code> is

@@ -654,20 +895,25 @@
         authenticated and no check will be made for assigned roles unless roles

         are defined in web.xml in which case the user must be assigned at least

         one of those roles.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">transportGuaranteeRedirectStatus</code></td><td align="left" valign="center">

+        <p>The HTTP status code to use when the container needs to issue an HTTP

+           redirect to meet the requirements of a configured transport

+           guarantee. The provided status code is not validated. If not

+           specified, the default value of <code>302</code> is used.</p>

       </td></tr></table>

   </blockquote></td></tr></table>

 

 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="LockOut Realm - org.apache.catalina.realm.LockOutRealm"><!--()--></a><a name="LockOut_Realm_-_org.apache.catalina.realm.LockOutRealm"><strong>LockOut Realm - org.apache.catalina.realm.LockOutRealm</strong></a></font></td></tr><tr><td><blockquote>

 

-    <p><strong>LockOutRealm</strong> is an implementation of the Tomcat 6

+    <p><strong>LockOutRealm</strong> is an implementation of the Tomcat

     <code>Realm</code> interface that extends the CombinedRealm to provide lock

     out functionality to provide a user lock out mechanism if there are too many

     failed authentication attempts in a given period of time.</p>

-    

+

     <p>To ensure correct operation, there is a reasonable degree of

     synchronization in this Realm.</p>

-    

+

     <p>This Realm does not require modification to the underlying Realms or the

     associated user storage mechanisms. It achieves this by recording all failed

     logins, including those for users that do not exist. To prevent a DOS by

@@ -684,7 +930,7 @@
     <p>The LockOutRealm implementation supports the following additional

     attributes.</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>allRolesMode</code></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">allRolesMode</code></td><td align="left" valign="center">

         <p>This attribute controls how the special role name <code>*</code> is

         handled when processing authorization constraints in web.xml. By

         default, the specification compliant value of <code>strict</code> is

@@ -695,20 +941,29 @@
         authenticated and no check will be made for assigned roles unless roles

         are defined in web.xml in which case the user must be assigned at least

         one of those roles.</p>

-      </td></tr><tr><td align="left" valign="center"><code>cacheRemovalWarningTime</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cacheRemovalWarningTime</code></td><td align="left" valign="center">

        <p>If a failed user is removed from the cache because the cache is too

        big before it has been in the cache for at least this period of time (in

        seconds) a warning message will be logged. Defaults to 3600 (1 hour).</p>

-      </td></tr><tr><td align="left" valign="center"><code>cacheSize</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cacheSize</code></td><td align="left" valign="center">

        <p>Number of users that have failed authentication to keep in cache. Over

        time the cache will grow to this size and may not shrink. Defaults to

        1000.</p>

-      </td></tr><tr><td align="left" valign="center"><code>failureCount</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">failureCount</code></td><td align="left" valign="center">

        <p>The number of times in a row a user has to fail authentication to be

        locked out. Defaults to 5.</p>

-      </td></tr><tr><td align="left" valign="center"><code>lockOutTime</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">lockOutTime</code></td><td align="left" valign="center">

        <p>The time (in seconds) a user is locked out for after too many

-       authentication failures. Defaults to 300 (5 minutes).</p>

+       authentication failures. Defaults to 300 (5 minutes). Further

+       authentication failures during the lock out time will cause the lock out

+       timer to reset to zero, effectively extending the lock out time. Valid

+       authentication attempts during the lock out period will not succeed but

+       will also not reset the lock out time.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">transportGuaranteeRedirectStatus</code></td><td align="left" valign="center">

+        <p>The HTTP status code to use when the container needs to issue an HTTP

+           redirect to meet the requirements of a configured transport

+           guarantee. The provided status code is not validated. If not

+           specified, the default value of <code>302</code> is used.</p>

       </td></tr></table>

 

     <p>See the <a href="../realm-howto.html">Container-Managed Security

@@ -717,6 +972,26 @@
 

   </blockquote></td></tr></table>

 

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Null Realm - org.apache.catalina.realm.NullRealm"><!--()--></a><a name="Null_Realm_-_org.apache.catalina.realm.NullRealm"><strong>Null Realm - org.apache.catalina.realm.NullRealm</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p><strong>NullRealm</strong> is a minimal implementation of the Tomcat

+    <code>Realm</code> interface that always returns null when an attempt is

+    made to validate a user name and associated credentials. It is intended to

+    be used as a default Realm implementation when no other Realm is

+    specified.</p>

+

+    <p>The NullRealm implementation supports the following additional

+    attributes.</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">transportGuaranteeRedirectStatus</code></td><td align="left" valign="center">

+        <p>The HTTP status code to use when the container needs to issue an HTTP

+           redirect to meet the requirements of a configured transport

+           guarantee. The provided status code is not validated. If not

+           specified, the default value of <code>302</code> is used.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Nested Components"><!--()--></a><a name="Nested_Components"><strong>Nested Components</strong></a></font></td></tr><tr><td><blockquote>

 

   <h3>CombinedRealm Implementation</h3>

@@ -726,7 +1001,7 @@
   <strong>&lt;Realm&gt;</strong> elements may be nested inside it.</p>

 

   <h3>Other Realm Implementations</h3>

-  

+

   <p>No other Realm implementation supports nested components.</p>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Special Features"><!--()--></a><a name="Special_Features"><strong>Special Features</strong></a></font></td></tr><tr><td><blockquote>

@@ -734,6 +1009,31 @@
   <p>See <a href="host.html">Single Sign On</a> for information about

   configuring Single Sign On support for a virtual host.</p>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/config/realm.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/config/resources.html b/tomcat-uid/webapps/docs/config/resources.html
index d3f2239..d7f2a2f 100644
--- a/tomcat-uid/webapps/docs/config/resources.html
+++ b/tomcat-uid/webapps/docs/config/resources.html
@@ -1,14 +1,89 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat Configuration Reference (6.0.41) - The Resources Component</title><meta name="author" content="Remy Maucherat"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.77) - The Resources Component</title><meta name="author" content="Remy Maucherat"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

     The Apache Tomcat Servlet/JSP Container

-  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat Configuration Reference</h1><h2>The Resources Component</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

-<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#Standard_Implementation">Standard Implementation</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Special_Features">Special Features</a></li></ul>

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="sessionidgenerator.html">SessionIdGenerator</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Resources Component</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#Standard_Implementation">Standard Implementation</a></li><li><a href="#VirtualDirContext_implementation">VirtualDirContext implementation</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Special_Features">Special Features</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

   <p>The <strong>Resources</strong> element represents the <em>web

-  application static resources</em>, from which classes will be loaded, 

+  application static resources</em>, from which classes will be loaded,

   HTML, JSP and the other static files will be served. This allows the webapp

   to reside on various mediums other than the filesystem, like compressed

   in a WAR file, in a JDBC database, or in a more advanced versioning

@@ -20,14 +95,14 @@
   access, access through the <code>ServletContext</code> interface, or native

   access through the <code>DirectoryContext</code> interface.</p>

 

-  <p><strong>Note: Running a webapp with non-filesystem based 

-  Resources implementations is only possible when the webapp does not 

+  <p><strong>Note: Running a webapp with non-filesystem based

+  Resources implementations is only possible when the webapp does not

   rely on direct filesystem access to its own resources, and uses the methods

   in the ServletContext interface to access them.</strong></p>

 

-  <p>A Resources element MAY be nested inside a 

-  <a href="context.html">Context</a> component.  If it is not included, 

-  a default filesystem based Resources will be created automatically, 

+  <p>A Resources element MAY be nested inside a

+  <a href="context.html">Context</a> component.  If it is not included,

+  a default filesystem based Resources will be created automatically,

   which is sufficient for most requirements.</p>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

@@ -37,13 +112,13 @@
     <p>All implementations of <strong>Resources</strong>

     support the following attributes:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>className</code></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">className</code></td><td align="left" valign="center">

         <p>Java class name of the implementation to use.  This class must

         implement the <code>javax.naming.directory.DirContext</code> interface.

-        It is recommended for optimal functionality and performance, 

-        but not mandatory, that the class extend 

+        It is recommended for optimal functionality and performance,

+        but not mandatory, that the class extend

         <code>org.apache.naming.resources.BaseDirContext</code>, as well as

-        use the special object types provided in the 

+        use the special object types provided in the

         <code>org.apache.naming.resources</code> for returned objects.

         If not specified, the standard value (defined below) will be used.</p>

       </td></tr></table>

@@ -54,11 +129,30 @@
   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Standard Implementation"><!--()--></a><a name="Standard_Implementation"><strong>Standard Implementation</strong></a></font></td></tr><tr><td><blockquote>

 

     <p>The standard implementation of <strong>Resources</strong> is

-    <strong>org.apache.naming.resources.FileDirContext</strong>, and 

+    <strong>org.apache.naming.resources.FileDirContext</strong>, and

     is configured by its parent Context element.</p>

 

   </blockquote></td></tr></table>

 

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="VirtualDirContext implementation"><!--()--></a><a name="VirtualDirContext_implementation"><strong>VirtualDirContext implementation</strong></a></font></td></tr><tr><td><blockquote>

+    <p>This implementation of <strong>Resources</strong> is

+    <strong>org.apache.naming.resources.VirtualDirContext</strong> and is aimed to be used

+    during development to deploy a webapp without copying files to a webapp compliant

+    directory structure.

+    It extends <code>FileDirContext</code> and supports the following

+    additional attributes</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">extraResourcePaths</code></td><td align="left" valign="center">

+        <p>Allows to map a path of the filesystem to a path in the webapp. Multiple

+        filesystem paths can be mapped to the same path in the webapp. Filesystem

+        path and virtual path must be separated by an equal signe (=). Pairs of paths

+        must be separated by a column.</p>

+        Example: <code>/=/Users/jdoe/mywebapp/src/main/webapp,/=/Users/jdoe/mywebapp/src/main/webapp2,/pictures=/Users/jdoe/sharedpictures</code>

+        <p>The path to the docBase (as declared in the Context) must not be added here.</p>

+        <p>This attribute enhances the feature provided by the <code>aliases</code>

+        attribute of the <strong>StandardContext</strong>.</p>

+      </td></tr></table>

+  </blockquote></td></tr></table>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Nested Components"><!--()--></a><a name="Nested_Components"><strong>Nested Components</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -69,6 +163,31 @@
   <p>No special features are associated with a <strong>Resources</strong>

   element.</p>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/config/resources.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/config/server.html b/tomcat-uid/webapps/docs/config/server.html
index f333bed..28c5b17 100644
--- a/tomcat-uid/webapps/docs/config/server.html
+++ b/tomcat-uid/webapps/docs/config/server.html
@@ -1,9 +1,84 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat Configuration Reference (6.0.41) - The Server Component</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.77) - The Server Component</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

     The Apache Tomcat Servlet/JSP Container

-  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat Configuration Reference</h1><h2>The Server Component</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="sessionidgenerator.html">SessionIdGenerator</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Server Component</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#Standard_Implementation">Standard Implementation</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Special_Features">Special Features</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -19,23 +94,24 @@
   <p>All implementations of <strong>Server</strong>

   support the following attributes:</p>

 

-  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>className</code></td><td align="left" valign="center">

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">className</code></td><td align="left" valign="center">

       <p>Java class name of the implementation to use.  This class must

       implement the <code>org.apache.catalina.Server</code> interface.

       If no class name is specified, the standard implementation will

       be used.</p>

-    </td></tr><tr><td align="left" valign="center"><strong><code>port</code></strong></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">address</code></td><td align="left" valign="center">

+      <p>The TCP/IP address on which this server waits for a shutdown

+      command. If no address is specified, <code>localhost</code> is used.</p>

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">port</code></strong></td><td align="left" valign="center">

       <p>The TCP/IP port number on which this server waits for a shutdown

-      command.  This connection must be initiated from the same server

-      computer that is running this instance of Tomcat. Set to <code>-1</code>

-      to disable the shutdown port.</p>

+      command. Set to <code>-1</code> to disable the shutdown port.</p>

       <p>Note: Disabling the shutdown port works well when Tomcat is started

       using <a href="http://commons.apache.org/daemon/">Apache Commons Daemon</a>

       (running as a service on Windows or with jsvc on un*xes). It cannot be

       used when running Tomcat with the standard shell scripts though, as it

       will prevent shutdown.bat|.sh and catalina.bat|.sh from stopping it

       gracefully.</p>

-    </td></tr><tr><td align="left" valign="center"><strong><code>shutdown</code></strong></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">shutdown</code></strong></td><td align="left" valign="center">

       <p>The command string that must be received via a TCP/IP connection

       to the specified port number, in order to shut down Tomcat.</p>

     </td></tr></table>

@@ -58,9 +134,9 @@
   <p>The following components may be nested inside a <strong>Server</strong>

   element:</p>

   <ul>

-  <li><a href="service.html"><strong>Service</strong></a> - 

+  <li><a href="service.html"><strong>Service</strong></a> -

       One or more service element.</li>

-  <li><a href="globalresources.html"><strong>GlobalNamingResources</strong></a> - 

+  <li><a href="globalresources.html"><strong>GlobalNamingResources</strong></a> -

       Configure the JNDI global resources for the server.</li>

   </ul>

 

@@ -69,6 +145,31 @@
   <p>There are no special features associated with a <strong>Server</strong>.

   </p>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/config/server.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/config/service.html b/tomcat-uid/webapps/docs/config/service.html
index 0165e29..3863b3f 100644
--- a/tomcat-uid/webapps/docs/config/service.html
+++ b/tomcat-uid/webapps/docs/config/service.html
@@ -1,9 +1,84 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat Configuration Reference (6.0.41) - The Service Component</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.77) - The Service Component</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

     The Apache Tomcat Servlet/JSP Container

-  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat Configuration Reference</h1><h2>The Service Component</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="sessionidgenerator.html">SessionIdGenerator</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Service Component</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#Standard_Implementation">Standard Implementation</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Special_Features">Special Features</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -20,12 +95,12 @@
   <p>All implementations of <strong>Service</strong>

   support the following attributes:</p>

 

-  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>className</code></td><td align="left" valign="center">

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">className</code></td><td align="left" valign="center">

       <p>Java class name of the implementation to use.  This class must

       implement the <code>org.apache.catalina.Service</code> interface.

       If no class name is specified, the standard implementation will

       be used.</p>

-    </td></tr><tr><td align="left" valign="center"><strong><code>name</code></strong></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">name</code></strong></td><td align="left" valign="center">

       <p>The display name of this <strong>Service</strong>, which will

       be included in log messages if you utilize standard Catalina

       components.  The name of each <strong>Service</strong> that is

@@ -57,6 +132,31 @@
   <p>There are no special features associated with a <strong>Service</strong>.

   </p>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/config/service.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/config/sessionidgenerator.html b/tomcat-uid/webapps/docs/config/sessionidgenerator.html
new file mode 100644
index 0000000..06ed0a4
--- /dev/null
+++ b/tomcat-uid/webapps/docs/config/sessionidgenerator.html
@@ -0,0 +1,183 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.77) - The SessionIdGenerator Component</title><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+    The Apache Tomcat Servlet/JSP Container

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="sessionidgenerator.html">SessionIdGenerator</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The SessionIdGenerator Component</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#Standard_Implementation">Standard Implementation</a></li></ol></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>The <strong>SessionIdGenerator</strong> element represents the <em>session

+  id generator</em> that will be used to create session ids used by

+  web application HTTP sessions.</p>

+

+  <p>A SessionIdGenerator element MAY be nested inside a

+  <a href="manager.html">Manager</a> component.  If it is not included,

+  a default SessionIdGenerator configuration will be created automatically, which

+  is sufficient for most requirements, &mdash; see

+  <em>Standard SessionIdGenerator Implementation</em> below for the details

+  of this configuration.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Attributes"><!--()--></a><a name="Common_Attributes"><strong>Common Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>All implementations of <strong>SessionIdGenerator</strong>

+    support the following attributes:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">className</code></td><td align="left" valign="center">

+        <p>Java class name of the implementation to use.  This class must

+        implement the <code>org.apache.catalina.SessionIdGenerator</code> interface.

+        If not specified, the standard value (defined below) will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">jvmRoute</code></td><td align="left" valign="center">

+        <p>A routing identifier for this Tomcat instance. It will be added

+        to the session id to allow for stateless stickyness routing by

+        load balancers. The details on how the <code>jvmRoute</code>

+        will be included in the id are implementation dependent.

+        See <a href="#Standard_Implementation">Standard Implementation</a>

+        for the default behavior.</p>

+

+        <p><strong>NOTE</strong> - The value for this property is inherited

+        automatically from the <code>jvmRoute</code> attribute of the

+        <a href="engine.html">Engine</a> element.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sessionIdLength</code></td><td align="left" valign="center">

+        <p>The length of session ids created by this SessionIdGenerator.

+        The details on how the <code>sessionIdLength</code>

+        influences the session id length are implementation dependent.

+        See <a href="#Standard_Implementation">Standard Implementation</a>

+        for the default behavior.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Standard Implementation"><!--()--></a><a name="Standard_Implementation"><strong>Standard Implementation</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>Tomcat provides a standard implementations of <strong>SessionIdGenerator</strong>

+    for use.</p>

+

+    <h3>Standard SessionIdGenerator Implementation</h3>

+

+    <p>The standard implementation of <strong>SessionIdGenerator</strong> is

+    <strong>org.apache.catalina.util.StandardSessionIdGenerator</strong>.

+    It supports the following attributes:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">jvmRoute</code></td><td align="left" valign="center">

+        <p>A routing identifier for this Tomcat instance. It will be added

+        to the end of the session id separated by a ".".</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sessionIdLength</code></td><td align="left" valign="center">

+        <p>The length of session ids created by this SessionIdGenerator.

+        More precisely the session id length is twice the value of

+        <code>sessionIdLength</code> plus the length of the trailing

+        <code>jvmRoute</code> if given. The factor 2 is because

+        the session id is constructed using <code>sessionIdLength</code>

+        random bytes, each byte being encoded in two hex characters

+        in the actual id. The default value is 16.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/config/sessionidgenerator.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/config/systemprops.html b/tomcat-uid/webapps/docs/config/systemprops.html
index 83089dc..2377b1d 100644
--- a/tomcat-uid/webapps/docs/config/systemprops.html
+++ b/tomcat-uid/webapps/docs/config/systemprops.html
@@ -1,42 +1,126 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat Configuration Reference (6.0.41) - System Properties</title><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.77) - System Properties</title><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

     The Apache Tomcat Servlet/JSP Container

-  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat Configuration Reference</h1><h2>System Properties</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

-<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Clustering">Clustering</a></li><li><a href="#Expression_Language">Expression Language</a></li><li><a href="#Jasper">Jasper</a></li><li><a href="#Security">Security</a></li><li><a href="#Specification">Specification</a></li><li><a href="#Sessions">Sessions</a></li><li><a href="#Logging">Logging</a></li><li><a href="#Other">Other</a></li></ul>

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="sessionidgenerator.html">SessionIdGenerator</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>System Properties</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Property_replacements">Property replacements</a></li><li><a href="#Clustering">Clustering</a></li><li><a href="#Expression_Language">Expression Language</a></li><li><a href="#Jasper">Jasper</a></li><li><a href="#Security">Security</a></li><li><a href="#Specification">Specification</a></li><li><a href="#Sessions">Sessions</a></li><li><a href="#Logging">Logging</a></li><li><a href="#JAR_Scanning">JAR Scanning</a></li><li><a href="#Websockets">Websockets</a></li><li><a href="#Other">Other</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

   <p>The following sections list the system properties that may be set to modify

   the default Tomcat behaviour.</p>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Property replacements"><!--()--></a><a name="Property_replacements"><strong>Property replacements</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Property</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.tomcat.util.digester. PROPERTY_SOURCE</code></td><td align="left" valign="center">

+      <p>Set this to a fully qualified name of a class that implements

+         <code>org.apache.tomcat.util.IntrospectionUtils.PropertySource</code>.

+         Required to have a public constructor with no arguments.</p>

+      <p>Use this to add a property source, that will be invoked when <code>${parameter}</code>

+         denoted parameters are found in the XML files that Tomcat parses.</p>

+    </td></tr></table>

+

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Clustering"><strong>Clustering</strong></a></font></td></tr><tr><td><blockquote>

-  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Property</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>org.apache.catalina. tribes.dns_lookups</code></td><td align="left" valign="center">

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Property</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.catalina. tribes.dns_lookups</code></td><td align="left" valign="center">

       <p>If <code>true</code>, the clustering module will attempt to use DNS to

       resolve any host names provided in the cluster configuration.</p>

       <p>If not specified, the default value of <code>false</code> will be used.</p>

     </td></tr></table>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Expression Language"><!--()--></a><a name="Expression_Language"><strong>Expression Language</strong></a></font></td></tr><tr><td><blockquote>

-  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Property</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>org.apache.el.BeanELResolver. CACHE_SIZE</code></td><td align="left" valign="center">

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Property</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.el.BeanELResolver. CACHE_SIZE</code></td><td align="left" valign="center">

       <p>The number of javax.el.BeanELResolver.BeanProperties objects that will

       be cached by the EL Parser.</p>

       <p>If not specified, the default of <code>1000</code> will be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.el.ExpressionBuilder. CACHE_SIZE</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.el.ExpressionBuilder. CACHE_SIZE</code></td><td align="left" valign="center">

       <p>The number of parsed EL expressions that will be cached by the EL

       Parser.</p>

       <p>If not specified, the default of <code>5000</code> will be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.el.parser. COERCE_TO_ZERO</code></td><td align="left" valign="center">

-      <p>If <code>true</code>, when coercing EL expressions to numbers

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.el.parser. COERCE_TO_ZERO</code></td><td align="left" valign="center">

+      <p>If <code>true</code>, when coercing expressions to numbers

       <code>""</code> and <code>null</code> will be coerced to zero as required

       by the specification.</p>

       <p>If not specified, the default value of <code>true</code> will be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.el.parser. SKIP_IDENTIFIER_CHECK</code></td><td align="left" valign="center">

-      <p>If <code>true</code>, when parsing EL expressions, identifiers will not be

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.el.parser. SKIP_IDENTIFIER_CHECK</code></td><td align="left" valign="center">

+      <p>If <code>true</code>, when parsing expressions, identifiers will not be

       checked to ensure that they conform to the Java Language Specification for

       Java identifiers.</p>

-      <p>If not specified, the default value of <code>true</code> will be used.</p>

+      <p>If not specified, the default value of <code>false</code> will be used.</p>

     </td></tr></table>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

-  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Property</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>org.apache.jasper.compiler. Generator.POOL_TAGS_WITH_EXTENDS</code></td><td align="left" valign="center">

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Property</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.compiler. Generator.POOL_TAGS_WITH_EXTENDS</code></td><td align="left" valign="center">

       <p>By default, JSPs that use their own base class via the extends

       attribute of the page directive, will have Tag pooling disabled since

       Jasper cannot guarantee that the necessary initialisation will have taken

@@ -48,84 +132,92 @@
       tags.</p>

       <p>If not specified, the default value of <code>false</code> will be used.

       </p>

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.jasper.compiler. Generator.VAR_EXPRESSIONFACTORY</code></td><td align="left" valign="center">

-      <p>The name of the variable to use for the expression language expression

-      factory.</p>

-      <p>If not specified, the default value of <code>_el_expressionfactory</code>

-      will be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.jasper.compiler. Generator.VAR_INSTANCEMANAGER</code></td><td align="left" valign="center">

-      <p>The name of the variable to use for the instance manager factory.</p>

-      <p>If not specified, the default value of <code>_jsp_instancemanager</code>

-      will be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.jasper.compiler. Generator.STRICT_GET_PROPERTY</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.compiler. Generator.STRICT_GET_PROPERTY</code></td><td align="left" valign="center">

       <p>If <code>true</code>, the requirement to have the object referenced in

       <code>jsp:getProperty</code> action to be previously "introduced"

       to the JSP processor, as specified in the chapter JSP.5.3 of JSP 2.0 and

       later specifications, is enforced.</p>

-      <p>If not specified, the specification compliant default of <code>true</code>

+      <p>If not specified, the specification compliant default of

+      <code>true</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.compiler. Generator.VAR_EXPRESSIONFACTORY</code></td><td align="left" valign="center">

+      <p>The name of the variable to use for the expression language expression

+      factory.</p>

+      <p>If not specified, the default value of <code>_el_expressionfactory</code>

       will be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.jasper.compiler. Parser.STRICT_QUOTE_ESCAPING</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.compiler. Generator.VAR_INSTANCEMANAGER</code></td><td align="left" valign="center">

+      <p>The name of the variable to use for the instance manager factory.</p>

+      <p>If not specified, the default value of <code>_jsp_instancemanager</code>

+      will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.compiler. Parser.STRICT_QUOTE_ESCAPING</code></td><td align="left" valign="center">

       <p>If <code>false</code> the requirements for escaping quotes in JSP

       attributes will be relaxed so that an unescaped quote will not

       cause an error.</p>

       <p>If not specified, the specification compliant default of

       <code>true</code> will be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.jasper.runtime. BodyContentImpl.LIMIT_BUFFER</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.compiler. Parser.STRICT_WHITESPACE</code></td><td align="left" valign="center">

+      <p>If <code>false</code> the requirements for whitespace before an

+      attribute name will be relaxed so that the lack of whitespace will not

+      cause an error.</p>

+      <p>If not specified, the specification compliant default of

+      <code>true</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.runtime. BodyContentImpl.LIMIT_BUFFER</code></td><td align="left" valign="center">

       <p>If <code>true</code>, any tag buffer that expands beyond

       <code>org.apache.jasper.Constants.DEFAULT_TAG_BUFFER_SIZE</code> will be

       destroyed and a new buffer created of the default size.</p>

       <p>If not specified, the default value of <code>false</code> will be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.jasper.runtime. JspFactoryImpl.USE_POOL</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.runtime. JspFactoryImpl.USE_POOL</code></td><td align="left" valign="center">

       <p>If <code>true</code>, a ThreadLocal <code>PageContext</code> pool will

       be used.</p>

       <p>If not specified, the default value of <code>true</code> will be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.jasper.runtime. JspFactoryImpl.POOL_SIZE</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.runtime. JspFactoryImpl.POOL_SIZE</code></td><td align="left" valign="center">

       <p>The size of the ThreadLocal <code>PageContext</code>.</p>

       <p>If not specified, the default value of <code>8</code> will be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.jasper.Constants. JSP_SERVLET_BASE</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.Constants. JSP_SERVLET_BASE</code></td><td align="left" valign="center">

       <p>The base class of the Servlets generated from the JSPs.</p>

       <p>If not specified, the default value of

       <code>org.apache.jasper.runtime.HttpJspBase</code> will be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.jasper.Constants. SERVICE_METHOD_NAME</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.Constants. SERVICE_METHOD_NAME</code></td><td align="left" valign="center">

       <p>The name of the service method called by the base class.</p>

       <p>If not specified, the default value of <code>_jspService</code>

       will be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.jasper.Constants. SERVLET_CLASSPATH</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.Constants. SERVLET_CLASSPATH</code></td><td align="left" valign="center">

       <p>The name of the ServletContext attribute that provides the classpath

       for the JSP.</p>

       <p>If not specified, the default value of

       <code>org.apache.catalina.jsp_classpath</code> will be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.jasper.Constants. JSP_FILE</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.Constants. JSP_FILE</code></td><td align="left" valign="center">

       <p>The name of the request attribute for <code>&lt;jsp-file&gt;</code>

       element of a servlet definition. If present on a request, this overrides

       the value returned by <code>request.getServletPath()</code> to select the

       JSP page to be executed.</p>

       <p>If not specified, the default value of

       <code>org.apache.catalina.jsp_file</code> will be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.jasper.Constants. PRECOMPILE</code></td><td align="left" valign="center">

+      <p><strong>Deprecated:</strong> This will be removed in Tomcat 9.0.x

+      onwards. It is replaced by the use of the jspFile servlet initialisation

+      parameter</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.Constants. PRECOMPILE</code></td><td align="left" valign="center">

       <p>The name of the query parameter that causes the JSP engine to just

       pregenerate the servlet but not invoke it.</p>

       <p>If not specified, the default value of <code>jsp_precompile</code>

       will be used, as defined by JSP specification (JSP.11.4.2).</p>

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.jasper.Constants. JSP_PACKAGE_NAME</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.Constants. JSP_PACKAGE_NAME</code></td><td align="left" valign="center">

       <p>The default package name for compiled jsp pages.</p>

       <p>If not specified, the default value of <code>org.apache.jsp</code>

       will be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.jasper.Constants. TAG_FILE_PACKAGE_NAME</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.Constants. TAG_FILE_PACKAGE_NAME</code></td><td align="left" valign="center">

       <p>The default package name for tag handlers generated from tag files.</p>

       <p>If not specified, the default value of <code>org.apache.jsp.tag</code>

       will be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.jasper.Constants. ALT_DD_ATTR</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.Constants. ALT_DD_ATTR</code></td><td align="left" valign="center">

       <p>The servlet context attribute under which the alternate deployment

       descriptor for this web application is stored.</p>

-      <p>If not specified, the

-      default value of <code>org.apache.catalina.deploy.alt_dd</code> will

-      be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.jasper.Constants. TEMP_VARIABLE_NAME_PREFIX</code></td><td align="left" valign="center">

+      <p>If not specified, the default value of

+      <code>org.apache.catalina.deploy.alt_dd</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.Constants. TEMP_VARIABLE_NAME_PREFIX</code></td><td align="left" valign="center">

       <p>Prefix to use for generated temporary variable names.</p>

-      <p>If not specified,

-      the default value of <code>_jspx_temp</code> will be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.jasper.Constants. USE_INSTANCE_MANAGER_FOR_TAGS</code></td><td align="left" valign="center">

+      <p>If not specified, the default value of <code>_jspx_temp</code>

+      will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.Constants. USE_INSTANCE_MANAGER_FOR_TAGS</code></td><td align="left" valign="center">

       <p>If <code>true</code>, the instance manager is used to obtain tag

       handler instances.</p>

       <p>If not specified, the default value of <code>false</code> will be used.</p>

@@ -133,122 +225,195 @@
 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Security"><strong>Security</strong></a></font></td></tr><tr><td><blockquote>

 

-  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Property</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>org.apache.catalina.connector. RECYCLE_FACADES</code></td><td align="left" valign="center">

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Property</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.catalina.connector. RECYCLE_FACADES</code></td><td align="left" valign="center">

       <p>If this is <code>true</code> or if a security manager is in use a new

       facade object will be created for each request.</p>

-      <p>If not specified, the

-      default value of <code>false</code> will be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.catalina.connector. CoyoteAdapter.ALLOW_BACKSLASH</code></td><td align="left" valign="center">

+      <p>If not specified, the default value of <code>false</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.catalina.connector. CoyoteAdapter.ALLOW_BACKSLASH</code></td><td align="left" valign="center">

       <p>If this is <code>true</code> the '\' character will be permitted as a

       path delimiter.</p>

-      <p>If not specified, the default value of <code>false</code>

-      will be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.tomcat.util.buf. UDecoder.ALLOW_ENCODED_SLASH</code></td><td align="left" valign="center">

+      <p>If not specified, the default value of <code>false</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.tomcat.util.buf. UDecoder.ALLOW_ENCODED_SLASH</code></td><td align="left" valign="center">

       <p>If this is <code>true</code> '%2F' and '%5C' will be permitted as path

       delimiters.</p>

-      <p>If not specified, the default value of <code>false</code> will

-      be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.coyote. USE_CUSTOM_STATUS_MSG_IN_HEADER</code></td><td align="left" valign="center"><p>If this is

-      <code>true</code>, custom HTTP status messages will be used within HTTP

-      headers. If a custom message is specified that is not valid for use in an

-      HTTP header (as defined by RFC2616) then the custom message will be

-      ignored and the default message used.</p>

       <p>If not specified, the default value of <code>false</code> will be used.</p>

     </td></tr></table>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Specification"><strong>Specification</strong></a></font></td></tr><tr><td><blockquote>

 

-  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Property</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>org.apache.catalina. STRICT_SERVLET_COMPLIANCE</code></td><td align="left" valign="center">

-      <p>If this is <code>true</code> the following actions will occur:

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Property</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.catalina. STRICT_SERVLET_COMPLIANCE</code></td><td align="left" valign="center">

+      <p>The default value of this system property is <code>false</code>.</p>

+      <p>If this is <code>true</code> the default values will be changed for:</p>

       <ul>

-      <li>any wrapped request or response object passed to an application

-      dispatcher will be checked to ensure that it has wrapped the original

-      request or response. (SRV.8.2 / SRV.14.2.5.1)

-      </li>

-      <li>a call to <code>Response.getWriter()</code> if no character encoding

-      has been specified will result in subsequent calls to

-      <code>Response.getCharacterEncoding()</code> returning

-      <code>ISO-8859-1</code> and the <code>Content-Type</code> response header

-      will include a <code>charset=ISO-8859-1</code> component. (SRV.15.2.22.1)

-      </li>

-      <li>every request that is associated with a session will cause the

-      session's last accessed time to be updated regardless of whether or not

-      the request explicitly accesses the session. (SRV.7.6)  

-      </li>

-      <li>

-        cookies will be parsed strictly, by default v0 cookies will not work with any invalid characters.

-        <br>If set to <code>false</code>, any v0 cookie with invalid character

-        will be switched to a v1 cookie and the value will be quoted.

-      </li>

-      <li>

-        the path in <code>ServletContext.getResource</code> /

-        <code>getResourceAsStream</code> calls must start with a "/".<br>

-        If set to <code>false</code>, code like <code>getResource("myfolder/myresource.txt")</code> will work.

-      </li>

-      </ul>

-      </p>

-      <p>If this is <code>true</code> the default value will be changed for:

-      <ul>

-      <li><code>org.apache.catalina.connector.Request. ALLOW_EMPTY_QUERY_STRING</code> property</li>

-      <li>The <code>webXmlValidation</code> attribute of any

-          <a href="context.html">Context</a> element.</li>

-      <li>The <code>webXmlNamespaceAware</code> attribute of any

+      <li><code>org.apache.catalina.core.<br>ApplicationContext.GET_RESOURCE_REQUIRE_SLASH</code></li>

+      <li><code>org.apache.catalina.core.<br>ApplicationDispatcher.WRAP_SAME_OBJECT</code></li>

+      <li><code>org.apache.catalina.core.<br>StandardHostValve.ACCESS_SESSION</code></li>

+      <li><code>org.apache.catalina.session.<br>StandardSession.ACTIVITY_CHECK</code></li>

+      <li><code>org.apache.catalina.session.<br>StandardSession.LAST_ACCESS_AT_START</code></li>

+      <li><code>org.apache.tomcat.util.http.<br>ServerCookie.ALWAYS_ADD_EXPIRES</code></li>

+      <li><code>org.apache.tomcat.util.http.<br>ServerCookie.FWD_SLASH_IS_SEPARATOR</code></li>

+      <li><code>org.apache.tomcat.util.http.<br>ServerCookie.PRESERVE_COOKIE_HEADER</code></li>

+      <li><code>org.apache.tomcat.util.http.<br>ServerCookie.STRICT_NAMING</code></li>

+      <li>The <code>resourceOnlyServlets</code> attribute of any

           <a href="context.html">Context</a> element.</li>

       <li>The <code>tldValidation</code> attribute of any

           <a href="context.html">Context</a> element.</li>

+      <li>The <code>useRelativeRedirects</code> attribute of any

+          <a href="context.html">Context</a> element.</li>

+      <li>The <code>xmlNamespaceAware</code> attribute of any

+          <a href="context.html">Context</a> element.</li>

+      <li>The <code>xmlValidation</code> attribute of any

+          <a href="context.html">Context</a> element.</li>

       </ul>

-      </p>

-      <p>If not specified, the default value of <code>false</code> will be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.catalina.connector. Request.ALLOW_EMPTY_QUERY_STRING</code></td><td align="left" valign="center">

-      <p>If this is <code>true</code> Tomcat will return an empty string rather

-      than <code>null</code> for empty query strings - i.e. query strings where

-      only <code>?</code> is present.</p>

-      <p>If not specified, the value of

-      <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code> will be used as

-      the default.</p> 

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.catalina.session. StandardSession.ACTIVITY_CHECK</code></td><td align="left" valign="center">

-      <p>If this is <code>true</code> or if

-      <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code> is

-      <code>true</code> Tomcat will track the number of active requests for each

-      session. When determining if a session is valid, any session with at least

-      one active request will always be considered valid.</p>

-      <p>If not specified, the default value of <code>false</code> will be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.tomcat.util.http. ServerCookie.ALLOW_EQUALS_IN_VALUE</code></td><td align="left" valign="center">

+

+      <p>Note that changing a number of the above defaults is likely to break

+      the majority of systems as some browsers are unable to correctly handle

+      the cookie headers that result from a strict adherence to the

+      specifications. Defaults, regardless of whether or not they have been

+      changed by setting

+      <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code> can always be

+      overridden by explicitly setting the appropriate system property or element

+      attribute.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.catalina.connector. Response.ENFORCE_ENCODING_IN_GET_WRITER</code></td><td align="left" valign="center">

+      <p>If this is <code>true</code> then

+      a call to <code>Response.getWriter()</code> if no character encoding

+      has been specified will result in subsequent calls to

+      <code>Response.getCharacterEncoding()</code> returning

+      <code>ISO-8859-1</code> and the <code>Content-Type</code> response header

+      will include a <code>charset=ISO-8859-1</code> component. (SRV.15.2.22.1)</p>

+      <p>If not specified, the default specification compliant value of

+      <code>true</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.catalina.core.ApplicationContext .GET_RESOURCE_REQUIRE_SLASH</code></td><td align="left" valign="center">

+      <p>If this is <code>true</code> then the path passed to

+      <code>ServletContext.getResource()</code> or

+      <code>ServletContext.getResourceAsStream()</code> must start with

+      "/". If <code>false</code>, code like

+      <code>getResource("myfolder/myresource.txt")</code> will work.</p>

+      <p>If <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code> is set to

+      <code>true</code>, the default of this setting will be <code>true</code>,

+      else the default value will be <code>false</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.catalina.core. ApplicationDispatcher.WRAP_SAME_OBJECT</code></td><td align="left" valign="center">

+      <p>If this is <code>true</code> then any wrapped request or response

+      object passed to an application dispatcher will be checked to ensure that

+      it has wrapped the original request or response.</p>

+      <p>If <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code> is set to

+      <code>true</code>, the default of this setting will be <code>true</code>,

+      else the default value will be <code>false</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.tomcat.util.http. ServerCookie.ALLOW_EQUALS_IN_VALUE</code></td><td align="left" valign="center">

       <p>If this is <code>true</code> Tomcat will allow '<code>=</code>'

       characters when parsing unquoted cookie values. If <code>false</code>,

       cookie values containing '<code>=</code>' will be terminated when the

       '<code>=</code>' is encountered and the remainder of the cookie value will

       be dropped.</p>

+      <p>If not specified, the default value specification compliant value of

+      <code>false</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.tomcat.util.http. ServerCookie.ALLOW_HTTP_SEPARATORS_IN_V0</code></td><td align="left" valign="center">

+      <p>If this is <code>true</code> Tomcat will allow HTTP separators in

+      cookie names and values.</p>

       <p>If not specified, the default specification compliant value of

       <code>false</code> will be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.tomcat.util.http. ServerCookie.ALWAYS_ADD_EXPIRES</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.tomcat.util.http. ServerCookie.ALLOW_NAME_ONLY</code></td><td align="left" valign="center">

+      <p>If this is <code>false</code> then the requirements of the cookie

+      specifications that cookies must have values will be enforced and cookies

+      consisting only of a name but no value will be ignored.</p>

+      <p>If not specified, the default specification compliant value of

+      <code>false</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.tomcat.util.http. ServerCookie.ALWAYS_ADD_EXPIRES</code></td><td align="left" valign="center">

       <p>If this is <code>true</code> Tomcat will always add an expires

       parameter to a SetCookie header even for cookies with version greater than

       zero. This is to work around a known IE6 and IE7 bug that causes IE to

       ignore the Max-Age parameter in a SetCookie header.</p>

-      <p>If not specified, the default value of <code>true</code> will be used.</p>

+      <p>If <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code> is set to

+      <code>true</code>, the default of this setting will be <code>false</code>,

+      else the default value will be <code>true</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.tomcat.util.http. ServerCookie.FWD_SLASH_IS_SEPARATOR</code></td><td align="left" valign="center">

+      <p> If this is true then the <code>/</code> (forward slash) character will

+      be treated as a separator. Note that this character is frequently used in

+      cookie path attributes and some browsers will fail to process a cookie if

+      the path attribute is quoted as is required by a strict adherence to the

+      specifications. This is highly likely to break session tracking using

+      cookies.</p>

+      <p>If <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code> is set to

+      <code>true</code>, the default of this setting will be <code>true</code>,

+      else the default value will be <code>false</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.tomcat.util.http. ServerCookie.PRESERVE_COOKIE_HEADER</code></td><td align="left" valign="center">

+      <p>If this is <code>true</code> Tomcat will ensure that cookie

+      processing does not modify cookie header returned by

+      <code>HttpServletRequest.getHeader()</code>.</p>

+      <p>If <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code> is set to

+      <code>true</code>, the default of this setting will be <code>true</code>,

+      else the default value will be <code>false</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.tomcat.util.http. ServerCookie.STRICT_NAMING</code></td><td align="left" valign="center">

+      <p> If this is true then the requirements of the Servlet specification

+      that Cookie names must adhere to RFC2109 (no use of separators) will be

+      enforced.</p>

+      <p>If <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code> is set to

+      <code>true</code>, the default of this setting will be <code>true</code>,

+      else the default value will be <code>false</code>.</p>

     </td></tr></table>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Sessions"><strong>Sessions</strong></a></font></td></tr><tr><td><blockquote>

 

-  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Property</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>org.apache.catalina.SESSION_COOKIE_NAME</code></td><td align="left" valign="center">

-      <p>An alternative name for the session cookie. Defaults to

-      <code>JSESSIONID</code>. Note that the Servlet specification requires

-      this to be <code>JSESSIONID</code>. You should not rely on being able to

-      change this.</p>

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.catalina.SESSION_PARAMETER_NAME</code></td><td align="left" valign="center">

-      <p>An alternative name for the session path parameter. Defaults to

-      <code>jsessionid</code>. Note that the Servlet specification requires

-      this to be <code>jsessionid</code>. You should not rely on being able to

-      change this.</p>

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.catalina.authenticator.                      Constants.SSO_SESSION_COOKIE_NAME</code></td><td align="left" valign="center">

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Property</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.catalina.authenticator.                     Constants.SSO_SESSION_COOKIE_NAME</code></td><td align="left" valign="center">

       <p>An alternative name for the single sign on session cookie. Defaults to

       <code>JSESSIONIDSSO</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.catalina.core. StandardHostValve.ACCESS_SESSION</code></td><td align="left" valign="center">

+      <p>If this is <code>true</code>, every request that is associated with a

+      session will cause the session's last accessed time to be updated

+      regardless of whether or not the request explicitly accesses the session.</p>

+      <p>If <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code> is set to

+      <code>true</code>, the default of this setting will be <code>true</code>,

+      else the default value will be <code>false</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.catalina.session. StandardSession.ACTIVITY_CHECK</code></td><td align="left" valign="center">

+      <p>If this is <code>true</code>, Tomcat will track the number of active

+      requests for each session. When determining if a session is valid, any

+      session with at least one active request will always be considered valid.</p>

+      <p>If <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code> is set to

+      <code>true</code>, the default of this setting will be <code>true</code>,

+      else the default value will be <code>false</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.catalina.session. StandardSession.LAST_ACCESS_AT_START</code></td><td align="left" valign="center">

+      <p>If this is <code>true</code>, the last accessed time for sessions will

+      be calculated from the beginning of the previous request. If

+      <code>false</code>, the last accessed time for sessions will be calculated

+      from the end of the previous request. This also affects how the idle time

+      is calculated.</p>

+      <p>If <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code> is set to

+      <code>true</code>, the default of this setting will be <code>true</code>,

+      else the default value will be <code>false</code>.</p>

     </td></tr></table>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Logging"><strong>Logging</strong></a></font></td></tr><tr><td><blockquote>

 

-  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Property</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>org.apache.juli.logging. UserDataHelper.CONFIG</code></td><td align="left" valign="center">

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Property</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.juli.formatter</code></td><td align="left" valign="center">

+      <p>If no logging configuration file is specified and no logging configuration class is specified

+         using the <code>java.util.logging.config.class</code> and <code>java.util.logging.config.file</code>

+         properties the default logging framework <code>org.apache.juli</code> will use the default

+         <code>java.util.logging.SimpleFormatter</code> for all console output.

+         To simply override the console output formatter, one can use the described property. Example:

+         <code>-Dorg.apache.juli.formatter=org.apache.juli.OneLineFormatter</code></p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.juli. AsyncOverflowDropType</code></td><td align="left" valign="center">

+      <p>When the memory limit of records has been reached the system needs to determine what action to take.

+         Currently there are three actions that can be taken:

+      </p>

+         <ul>

+           <li><code>int OVERFLOW_DROP_LAST = 1</code> - the record that caused the overflow will be dropped and not logged</li>

+           <li><code>int OVERFLOW_DROP_FIRST = 2</code> - the record that is next in line to be logged will be dropped to make room for the latest record on the queue</li>

+           <li><code>int OVERFLOW_DROP_FLUSH = 3</code> - suspend the thread while the queue empties out and flushes the entries to the write buffer</li>

+           <li><code>int OVERFLOW_DROP_CURRENT = 4</code> - drop the current log entry</li>

+         </ul>

+      <p>The default value is <code>1</code> (OVERFLOW_DROP_LAST).</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.juli. AsyncMaxRecordCount</code></td><td align="left" valign="center">

+      <p>The max number of log records that the async logger will keep in memory. When this limit is reached and a new record is being logged by the

+         JULI framework the system will take an action based on the <code>org.apache.juli.AsyncOverflowDropType</code> setting.</p>

+      <p>The default value is <code>10000</code> records.

+         This number represents the global number of records, not on a per handler basis.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.juli. AsyncLoggerPollInterval</code></td><td align="left" valign="center">

+      <p>The poll interval in milliseconds for the asynchronous logger thread in milliseconds.

+         If the log queue is empty, the async thread will issue a poll(poll interval)

+         in order to not wake up too often.</p>

+      <p>The default value is <code>1000</code> milliseconds.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.juli.logging. UserDataHelper.CONFIG</code></td><td align="left" valign="center">

       <p>The type of logging to use for errors generated by invalid input data.

          The options are: <code>DEBUG_ALL</code>, <code>INFO_THEN_DEBUG</code>,

          <code>INFO_ALL</code> and <code>NONE</code>. When

@@ -257,13 +422,17 @@
          <code>org.apache.juli.logging.UserDataHelper.SUPPRESSION_TIME</code>.

          </p>

       <p>The default value is <code>INFO_THEN_DEBUG</code>.</p>

-      <p>The errors currently logged using this system are:

+      <p>The errors currently logged using this system are:</p>

          <ul>

-         <li>invalid parameters.</li>

+         <li>invalid cookies;</li>

+         <li>invalid parameters;</li>

+         <li>too many headers, too many parameters (hitting

+           <code>maxHeaderCount</code> or <code>maxParameterCount</code> limits

+           of a <a href="http.html">connector</a>).</li>

          </ul>

-         Other errors triggered by invalid input data may be added to this

+         <p>Other errors triggered by invalid input data may be added to this

          system in later versions.</p>

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.juli.logging. UserDataHelper.SUPPRESSION_TIME</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.juli.logging. UserDataHelper.SUPPRESSION_TIME</code></td><td align="left" valign="center">

       <p>When using <code>INFO_THEN_DEBUG</code> for

          <code>org.apache.juli.logging.UserDataHelper.CONFIG</code> this system

          property controls how long messages are logged at DEBUG after a message

@@ -277,69 +446,155 @@
       <p>The default value is <code>86400</code> (24 hours).</p>

     </td></tr></table>

 

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JAR Scanning"><!--()--></a><a name="JAR_Scanning"><strong>JAR Scanning</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Property</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="propertyName">tomcat.util.scan. DefaultJarScanner.jarsToSkip</code></td><td align="left" valign="center">

+      <p>The comma-separated list of file name patterns of JARs that Tomcat will

+         not scan for configuration information when using the

+         <a href="jar-scanner.html">JarScanner</a> functionality. The file name

+         pattern syntax is described in

+         <a href="jar-scanner.html">JarScanner</a> documentation. Note that

+         there are additional system properties that enable JARs to be excluded

+         from specific scans rather than all scans.</p>

+      <p>The coded default is that no JARs are skipped however the system

+         property is set in a default Tomcat installation via the

+         <code>$CATALINA_BASE/conf/catalina.properties</code> file.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.catalina.startup. ContextConfig.jarsToSkip</code></td><td align="left" valign="center">

+      <p>The comma-separated list of additional filenames of JARs that Tomcat

+         will not scan for Servlet 3.0 pluggability features.</p>

+      <p>The coded default is that no JARs are skipped however the system

+         property is set in a default Tomcat installation via the

+         <code>$CATALINA_BASE/conf/catalina.properties</code> file.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.catalina.startup. TldConfig.jarsToSkip</code></td><td align="left" valign="center">

+      <p>The comma-separated list of additional filenames of JARs that Tomcat

+         will not scan for TLDs.</p>

+      <p>The coded default is that no JARs are skipped however the system

+         property is set in a default Tomcat installation via the

+         <code>$CATALINA_BASE/conf/catalina.properties</code> file.</p>

+    </td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Websockets"><strong>Websockets</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Property</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.tomcat .websocket.ALLOW_UNSUPPORTED_EXTENSIONS</code></td><td align="left" valign="center">

+      <p>If <code>true</code>, allow unknown extensions to be declared by

+      the user.</p>

+      <p>The default value is <code>false</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.tomcat. websocket.DEFAULT_ORIGIN_HEADER_VALUE</code></td><td align="left" valign="center">

+      <p>Default value of the origin header that will be sent by the client

+         during the upgrade handshake.</p>

+      <p>The default is null so that no origin header is sent.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.tomcat. websocket.DEFAULT_PROCESS_PERIOD</code></td><td align="left" valign="center">

+      <p>The number of periodic ticks between periodic processing which

+         involves in particular session expiration checks.</p>

+      <p>The default value is <code>10</code> which corresponds to 10

+         seconds.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.tomcat. websocket.DISABLE_BUILTIN_EXTENSIONS</code></td><td align="left" valign="center">

+      <p>If <code>true</code>, disable all built-in extensions provided by the

+         server, such as message compression.</p>

+      <p>The default value is <code>false</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.tomcat. websocket.STREAMS_DROP_EMPTY_MESSAGES</code></td><td align="left" valign="center">

+      <p>If <code>true</code>, streams provided to the user (writer and output

+      stream) will not send an empty message when flushing and there is no

+      data to flush, or when it is closed without having been used (for

+      example if an error occurs).</p>

+      <p>The default value is <code>false</code>.</p>

+    </td></tr></table>

+

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

 

-  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Property</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>org.apache.coyote.MAX_EXTENSION_SIZE</code></td><td align="left" valign="center">

-      <p>Limits the total length of extension data when using chunked encoding.

-      If the value is <code>-1</code>, no limit will be imposed.</p>

-      <p>If not specified, the default value of <code>8192</code> will be

-      used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.coyote.MAX_TRAILER_SIZE</code></td><td align="left" valign="center">

-      <p>Limits the total length of trailing headers in the last chunk of

-      a chunked HTTP request.

-      If the value is <code>-1</code>, no limit will be imposed.</p>

-      <p>If not specified, the default value of <code>8192</code> will be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>catalina.useNaming</code></td><td align="left" valign="center">

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Property</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.coyote. USE_CUSTOM_STATUS_MSG_IN_HEADER</code></td><td align="left" valign="center"><p>If this is

+      <code>true</code>, custom HTTP status messages will be used within HTTP

+      headers. If a custom message is specified that is not valid for use in an

+      HTTP header (as defined by RFC2616) then the custom message will be

+      ignored and the default message used.</p>

+      <p>If not specified, the default value of <code>false</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">catalina.useNaming</code></td><td align="left" valign="center">

       <p>If this is <code>false</code> it will override the

       <code>useNaming</code> attribute for all <a href="context.html">

       Context</a> elements.</p>

-    </td></tr><tr><td align="left" valign="center"><code>jvmRoute</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">javax.sql.DataSource.Factory</code></td><td align="left" valign="center">

+      <p>The class name of the factory to use to create resources of type

+      <code>javax.sql.DataSource</code>. If not specified the default of

+      <code>org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory</code> is used

+      which is a package renamed (to avoid conflicts) copy of

+      <a href="http://commons.apache.org/dbcp">Apache Commons DBCP</a>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">javax.mail.Session.Factory</code></td><td align="left" valign="center">

+      <p>The class name of the factory to use to create resources of type

+      <code>javax.mail.Session</code>. If not specified the default of

+      <code>org.apache.naming.factory.MailSessionFactory</code> is used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">jvmRoute</code></td><td align="left" valign="center">

       <p>Provides a default value for the <code>jvmRoute</code> attribute of the

       <a href="engine.html">Engine</a> element. It does not override the value

       configured on the <a href="engine.html">Engine</a> element.</p>

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.catalina.loader. WebappClassLoader.ENABLE_CLEAR_REFERENCES</code></td><td align="left" valign="center">

-      <p>If <code>true</code>, Tomcat attempts to null out any static or final

-      fields from loaded classes when a web application is stopped as a work

-      around for apparent garbage collection bugs and application coding errors.

-      </p>

-      <p>There have been some issues reported with log4j when this option is

-      <code>true</code>.</p>

-      <p>Applications without memory leaks using recent JVMs should operate

-      correctly with this option set to <code>false</code>.</p>

-      <p>If not specified, the default value of <code>true</code> will be used.

-      </p>

-    </td></tr><tr><td align="left" valign="center"><code>catalina.config</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">catalina.config</code></td><td align="left" valign="center">

       <p>The URL for the catalina.properties configuration file.</p>

-    </td></tr><tr><td align="left" valign="center"><code>tomcat.util.buf.StringCache.byte.enabled</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">tomcat.util.buf.StringCache.byte.enabled</code></td><td align="left" valign="center">

       <p>If <code>true</code>, the String cache is enabled for

       <code>ByteChunk</code>.</p>

       <p>If not specified, the default value of <code>false</code> will be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>tomcat.util.buf.StringCache.char.enabled</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">tomcat.util.buf.StringCache.char.enabled</code></td><td align="left" valign="center">

       <p>If <code>true</code>, the String cache is enabled for

       <code>CharChunk</code>.</p>

       <p>If not specified, the default value of <code>false</code> will be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>tomcat.util.buf.StringCache.trainThreshold</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">tomcat.util.buf.StringCache.trainThreshold</code></td><td align="left" valign="center">

       <p>The number of times <code>toString()</code> must be called before the

       cache is activated.</p>

       <p>If not specified, the default value of <code>20000</code> will be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>tomcat.util.buf.StringCache.cacheSize</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">tomcat.util.buf.StringCache.cacheSize</code></td><td align="left" valign="center">

       <p>The size of the String cache.</p>

       <p>If not specified, the default value of <code>200</code> will be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>tomcat.util.buf.StringCache.maxStringSize</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">tomcat.util.buf.StringCache.maxStringSize</code></td><td align="left" valign="center">

       <p>The maximum length of String that will be cached.</p>

       <p>If not specified, the default value of <code>128</code> will be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.tomcat.util. http.FastHttpDateFormat.CACHE_SIZE</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.tomcat.util. http.FastHttpDateFormat.CACHE_SIZE</code></td><td align="left" valign="center">

       <p>The size of the cache to use parsed and formatted date value.</p>

       <p>If not specified, the default value of <code>1000</code> will be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.tomcat.util. net.NioSelectorShared</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.tomcat.util. net.NioSelectorShared</code></td><td align="left" valign="center">

       <p>If <code>true</code>, use a shared selector for servlet write/read.</p>

       <p>If not specified, the default value of <code>true</code> will be used.</p>

-    </td></tr><tr><td align="left" valign="center"><code>org.apache.catalina.startup. EXIT_ON_INIT_FAILURE</code></td><td align="left" valign="center">

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.catalina.startup. EXIT_ON_INIT_FAILURE</code></td><td align="left" valign="center">

       <p>If <code>true</code>, the server will exit if an exception happens

          during the server initialization phase.</p>

       <p>If not specified, the default value of <code>false</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.catalina.startup. RealmRuleSet.MAX_NESTED_REALM_LEVELS</code></td><td align="left" valign="center">

+      <p>The CombinedRealm allows nested Realms. This property controls the

+      maximum permitted number of levels of nesting.</p>

+      <p>If not specified, the default value of <code>3</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">tomcat.util.http.parser.HttpParser. requestTargetAllow</code></td><td align="left" valign="center">

+      <p>A string comprised of characters the server should allow even when they are not encoded.

+      These characters would normally result in a 400 status.</p>

+      <p>The acceptable characters for this property are: <code>|</code>, <code>{</code>

+      , and <code>}</code></p>

+      <p><strong>WARNING</strong>: Use of this option will expose the server to CVE-2016-6816.

+      </p>

+      <p>If not specified, the default value of <code>null</code> will be used.</p>

     </td></tr></table>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/config/systemprops.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/config/valve.html b/tomcat-uid/webapps/docs/config/valve.html
index 615d32e..3431b66 100644
--- a/tomcat-uid/webapps/docs/config/valve.html
+++ b/tomcat-uid/webapps/docs/config/valve.html
@@ -1,10 +1,85 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat Configuration Reference (6.0.41) - The Valve Component</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.77) - The Valve Component</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

     The Apache Tomcat Servlet/JSP Container

-  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat Configuration Reference</h1><h2>The Valve Component</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

-<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Access_Log_Valve">Access Log Valve</a><ol><li><a href="#Access_Log_Valve/Introduction">Introduction</a></li><li><a href="#Access_Log_Valve/Attributes">Attributes</a></li></ol></li><li><a href="#Remote_Address_Filter">Remote Address Filter</a><ol><li><a href="#Remote_Address_Filter/Introduction">Introduction</a></li><li><a href="#Remote_Address_Filter/Attributes">Attributes</a></li></ol></li><li><a href="#Remote_Host_Filter">Remote Host Filter</a><ol><li><a href="#Remote_Host_Filter/Introduction">Introduction</a></li><li><a href="#Remote_Host_Filter/Attributes">Attributes</a></li></ol></li><li><a href="#Request_Dumper_Valve">Request Dumper Valve</a><ol><li><a href="#Request_Dumper_Valve/Introduction">Introduction</a></li><li><a href="#Request_Dumper_Valve/Attributes">Attributes</a></li></ol></li><li><a href="#Single_Sign_On_Valve">Single Sign On Valve</a><ol><li><a href="#Single_Sign_On_Valve/Introduction">Introduction</a></li><li><a href="#Single_Sign_On_Valve/Attributes">Attributes</a></li></ol></li><li><a href="#Basic_Authenticator_Valve">Basic Authenticator Valve</a><ol><li><a href="#Basic_Authenticator_Valve/Introduction">Introduction</a></li><li><a href="#Basic_Authenticator_Valve/Attributes">Attributes</a></li></ol></li><li><a href="#Digest_Authenticator_Valve">Digest Authenticator Valve</a><ol><li><a href="#Digest_Authenticator_Valve/Introduction">Introduction</a></li><li><a href="#Digest_Authenticator_Valve/Attributes">Attributes</a></li></ol></li><li><a href="#Form_Authenticator_Valve">Form Authenticator Valve</a><ol><li><a href="#Form_Authenticator_Valve/Introduction">Introduction</a></li><li><a href="#Form_Authenticator_Valve/Attributes">Attributes</a></li></ol></li><li><a href="#SSL_Authenticator_Valve">SSL Authenticator Valve</a><ol><li><a href="#SSL_Authenticator_Valve/Introduction">Introduction</a></li><li><a href="#SSL_Authenticator_Valve/Attributes">Attributes</a></li></ol></li><li><a href="#WebDAV_Fix_Valve">WebDAV Fix Valve</a><ol><li><a href="#WebDAV_Fix_Valve/Introduction">Introduction</a></li><li><a href="#WebDAV_Fix_Valve/Attributes">Attributes</a></li></ol></li><li><a href="#Remote_IP_Valve">Remote IP Valve</a><ol><li><a href="#Remote_IP_Valve/Introduction">Introduction</a></li><li><a href="#Remote_IP_Valve/Attributes">Attributes</a></li></ol></li><li><a href="#Stuck_Thread_Detection_Valve">Stuck Thread Detection Valve</a><ol><li><a href="#Stuck_Thread_Detection_Valve/Introduction">Introduction</a></li><li><a href="#Stuck_Thread_Detection_Valve/Attributes">Attributes</a></li></ol></li><li><a href="#SSL_Valve">SSL Valve</a><ol><li><a href="#SSL_Valve/Introduction">Introduction</a></li><li><a href="#SSL_Valve/Attributes">Attributes</a></li></ol></li></ul>

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="sessionidgenerator.html">SessionIdGenerator</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>web.xml</strong></p><ul><li><a href="filter.html">Filter</a></li></ul><p><strong>Other</strong></p><ul><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Valve Component</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Access_Logging">Access Logging</a><ol><li><a href="#Access_Log_Valve">Access Log Valve</a><ol><li><a href="#Access_Log_Valve/Introduction">Introduction</a></li><li><a href="#Access_Log_Valve/Attributes">Attributes</a></li></ol></li><li><a href="#Extended_Access_Log_Valve">Extended Access Log Valve</a><ol><li><a href="#Extended_Access_Log_Valve/Introduction">Introduction</a></li><li><a href="#Extended_Access_Log_Valve/Attributes">Attributes</a></li></ol></li></ol></li><li><a href="#Access_Control">Access Control</a><ol><li><a href="#Remote_Address_Filter">Remote Address Filter</a><ol><li><a href="#Remote_Address_Filter/Introduction">Introduction</a></li><li><a href="#Remote_Address_Filter/Attributes">Attributes</a></li><li><a href="#Remote_Address_Valve/Example_localhost">Example 1</a></li><li><a href="#Remote_Address_Valve/Example_localhost_port">Example 2</a></li><li><a href="#Remote_Address_Valve/Example_port_auth">Example 3</a></li></ol></li><li><a href="#Remote_Host_Filter">Remote Host Filter</a><ol><li><a href="#Remote_Host_Filter/Introduction">Introduction</a></li><li><a href="#Remote_Host_Filter/Attributes">Attributes</a></li></ol></li></ol></li><li><a href="#Proxies_Support">Proxies Support</a><ol><li><a href="#Remote_IP_Valve">Remote IP Valve</a><ol><li><a href="#Remote_IP_Valve/Introduction">Introduction</a></li><li><a href="#Remote_IP_Valve/Attributes">Attributes</a></li></ol></li><li><a href="#SSL_Valve">SSL Valve</a><ol><li><a href="#SSL_Valve/Introduction">Introduction</a></li><li><a href="#SSL_Valve/Attributes">Attributes</a></li></ol></li></ol></li><li><a href="#Single_Sign_On_Valve">Single Sign On Valve</a><ol><li><a href="#Single_Sign_On_Valve/Introduction">Introduction</a></li><li><a href="#Single_Sign_On_Valve/Attributes">Attributes</a></li></ol></li><li><a href="#Authentication">Authentication</a><ol><li><a href="#Basic_Authenticator_Valve">Basic Authenticator Valve</a><ol><li><a href="#Basic_Authenticator_Valve/Introduction">Introduction</a></li><li><a href="#Basic_Authenticator_Valve/Attributes">Attributes</a></li></ol></li><li><a href="#Digest_Authenticator_Valve">Digest Authenticator Valve</a><ol><li><a href="#Digest_Authenticator_Valve/Introduction">Introduction</a></li><li><a href="#Digest_Authenticator_Valve/Attributes">Attributes</a></li></ol></li><li><a href="#Form_Authenticator_Valve">Form Authenticator Valve</a><ol><li><a href="#Form_Authenticator_Valve/Introduction">Introduction</a></li><li><a href="#Form_Authenticator_Valve/Attributes">Attributes</a></li></ol></li><li><a href="#SSL_Authenticator_Valve">SSL Authenticator Valve</a><ol><li><a href="#SSL_Authenticator_Valve/Introduction">Introduction</a></li><li><a href="#SSL_Authenticator_Valve/Attributes">Attributes</a></li></ol></li><li><a href="#SPNEGO_Valve">SPNEGO Valve</a><ol><li><a href="#SPNEGO_Valve/Introduction">Introduction</a></li><li><a href="#SPNEGO_Valve/Attributes">Attributes</a></li></ol></li></ol></li><li><a href="#Error_Report_Valve">Error Report Valve</a><ol><li><a href="#Error_Report_Valve/Introduction">Introduction</a></li><li><a href="#Error_Report_Valve/Attributes">Attributes</a></li></ol></li><li><a href="#Crawler_Session_Manager_Valve">Crawler Session Manager Valve</a><ol><li><a href="#Crawler_Session_Manager_Valve/Introduction">Introduction</a></li><li><a href="#Crawler_Session_Manager_Valve/Attributes">Attributes</a></li></ol></li><li><a href="#Stuck_Thread_Detection_Valve">Stuck Thread Detection Valve</a><ol><li><a href="#Stuck_Thread_Detection_Valve/Introduction">Introduction</a></li><li><a href="#Stuck_Thread_Detection_Valve/Attributes">Attributes</a></li></ol></li><li><a href="#Semaphore_Valve">Semaphore Valve</a><ol><li><a href="#Semaphore_Valve/Introduction">Introduction</a></li><li><a href="#Semaphore_Valve/Attributes">Attributes</a></li></ol></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

   <p>A <strong>Valve</strong> element represents a component that will be

@@ -14,31 +89,40 @@
   Individual Valves have distinct processing capabilities, and are

   described individually below.</p>

 

-    <blockquote><em>

-    <p>The description below uses the variable name $CATALINA_BASE to refer the

+    <p><em>The description below uses the variable name $CATALINA_BASE to refer the

     base directory against which most relative paths are resolved. If you have

-    not configured Tomcat 6 for multiple instances by setting a CATALINA_BASE

+    not configured Tomcat for multiple instances by setting a CATALINA_BASE

     directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME,

-    the directory into which you have installed Tomcat 6.</p>

-    </em></blockquote>

+    the directory into which you have installed Tomcat.</em></p>

 

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Access Log Valve"><!--()--></a><a name="Access_Log_Valve"><strong>Access Log Valve</strong></a></font></td></tr><tr><td><blockquote>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Access Logging"><!--()--></a><a name="Access_Logging"><strong>Access Logging</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>Access logging is performed by valves that implement

+<strong>org.apache.catalina.AccessLog</strong> interface.</p>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Access Log Valve"><!--()--></a><a name="Access_Log_Valve"><strong>Access Log Valve</strong></a></font></td></tr><tr><td><blockquote>

 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Access Log Valve/Introduction"><!--()--></a><a name="Access_Log_Valve/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

-    <p>The <strong>Access Log Valve</strong> creates log files in the same

-    format as those created by standard web servers.  These logs can later

-    be analyzed by standard log analysis tools to track page hit counts,

-    user session activity, and so on.  The files produces by this <code>Valve</code>

-    are rolled over nightly at midnight.  This <code>Valve</code>

-    may be associated with any Catalina container (<code>Context</code>,

-    <code>Host</code>, or <code>Engine</code>), and

+    <p>The <strong>Access Log Valve</strong> creates log files in the

+    same format as those created by standard web servers.  These logs

+    can later be analyzed by standard log analysis tools to track page

+    hit counts, user session activity, and so on.  This <code>Valve</code>

+    uses self-contained logic to write its log files, which can be

+    automatically rolled over at midnight each day.  (The essential

+    requirement for access logging is to handle a large continuous

+    stream of data with low overhead. This <code>Valve</code> does not

+    use Apache Commons Logging, thus avoiding additional overhead and

+    potentially complex configuration).</p>

+

+    <p>This <code>Valve</code> may be associated with any Catalina container

+    (<code>Context</code>, <code>Host</code>, or <code>Engine</code>), and

     will record ALL requests processed by that container.</p>

 

     <p>Some requests may be handled by Tomcat before they are passed to a

     container. These include redirects from /foo to /foo/ and the rejection of

     invalid requests. Where Tomcat can identify the <code>Context</code> that

-    would have handled the request, the request/response will be logged in the 

+    would have handled the request, the request/response will be logged in the

     <code>AccessLog</code>(s) associated <code>Context</code>, <code>Host</code>

     and <code>Engine</code>. Where Tomcat cannot identify the

     <code>Context</code> that would have handled the request, e.g. in cases

@@ -49,6 +133,22 @@
     <code>AccessLog</code> implementation found to log those requests that are

     rejected before they are passed to a container.</p>

 

+    <p>The output file will be placed in the directory given by the

+    <code>directory</code> attribute. The name of the file is composed

+    by concatenation of the configured <code>prefix</code>, timestamp and

+    <code>suffix</code>. The format of the timestamp in the file name can be

+    set using the <code>fileDateFormat</code> attribute. This timestamp will

+    be omitted if the file rotation is switched off by setting

+    <code>rotatable</code> to <code>false</code>.</p>

+

+    <p><strong>Warning:</strong> If multiple AccessLogValve instances

+    are used, they should be configured to use different output files.</p>

+

+    <p>If sendfile is used, the response bytes will be written asynchronously

+    in a separate thread and the access log valve will not know how many bytes

+    were actually written. In this case, the number of bytes that was passed to

+    the sendfile thread for writing will be recorded in the access log valve.

+    </p>

   </blockquote></td></tr></table>

 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Access Log Valve/Attributes"><!--()--></a><a name="Access_Log_Valve/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

@@ -56,49 +156,90 @@
     <p>The <strong>Access Log Valve</strong> supports the following

     configuration attributes:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>className</code></strong></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

         <p>Java class name of the implementation to use.  This MUST be set to

         <strong>org.apache.catalina.valves.AccessLogValve</strong> to use the

         default access log valve.</p>

-      </td></tr><tr><td align="left" valign="center"><code>directory</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">directory</code></td><td align="left" valign="center">

         <p>Absolute or relative pathname of a directory in which log files

         created by this valve will be placed.  If a relative path is

         specified, it is interpreted as relative to $CATALINA_BASE.  If

         no directory attribute is specified, the default value is "logs"

         (relative to $CATALINA_BASE).</p>

-      </td></tr><tr><td align="left" valign="center"><code>encoding</code></td><td align="left" valign="center">

-        <p>Character set used to write the log file. An empty string means

-        to use the system default character set. Default value: use the

-        system default character set.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">prefix</code></td><td align="left" valign="center">

+        <p>The prefix added to the start of each log file's name.  If not

+        specified, the default value is "access_log.".</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">suffix</code></td><td align="left" valign="center">

+        <p>The suffix added to the end of each log file's name.  If not

+        specified, the default value is "" (a zero-length string),

+        meaning that no suffix will be added.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">fileDateFormat</code></td><td align="left" valign="center">

+        <p>Allows a customized timestamp in the access log file name.

+           The file is rotated whenever the formatted timestamp changes.

+           The default value is <code>yyyy-MM-dd</code>.

+           If you wish to rotate every hour, then set this value

+           to <code>yyyy-MM-dd.HH</code>.

+           The date format will always be localized

+           using the locale <code>en_US</code>.

         </p>

-      </td></tr><tr><td align="left" valign="center"><code>pattern</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">rotatable</code></td><td align="left" valign="center">

+        <p>Flag to determine if log rotation should occur.

+           If set to <code>false</code>, then this file is never rotated and

+           <code>fileDateFormat</code> is ignored.

+           Default value: <code>true</code>

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">renameOnRotate</code></td><td align="left" valign="center">

+        <p>By default for a rotatable log the active access log file name

+           will contain the current timestamp in <code>fileDateFormat</code>.

+           During rotation the file is closed and a new file with the next

+           timestamp in the name is created and used. When setting

+           <code>renameOnRotate</code> to <code>true</code>, the timestamp

+           is no longer part of the active log file name. Only during rotation

+           the file is closed and then renamed to include the timestamp.

+           This is similar to the behavior of most log frameworks when

+           doing time based rotation.

+           Default value: <code>false</code>

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">pattern</code></td><td align="left" valign="center">

         <p>A formatting layout identifying the various information fields

         from the request and response to be logged, or the word

         <code>common</code> or <code>combined</code> to select a

         standard format.  See below for more information on configuring

-        this attribute. Note that the optimized access does only support

-        <code>common</code> and <code>combined</code> as the value for this

-        attribute.</p>

-      </td></tr><tr><td align="left" valign="center"><code>prefix</code></td><td align="left" valign="center">

-        <p>The prefix added to the start of each log file's name.  If not

-        specified, the default value is "access_log.".  To specify no prefix,

-        use a zero-length string.</p>

-      </td></tr><tr><td align="left" valign="center"><code>resolveHosts</code></td><td align="left" valign="center">

-        <p>Set to <code>true</code> to convert the IP address of the remote

-        host into the corresponding host name via a DNS lookup.  Set to

-        <code>false</code> to skip this lookup, and report the remote IP

-        address instead.</p>

-      </td></tr><tr><td align="left" valign="center"><code>suffix</code></td><td align="left" valign="center">

-        <p>The suffix added to the end of each log file's name.  If not

-        specified, the default value is "".  To specify no suffix,

-        use a zero-length string.</p>

-      </td></tr><tr><td align="left" valign="center"><code>rotatable</code></td><td align="left" valign="center">

-        <p>Flag to determine if log rotation should occur.

-           If set to <code>false</code>, then this file is never rotated and

-           <code>fileDateFormat</code> is ignored. Use with caution!

-           Default value: <code>true</code>

+        this attribute.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">encoding</code></td><td align="left" valign="center">

+        <p>Character set used to write the log file. An empty string means

+        to use the system default character set. Default value: use the

+        system default character set.

         </p>

-      </td></tr><tr><td align="left" valign="center"><code>condition</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">locale</code></td><td align="left" valign="center">

+        <p>The locale used to format timestamps in the access log

+           lines. Any timestamps configured using an

+           explicit SimpleDateFormat pattern (<code>%{xxx}t</code>)

+           are formatted in this locale. By default the

+           default locale of the Java process is used. Switching the

+           locale after the AccessLogValve is initialized is not supported.

+           Any timestamps using the common log format

+           (<code>CLF</code>) are always formatted in the locale

+           <code>en_US</code>.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">requestAttributesEnabled</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> to check for the existence of request

+        attributes (typically set by the RemoteIpValve and similar) that should

+        be used to override the values returned by the request for remote

+        address, remote host, server port and protocol. If the attributes are

+        not set, or this attribute is set to <code>false</code> then the values

+        from the request will be used. If not set, the default value of

+        <code>false</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">conditionIf</code></td><td align="left" valign="center">

+        <p>Turns on conditional logging. If set, requests will be

+           logged only if <code>ServletRequest.getAttribute()</code> is

+           not null. For example, if this value is set to

+           <code>important</code>, then a particular request will only be logged

+           if <code>ServletRequest.getAttribute("important") != null</code>.

+           The use of Filters is an easy way to set/unset the attribute

+           in the ServletRequest on many different requests.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">conditionUnless</code></td><td align="left" valign="center">

         <p>Turns on conditional logging. If set, requests will be

            logged only if <code>ServletRequest.getAttribute()</code> is

            null. For example, if this value is set to

@@ -107,17 +248,21 @@
            The use of Filters is an easy way to set/unset the attribute

            in the ServletRequest on many different requests.

         </p>

-      </td></tr><tr><td align="left" valign="center"><code>fileDateFormat</code></td><td align="left" valign="center">

-        <p>Allows a customized date format in the access log file name.

-           The date format also decides how often the file is rotated.

-           If you wish to rotate every hour, then set this value

-           to: <code>yyyy-MM-dd.HH</code>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">condition</code></td><td align="left" valign="center">

+        <p>The same as <code>conditionUnless</code>. This attribute is

+           provided for backwards compatibility.

         </p>

-      </td></tr><tr><td align="left" valign="center"><code>buffered</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">buffered</code></td><td align="left" valign="center">

         <p>Flag to determine if logging will be buffered.

-           If set to <code>false</code>, then access logging will be written after each 

+           If set to <code>false</code>, then access logging will be written after each

            request. Default value: <code>true</code>

         </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">resolveHosts</code></td><td align="left" valign="center">

+        <p>This attribute is no longer supported. Use the connector

+        attribute <code>enableLookups</code> instead.</p>

+        <p>If you have <code>enableLookups</code> on the connector set to

+        <code>true</code> and want to ignore it, use <b>%a</b> instead of

+        <b>%h</b> in the value of <code>pattern</code>.</p>

       </td></tr></table>

 

     <p>Values for the <code>pattern</code> attribute are made up of literal

@@ -131,12 +276,13 @@
     <li><b>%b</b> - Bytes sent, excluding HTTP headers, or '-' if zero</li>

     <li><b>%B</b> - Bytes sent, excluding HTTP headers</li>

     <li><b>%h</b> - Remote host name (or IP address if

-        <code>resolveHosts</code> is false)</li>

+        <code>enableLookups</code> for the connector is false)</li>

     <li><b>%H</b> - Request protocol</li>

     <li><b>%l</b> - Remote logical username from identd (always returns

         '-')</li>

     <li><b>%m</b> - Request method (GET, POST, etc.)</li>

-    <li><b>%p</b> - Local port on which this request was received</li>

+    <li><b>%p</b> - Local port on which this request was received.

+        See also <code>%{xxx}p</code> below.</li>

     <li><b>%q</b> - Query string (prepended with a '?' if it exists)</li>

     <li><b>%r</b> - First line of the request (method and request URI)</li>

     <li><b>%s</b> - HTTP status code of the response</li>

@@ -147,35 +293,176 @@
     <li><b>%v</b> - Local server name</li>

     <li><b>%D</b> - Time taken to process the request, in millis</li>

     <li><b>%T</b> - Time taken to process the request, in seconds</li>

+    <li><b>%F</b> - Time taken to commit the response, in millis</li>

     <li><b>%I</b> - Current request thread name (can compare later with stacktraces)</li>

     </ul>

 

     <p>

-    There is also support to write information from the cookie, incoming

-    header, the Session or something else in the ServletRequest.

+    There is also support to write information incoming or outgoing

+    headers, cookies, session or request attributes and special

+    timestamp formats.

     It is modeled after the

     <a href="http://httpd.apache.org/">Apache HTTP Server</a> log configuration

-    syntax:</p>

+    syntax. Each of them can be used multiple times with different <code>xxx</code> keys:

+    </p>

     <ul>

-    <li><b><code>%{xxx}i</code></b> for incoming headers</li>

-    <li><b><code>%{xxx}o</code></b> for outgoing response headers</li>

-    <li><b><code>%{xxx}c</code></b> for a specific cookie</li>

-    <li><b><code>%{xxx}r</code></b> xxx is an attribute in the ServletRequest</li>

-    <li><b><code>%{xxx}s</code></b> xxx is an attribute in the HttpSession</li>

+    <li><b><code>%{xxx}i</code></b> write value of incoming header with name <code>xxx</code></li>

+    <li><b><code>%{xxx}o</code></b> write value of outgoing header with name <code>xxx</code></li>

+    <li><b><code>%{xxx}c</code></b> write value of cookie with name <code>xxx</code></li>

+    <li><b><code>%{xxx}r</code></b> write value of ServletRequest attribute with name <code>xxx</code></li>

+    <li><b><code>%{xxx}s</code></b> write value of HttpSession attribute with name <code>xxx</code></li>

+    <li><b><code>%{xxx}p</code></b> write local (server) port (<code>xxx==local</code>) or

+        remote (client) port (<code>xxx=remote</code>)</li>

+    <li><b><code>%{xxx}t</code></b> write timestamp at the end of the request formatted using the

+        enhanced SimpleDateFormat pattern <code>xxx</code></li>

     </ul>

 

+    <p>All formats supported by SimpleDateFormat are allowed in <code>%{xxx}t</code>.

+    In addition the following extensions have been added:</p>

+    <ul>

+    <li><b><code>sec</code></b> - number of seconds since the epoch</li>

+    <li><b><code>msec</code></b> - number of milliseconds since the epoch</li>

+    <li><b><code>msec_frac</code></b> - millisecond fraction</li>

+    </ul>

+    <p>These formats can not be mixed with SimpleDateFormat formats in the same format

+    token.</p>

 

-    <p>The shorthand pattern name <code>common</code> (which is also the

-    default) corresponds to <strong>'%h %l %u %t "%r" %s %b'</strong>.</p>

+    <p>Furthermore one can define whether to log the timestamp for the request start

+    time or the response finish time:</p>

+    <ul>

+    <li><b><code>begin</code></b> or prefix <b><code>begin:</code></b> chooses

+    the request start time</li>

+    <li><b><code>end</code></b> or prefix <b><code>end:</code></b> chooses

+    the response finish time</li>

+    </ul>

+    <p>By adding multiple <code>%{xxx}t</code> tokens to the pattern, one can

+    also log both timestamps.</p>

 

-    <p>The shorthand pattern name <code>combined</code> appends the

-    values of the <code>Referer</code> and <code>User-Agent</code> headers,

-    each in double quotes, to the <code>common</code> pattern

-    described in the previous paragraph.</p>

+    <p>The shorthand pattern <code>pattern="common"</code>

+    corresponds to the Common Log Format defined by

+    <strong>'%h %l %u %t "%r" %s %b'</strong>.</p>

+

+    <p>The shorthand pattern <code>pattern="combined"</code>

+    appends the values of the <code>Referer</code> and <code>User-Agent</code>

+    headers, each in double quotes, to the <code>common</code> pattern.</p>

+

+    <p>When Tomcat is operating behind a reverse proxy, the client information

+    logged by the Access Log Valve may represent the reverse proxy, the browser

+    or some combination of the two depending on the configuration of Tomcat and

+    the reverse proxy. For Tomcat configuration options see

+    <a href="#Proxies_Support">Proxies Support</a> and the

+    <a href="../proxy-howto.html">Proxy How-To</a>. For reverse proxies that

+    use mod_jk, see the <a href="http://tomcat.apache.org/connectors-doc/generic_howto/proxy.html">generic

+    proxy</a> documentation. For other reverse proxies, consult their

+    documentation.</p>

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table>

+

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Extended Access Log Valve"><!--()--></a><a name="Extended_Access_Log_Valve"><strong>Extended Access Log Valve</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Extended Access Log Valve/Introduction"><!--()--></a><a name="Extended_Access_Log_Valve/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Extended Access Log Valve</strong> extends the

+    <a href="#Access_Log_Valve">Access Log Valve</a> class, and so

+    uses the same self-contained logging logic.  This means it

+    implements many of the same file handling attributes.  The main

+    difference to the standard <code>AccessLogValve</code> is that

+    <code>ExtendedAccessLogValve</code> creates log files which

+    conform to the Working Draft for the

+    <a href="http://www.w3.org/TR/WD-logfile.html">Extended Log File Format</a>

+    defined by the W3C.</p>

 

   </blockquote></td></tr></table>

 

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote Address Filter"><!--()--></a><a name="Remote_Address_Filter"><strong>Remote Address Filter</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Extended Access Log Valve/Attributes"><!--()--></a><a name="Extended_Access_Log_Valve/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Extended Access Log Valve</strong> supports all

+    configuration attributes of the standard

+    <a href="#Access_Log_Valve">Access Log Valve.</a> Only the

+    values used for <code>className</code> and <code>pattern</code> differ.</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+        <p>Java class name of the implementation to use.  This MUST be set to

+        <strong>org.apache.catalina.valves.ExtendedAccessLogValve</strong> to

+        use the extended access log valve.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">pattern</code></td><td align="left" valign="center">

+        <p>A formatting layout identifying the various information fields

+        from the request and response to be logged.

+        See below for more information on configuring this attribute.</p>

+      </td></tr></table>

+

+    <p>Values for the <code>pattern</code> attribute are made up of

+    format tokens. Some of the tokens need an additional prefix. Possible

+    prefixes are <code>c</code> for "client", <code>s</code> for "server",

+    <code>cs</code> for "client to server", <code>sc</code> for

+    "server to client" or <code>x</code> for "application specific".

+    Furthermore some tokens are completed by an additional selector.

+    See the <a href="http://www.w3.org/TR/WD-logfile.html">W3C specification</a>

+    for more information about the format.</p>

+

+    <p>The following format tokens are supported:</p>

+    <ul>

+    <li><b>bytes</b> - Bytes sent, excluding HTTP headers, or '-' if zero</li>

+    <li><b>c-dns</b> - Remote host name (or IP address if

+        <code>enableLookups</code> for the connector is false)</li>

+    <li><b>c-ip</b> - Remote IP address</li>

+    <li><b>cs-method</b> - Request method (GET, POST, etc.)</li>

+    <li><b>cs-uri</b> - Request URI</li>

+    <li><b>cs-uri-query</b> - Query string (prepended with a '?' if it exists)</li>

+    <li><b>cs-uri-stem</b> - Requested URL path</li>

+    <li><b>date</b> - The date in yyyy-mm-dd format for GMT</li>

+    <li><b>s-dns</b> - Local host name</li>

+    <li><b>s-ip</b> - Local IP address</li>

+    <li><b>sc-status</b> - HTTP status code of the response</li>

+    <li><b>time</b> - Time the request was served in HH:mm:ss format for GMT</li>

+    <li><b>time-taken</b> - Time (in seconds as floating point) taken to serve the request</li>

+    <li><b>x-threadname</b> - Current request thread name (can compare later with stacktraces)</li>

+    </ul>

+

+    <p>For any of the <code>x-H(XXX)</code> the following method will be called from the

+    HttpServletRequest object:</p>

+    <ul>

+    <li><b><code>x-H(authType)</code></b>: getAuthType </li>

+    <li><b><code>x-H(characterEncoding)</code></b>: getCharacterEncoding </li>

+    <li><b><code>x-H(contentLength)</code></b>: getContentLength </li>

+    <li><b><code>x-H(locale)</code></b>:  getLocale</li>

+    <li><b><code>x-H(protocol)</code></b>: getProtocol </li>

+    <li><b><code>x-H(remoteUser)</code></b>:  getRemoteUser</li>

+    <li><b><code>x-H(requestedSessionId)</code></b>: getRequestedSessionId</li>

+    <li><b><code>x-H(requestedSessionIdFromCookie)</code></b>:

+                     isRequestedSessionIdFromCookie </li>

+    <li><b><code>x-H(requestedSessionIdValid)</code></b>:

+                     isRequestedSessionIdValid</li>

+    <li><b><code>x-H(scheme)</code></b>:  getScheme</li>

+    <li><b><code>x-H(secure)</code></b>:  isSecure</li>

+    </ul>

+

+    <p>

+    There is also support to write information about headers

+    cookies, context, request or session attributes and request

+    parameters.

+    </p>

+    <ul>

+    <li><b><code>cs(XXX)</code></b> for incoming request headers with name XXX</li>

+    <li><b><code>sc(XXX)</code></b> for outgoing response headers with name XXX</li>

+    <li><b><code>x-A(XXX)</code></b> for the servlet context attribute with name XXX</li>

+    <li><b><code>x-C(XXX)</code></b> for the first cookie with name XXX</li>

+    <li><b><code>x-O(XXX)</code></b> for a concatenation of all outgoing response headers with name XXX</li>

+    <li><b><code>x-P(XXX)</code></b> for the URL encoded (using UTF-8) request parameter with name XXX</li>

+    <li><b><code>x-R(XXX)</code></b> for the request attribute with name XXX</li>

+    <li><b><code>x-S(XXX)</code></b> for the session attribute with name XXX</li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Access Control"><!--()--></a><a name="Access_Control"><strong>Access Control</strong></a></font></td></tr><tr><td><blockquote>

+

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote Address Filter"><!--()--></a><a name="Remote_Address_Filter"><strong>Remote Address Filter</strong></a></font></td></tr><tr><td><blockquote>

 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote Address Filter/Introduction"><!--()--></a><a name="Remote_Address_Filter/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -193,9 +480,24 @@
     package. Please consult the Java documentation for details of the

     expressions supported.</p>

 

+    <p>Optionally one can append the server connector port separated with a

+    semicolon (";") to allow different expressions for each connector.</p>

+

+    <p>The behavior when a request is refused can be changed

+    to not deny but instead set an invalid <code>authentication</code>

+    header. This is useful in combination with the context attribute

+    <code>preemptiveAuthentication="true"</code>.</p>

+

+    <p><strong>Note:</strong> There is a caveat when using this valve with

+    IPv6 addresses. Format of the IP address that this valve is processing

+    depends on the API that was used to obtain it. If the address was obtained

+    from Java socket using Inet6Address class, its format will be

+    <code>x:x:x:x:x:x:x:x</code>. That is, the IP address for localhost

+    will be <code>0:0:0:0:0:0:0:1</code> instead of the more widely used

+    <code>::1</code>. Consult your access logs for the actual value.</p>

+

     <p>See also: <a href="#Remote_Host_Filter">Remote Host Filter</a>,

     <a href="#Remote_IP_Valve">Remote IP Valve</a>.</p>

-

   </blockquote></td></tr></table>

 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote Address Filter/Attributes"><!--()--></a><a name="Remote_Address_Filter/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

@@ -203,31 +505,79 @@
     <p>The <strong>Remote Address Filter</strong> supports the following

     configuration attributes:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>className</code></strong></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

         <p>Java class name of the implementation to use.  This MUST be set to

         <strong>org.apache.catalina.valves.RemoteAddrValve</strong>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>allow</code></td><td align="left" valign="center">

-        <p>A comma-separated list of <em>regular expression</em> patterns

-        that the remote client's IP address is compared to.  If this attribute

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">allow</code></td><td align="left" valign="center">

+        <p>A regular expression (using <code>java.util.regex</code>) that the

+        remote client's IP address is compared to.  If this attribute

         is specified, the remote address MUST match for this request to be

         accepted.  If this attribute is not specified, all requests will be

         accepted UNLESS the remote address matches a <code>deny</code>

         pattern.</p>

-      </td></tr><tr><td align="left" valign="center"><code>deny</code></td><td align="left" valign="center">

-        <p>A comma-separated list of <em>regular expression</em> patterns

-        that the remote client's IP address is compared to.  If this attribute

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">deny</code></td><td align="left" valign="center">

+        <p>A regular expression (using <code>java.util.regex</code>) that the

+        remote client's IP address is compared to.  If this attribute

         is specified, the remote address MUST NOT match for this request to be

         accepted.  If this attribute is not specified, request acceptance is

-        governed solely by the <code>accept</code> attribute.</p>

-      </td></tr><tr><td align="left" valign="center"><code>denyStatus</code></td><td align="left" valign="center">

+        governed solely by the <code>allow</code> attribute.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">denyStatus</code></td><td align="left" valign="center">

         <p>HTTP response status code that is used when rejecting denied

         request. The default value is <code>403</code>. For example,

         it can be set to the value <code>404</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">addConnectorPort</code></td><td align="left" valign="center">

+        <p>Append the server connector port to the client IP address separated

+        with a semicolon (";"). If this is set to <code>true</code>, the

+        expressions configured with <code>allow</code> and

+        <code>deny</code> is compared against <code>ADDRESS;PORT</code>

+        where <code>ADDRESS</code> is the client IP address and

+        <code>PORT</code> is the Tomcat connector port which received the

+        request. The default value is <code>false</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">invalidAuthenticationWhenDeny</code></td><td align="left" valign="center">

+        <p>When a request should be denied, do not deny but instead

+        set an invalid <code>authentication</code> header. This only works

+        if the context has the attribute <code>preemptiveAuthentication="true"</code>

+        set. An already existing <code>authentication</code> header will not be

+        overwritten. In effect this will trigger authentication instead of deny

+        even if the application does not have a security constraint configured.</p>

+        <p>This can be combined with <code>addConnectorPort</code> to trigger authentication

+        depending on the client and the connector that is used to access an application.</p>

       </td></tr></table>

 

   </blockquote></td></tr></table>

 

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote Host Filter"><!--()--></a><a name="Remote_Host_Filter"><strong>Remote Host Filter</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote_Address_Valve/Example_localhost"><strong>Example 1</strong></a></font></td></tr><tr><td><blockquote>

+    <p>To allow access only for the clients connecting from localhost:</p>

+    <div class="codeBox"><pre><code>&lt;Valve className="org.apache.catalina.valves.RemoteAddrValve"

+   allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1"/&gt;</code></pre></div>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote_Address_Valve/Example_localhost_port"><strong>Example 2</strong></a></font></td></tr><tr><td><blockquote>

+    <p>To allow unrestricted access for the clients connecting from localhost

+    but for all other clients only to port 8443:</p>

+    <div class="codeBox"><pre><code>&lt;Valve className="org.apache.catalina.valves.RemoteAddrValve"

+   addConnectorPort="true"

+   allow="127\.\d+\.\d+\.\d+;\d*|::1;\d*|0:0:0:0:0:0:0:1;\d*|.*;8443"/&gt;</code></pre></div>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote_Address_Valve/Example_port_auth"><strong>Example 3</strong></a></font></td></tr><tr><td><blockquote>

+    <p>To allow unrestricted access to port 8009, but trigger basic

+    authentication if the application is accessed on another port:</p>

+<div class="codeBox"><pre><code>&lt;Context&gt;

+  ...

+  &lt;Valve className="org.apache.catalina.valves.RemoteAddrValve"

+         addConnectorPort="true"

+         invalidAuthenticationWhenDeny="true"

+         allow=".*;8009"/&gt;

+  &lt;Valve className="org.apache.catalina.authenticator.BasicAuthenticator" /&gt;

+  ...

+&lt;/Context&gt;</code></pre></div>

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table>

+

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote Host Filter"><!--()--></a><a name="Remote_Host_Filter"><strong>Remote Host Filter</strong></a></font></td></tr><tr><td><blockquote>

 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote Host Filter/Introduction"><!--()--></a><a name="Remote_Host_Filter/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -245,6 +595,14 @@
     package. Please consult the Java documentation for details of the

     expressions supported.</p>

 

+    <p>Optionally one can append the server connector port separated with a

+    semicolon (";") to allow different expressions for each connector.</p>

+

+    <p>The behavior when a request is refused can be changed

+    to not deny but instead set an invalid <code>authentication</code>

+    header. This is useful in combination with the context attribute

+    <code>preemptiveAuthentication="true"</code>.</p>

+

     <p><strong>Note:</strong> This filter processes the value returned by

     method <code>ServletRequest.getRemoteHost()</code>. To allow the method

     to return proper host names, you have to enable "DNS lookups" feature on

@@ -252,7 +610,6 @@
 

     <p>See also: <a href="#Remote_Address_Filter">Remote Address Filter</a>,

     <a href="http.html">HTTP Connector</a> configuration.</p>

-

   </blockquote></td></tr></table>

 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote Host Filter/Attributes"><!--()--></a><a name="Remote_Host_Filter/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

@@ -260,65 +617,226 @@
     <p>The <strong>Remote Host Filter</strong> supports the following

     configuration attributes:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>className</code></strong></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

         <p>Java class name of the implementation to use.  This MUST be set to

         <strong>org.apache.catalina.valves.RemoteHostValve</strong>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>allow</code></td><td align="left" valign="center">

-        <p>A comma-separated list of <em>regular expression</em> patterns

-        that the remote client's hostname is compared to.  If this attribute

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">allow</code></td><td align="left" valign="center">

+        <p>A regular expression (using <code>java.util.regex</code>) that the

+        remote client's hostname is compared to.  If this attribute

         is specified, the remote hostname MUST match for this request to be

         accepted.  If this attribute is not specified, all requests will be

         accepted UNLESS the remote hostname matches a <code>deny</code>

         pattern.</p>

-      </td></tr><tr><td align="left" valign="center"><code>deny</code></td><td align="left" valign="center">

-        <p>A comma-separated list of <em>regular expression</em> patterns

-        that the remote client's hostname is compared to.  If this attribute

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">deny</code></td><td align="left" valign="center">

+        <p>A regular expression (using <code>java.util.regex</code>) that the

+        remote client's hostname is compared to.  If this attribute

         is specified, the remote hostname MUST NOT match for this request to be

         accepted.  If this attribute is not specified, request acceptance is

-        governed solely by the <code>accept</code> attribute.</p>

-      </td></tr><tr><td align="left" valign="center"><code>denyStatus</code></td><td align="left" valign="center">

+        governed solely by the <code>allow</code> attribute.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">denyStatus</code></td><td align="left" valign="center">

         <p>HTTP response status code that is used when rejecting denied

         request. The default value is <code>403</code>. For example,

         it can be set to the value <code>404</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">addConnectorPort</code></td><td align="left" valign="center">

+        <p>Append the server connector port to the client hostname separated

+        with a semicolon (";"). If this is set to <code>true</code>, the

+        expressions configured with <code>allow</code> and

+        <code>deny</code> is compared against <code>HOSTNAME;PORT</code>

+        where <code>HOSTNAME</code> is the client hostname and

+        <code>PORT</code> is the Tomcat connector port which received the

+        request. The default value is <code>false</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">invalidAuthenticationWhenDeny</code></td><td align="left" valign="center">

+        <p>When a request should be denied, do not deny but instead

+        set an invalid <code>authentication</code> header. This only works

+        if the context has the attribute <code>preemptiveAuthentication="true"</code>

+        set. An already existing <code>authentication</code> header will not be

+        overwritten. In effect this will trigger authentication instead of deny

+        even if the application does not have a security constraint configured.</p>

+        <p>This can be combined with <code>addConnectorPort</code> to trigger authentication

+        depending on the client and the connector that is used to access an application.</p>

       </td></tr></table>

 

   </blockquote></td></tr></table>

 

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Request Dumper Valve"><!--()--></a><a name="Request_Dumper_Valve"><strong>Request Dumper Valve</strong></a></font></td></tr><tr><td><blockquote>

+</blockquote></td></tr></table>

 

 

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Request Dumper Valve/Introduction"><!--()--></a><a name="Request_Dumper_Valve/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Proxies Support"><!--()--></a><a name="Proxies_Support"><strong>Proxies Support</strong></a></font></td></tr><tr><td><blockquote>

 

-    <p>The <em>Request Dumper Valve</em> is a useful tool in debugging

-    interactions with a client application (or browser) that is sending

-    HTTP requests to your Tomcat-based server.  When configured, it causes

-    details about each request processed by its associated <code>Engine</code>, 

-    <code>Host</code>, or <code>Context</code> to be logged according to 

-    the logging configuration for that container.</p>

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote IP Valve"><!--()--></a><a name="Remote_IP_Valve"><strong>Remote IP Valve</strong></a></font></td></tr><tr><td><blockquote>

 

-    <p><strong>WARNING: Using this valve has side-effects.</strong>  The

-    output from this valve includes any parameters included with the request.

-    The parameters will be decoded using the default platform encoding. Any

-    subsequent calls to <code>request.setCharacterEncoding()</code> within

-    the web application will have no effect. NOTE: Since all parameters are

-    included in the output, the InputStream is consumed for requests made with

-    the method POST and content-type application/x-www-form-urlencoded.</p>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote IP Valve/Introduction"><!--()--></a><a name="Remote_IP_Valve/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>Tomcat port of

+    <a href="http://httpd.apache.org/docs/trunk/mod/mod_remoteip.html">mod_remoteip</a>,

+    this valve replaces the apparent client remote IP address and hostname for

+    the request with the IP address list presented by a proxy or a load balancer

+    via a request headers (e.g. "X-Forwarded-For").</p>

+

+    <p>Another feature of this valve is to replace the apparent scheme

+    (http/https), server port and <code>request.secure</code> with the scheme presented

+    by a proxy or a load balancer via a request header

+    (e.g. "X-Forwarded-Proto").</p>

+

+    <p>This Valve may be used at the <code>Engine</code>, <code>Host</code> or

+    <code>Context</code> level as required. Normally, this Valve would be used

+    at the <code>Engine</code> level.</p>

+

+    <p>If used in conjunction with Remote Address/Host valves then this valve

+    should be defined first to ensure that the correct client IP address is

+    presented to the Remote Address/Host valves.</p>

+

+    <p><strong>Note:</strong> By default this valve has no effect on the

+    values that are written into access log. The original values are restored

+    when request processing leaves the valve and that always happens earlier

+    than access logging. To pass the remote address, remote host, server port

+    and protocol values set by this valve to the access log,

+    they are put into request attributes. Publishing these values here

+    is enabled by default, but <code>AccessLogValve</code> should be explicitly

+    configured to use them. See documentation for

+    <code>requestAttributesEnabled</code> attribute of

+    <code>AccessLogValve</code>.</p>

+

+    <p>The names of request attributes that are set by this valve

+    and can be used by access logging are the following:</p>

+

+    <ul>

+      <li><code>org.apache.catalina.AccessLog.RemoteAddr</code></li>

+      <li><code>org.apache.catalina.AccessLog.RemoteHost</code></li>

+      <li><code>org.apache.catalina.AccessLog.Protocol</code></li>

+      <li><code>org.apache.catalina.AccessLog.ServerPort</code></li>

+      <li><code>org.apache.tomcat.remoteAddr</code></li>

+    </ul>

 

   </blockquote></td></tr></table>

 

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote IP Valve/Attributes"><!--()--></a><a name="Remote_IP_Valve/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

 

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Request Dumper Valve/Attributes"><!--()--></a><a name="Request_Dumper_Valve/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+    <p>The <strong>Remote IP Valve</strong> supports the

+    following configuration attributes:</p>

 

-    <p>The <strong>Request Dumper Valve</strong> supports the following

-    configuration attributes:</p>

-

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>className</code></strong></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

         <p>Java class name of the implementation to use.  This MUST be set to

-        <strong>org.apache.catalina.valves.RequestDumperValve</strong>.</p>

+        <strong>org.apache.catalina.valves.RemoteIpValve</strong>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">remoteIpHeader</code></td><td align="left" valign="center">

+        <p>Name of the HTTP Header read by this valve that holds the list of

+        traversed IP addresses starting from the requesting client. If not

+        specified, the default of <code>x-forwarded-for</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">internalProxies</code></td><td align="left" valign="center">

+        <p>Regular expression (using <code>java.util.regex</code>) that a

+        proxy's IP address must match to be considered an internal proxy.

+        Internal proxies that appear in the <strong>remoteIpHeader</strong> will

+        be trusted and will not appear in the <strong>proxiesHeader</strong>

+        value. If not specified the default value of <code>

+        10\.\d{1,3}\.\d{1,3}\.\d{1,3}|192\.168\.\d{1,3}\.\d{1,3}|169\.254\.\d{1,3}\.\d{1,3}|127\.\d{1,3}\.\d{1,3}\.\d{1,3}

+        </code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">proxiesHeader</code></td><td align="left" valign="center">

+        <p>Name of the HTTP header created by this valve to hold the list of

+        proxies that have been processed in the incoming

+        <strong>remoteIpHeader</strong>. If not specified, the default of

+        <code>x-forwarded-by</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">requestAttributesEnabled</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> to set the request attributes used by

+        AccessLog implementations to override the values returned by the

+        request for remote address, remote host, server port and protocol.

+        Request attributes are also used to enable the forwarded remote address

+        to be displayed on the status page of the Manager web application.

+        If not set, the default value of <code>true</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">trustedProxies</code></td><td align="left" valign="center">

+        <p>Regular expression (using <code>java.util.regex</code>) that a

+        proxy's IP address must match to be considered an trusted proxy.

+        Trusted proxies that appear in the <strong>remoteIpHeader</strong> will

+        be trusted and will appear in the <strong>proxiesHeader</strong> value.

+        If not specified, no proxies will be trusted.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">protocolHeader</code></td><td align="left" valign="center">

+        <p>Name of the HTTP Header read by this valve that holds the protocol

+        used by the client to connect to the proxy. If not specified, the

+        default of <code>null</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">portHeader</code></td><td align="left" valign="center">

+        <p>Name of the HTTP Header read by this valve that holds the port

+        used by the client to connect to the proxy. If not specified, the

+        default of <code>null</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">protocolHeaderHttpsValue</code></td><td align="left" valign="center">

+        <p>Value of the <strong>protocolHeader</strong> to indicate that it is

+        an HTTPS request. If not specified, the default of <code>https</code> is

+        used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">httpServerPort</code></td><td align="left" valign="center">

+         <p>Value returned by <code>ServletRequest.getServerPort()</code>

+         when the <strong>protocolHeader</strong> indicates <code>http</code>

+         protocol and no <strong>portHeader</strong> is present. If not

+         specified, the default of <code>80</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">httpsServerPort</code></td><td align="left" valign="center">

+         <p>Value returned by <code>ServletRequest.getServerPort()</code>

+         when the <strong>protocolHeader</strong> indicates <code>https</code>

+         protocol and no <strong>portHeader</strong> is present. If not

+         specified, the default of <code>443</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">changeLocalPort</code></td><td align="left" valign="center">

+        <p>If <code>true</code>, the value returned by

+        <code>ServletRequest.getLocalPort()</code> and

+        <code>ServletRequest.getServerPort()</code> is modified by the this

+        valve. If not specified, the default of <code>false</code> is used.</p>

       </td></tr></table>

 

   </blockquote></td></tr></table>

 

+</blockquote></td></tr></table>

+

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="SSL Valve"><!--()--></a><a name="SSL_Valve"><strong>SSL Valve</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="SSL Valve/Introduction"><!--()--></a><a name="SSL_Valve/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>When using mod_proxy_http, the client SSL information is not included in

+    the protocol (unlike mod_jk and mod_proxy_ajp). To make the client SSL

+    information available to Tomcat, some additional configuration is required.

+    In httpd, mod_headers is used to add the SSL information as HTTP headers. In

+    Tomcat, this valve is used to read the information from the HTTP headers and

+    insert it into the request.</p>

+

+    <p>Note: Ensure that the headers are always set by httpd for all requests to

+    prevent a client spoofing SSL information by sending fake headers.</p>

+

+    <p>To configure httpd to set the necessary headers, add the following:</p>

+<div class="codeBox"><pre><code>&lt;IfModule ssl_module&gt;

+  RequestHeader set SSL_CLIENT_CERT "%{SSL_CLIENT_CERT}s"

+  RequestHeader set SSL_CIPHER "%{SSL_CIPHER}s"

+  RequestHeader set SSL_SESSION_ID "%{SSL_SESSION_ID}s"

+  RequestHeader set SSL_CIPHER_USEKEYSIZE "%{SSL_CIPHER_USEKEYSIZE}s"

+&lt;/IfModule&gt;</code></pre></div>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="SSL Valve/Attributes"><!--()--></a><a name="SSL_Valve/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>SSL Valve</strong> supports the following configuration

+    attribute:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+        <p>Java class name of the implementation to use.  This MUST be set to

+        <strong>org.apache.catalina.valves.SSLValve</strong>.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sslClientCertHeader</code></td><td align="left" valign="center">

+        <p>Allows setting a custom name for the ssl_client_cert header.

+        If not specified, the default of <code>ssl_client_cert</code> is

+        used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sslCipherHeader</code></td><td align="left" valign="center">

+        <p>Allows setting a custom name for the ssl_cipher header.

+        If not specified, the default of <code>ssl_cipher</code> is

+        used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sslSessionIdHeader</code></td><td align="left" valign="center">

+        <p>Allows setting a custom name for the ssl_session_id header.

+        If not specified, the default of <code>ssl_session_id</code> is

+        used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sslCipherUserKeySizeHeader</code></td><td align="left" valign="center">

+        <p>Allows setting a custom name for the ssl_cipher_usekeysize header.

+        If not specified, the default of <code>ssl_cipher_usekeysize</code> is

+        used.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table>

+

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Single Sign On Valve"><!--()--></a><a name="Single_Sign_On_Valve"><strong>Single Sign On Valve</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -329,7 +847,7 @@
     your virtual host, and then have their identity recognized by all other

     web applications on the same virtual host.</p>

 

-    <p>See the <a href="host.html#Single Sign On">Single Sign On</a> special

+    <p>See the <a href="host.html#Single_Sign_On">Single Sign On</a> special

     feature on the <strong>Host</strong> element for more information.</p>

 

   </blockquote></td></tr></table>

@@ -340,25 +858,30 @@
     <p>The <strong>Single Sign On</strong> Valve supports the following

     configuration attributes:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>className</code></strong></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

         <p>Java class name of the implementation to use.  This MUST be set to

         <strong>org.apache.catalina.authenticator.SingleSignOn</strong>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>requireReauthentication</code></td><td align="left" valign="center">

-        <p>Default false. Flag to determine whether each request needs to be 

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">requireReauthentication</code></td><td align="left" valign="center">

+        <p>Default false. Flag to determine whether each request needs to be

         reauthenticated to the security <strong>Realm</strong>. If "true", this

         Valve uses cached security credentials (username and password) to

-        reauthenticate to the <strong>Realm</strong> each request associated 

-        with an SSO session.  If "false", the Valve can itself authenticate 

-        requests based on the presence of a valid SSO cookie, without 

+        reauthenticate to the <strong>Realm</strong> each request associated

+        with an SSO session.  If "false", the Valve can itself authenticate

+        requests based on the presence of a valid SSO cookie, without

         rechecking with the <strong>Realm</strong>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>cookieDomain</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cookieDomain</code></td><td align="left" valign="center">

         <p>Sets the host domain to be used for sso cookies.</p>

       </td></tr></table>

 

   </blockquote></td></tr></table>

 

 

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Basic Authenticator Valve"><!--()--></a><a name="Basic_Authenticator_Valve"><strong>Basic Authenticator Valve</strong></a></font></td></tr><tr><td><blockquote>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Authentication"><strong>Authentication</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>The valves in this section implement

+<strong>org.apache.catalina.Authenticator</strong> interface.</p>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Basic Authenticator Valve"><!--()--></a><a name="Basic_Authenticator_Valve"><strong>Basic Authenticator Valve</strong></a></font></td></tr><tr><td><blockquote>

 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Basic Authenticator Valve/Introduction"><!--()--></a><a name="Basic_Authenticator_Valve/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -377,19 +900,28 @@
     <p>The <strong>Basic Authenticator Valve</strong> supports the following

     configuration attributes:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>className</code></strong></td><td align="left" valign="center">

-        <p>Java class name of the implementation to use.  This MUST be set to

-        <strong>org.apache.catalina.authenticator.BasicAuthenticator</strong>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>changeSessionIdOnAuthentication</code></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">alwaysUseSession</code></td><td align="left" valign="center">

+        <p>Should a session always be used once a user is authenticated? This

+        may offer some performance benefits since the session can then be used

+        to cache the authenticated Principal, hence removing the need to

+        authenticate the user via the Realm on every request. This may be of

+        help for combinations such as BASIC authentication used with the

+        JNDIRealm or DataSourceRealms. However there will also be the

+        performance cost of creating and GC'ing the session. If not set, the

+        default value of <code>false</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cache</code></td><td align="left" valign="center">

+        <p>Should we cache authenticated Principals if the request is part of an

+        HTTP session? If not specified, the default value of <code>true</code>

+        will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">changeSessionIdOnAuthentication</code></td><td align="left" valign="center">

         <p>Controls if the session ID is changed if a session exists at the

         point where users are authenticated. This is to prevent session fixation

         attacks. If not set, the default value of <code>true</code> will be

         used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>cnonceCacheSize</code></td><td align="left" valign="center">

-        <p>To protect against replay attacks, the DIGEST authenticator tracks

-        client nonce and nonce count values. This attribute controls the size

-        of that cache. If not specified, the default value of 1000 is used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>disableProxyCaching</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+        <p>Java class name of the implementation to use.  This MUST be set to

+        <strong>org.apache.catalina.authenticator.BasicAuthenticator</strong>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">disableProxyCaching</code></td><td align="left" valign="center">

         <p>Controls the caching of pages that are protected by security

         constraints. Setting this to <code>false</code> may help work around

         caching issues in some browsers but will also cause secured pages to be

@@ -397,38 +929,42 @@
         <code>securePagesWithPragma</code> offers an alternative, secure,

         workaround for browser caching issues. If not set, the default value of

         <code>true</code> will be used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>key</code></td><td align="left" valign="center">

-        <p>The secret key used by digest authentication. If not set, a secure

-        random value is generated. This should normally only be set when it is

-        necessary to keep key values constant either across server restarts

-        and/or across a cluster.</p>

-      </td></tr><tr><td align="left" valign="center"><code>nonceValidity</code></td><td align="left" valign="center">

-        <p>The time, in milliseconds, that a server generated nonce will be

-        considered valid for use in authentication. If not specified, the

-        default value of 300000 (5 minutes) will be used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>opaque</code></td><td align="left" valign="center">

-        <p>The opaque server string used by digest authentication. If not set, a

-        random value is generated. This should normally only be set when it is

-        necessary to keep opaque values constant either across server restarts

-        and/or across a cluster.</p>

-      </td></tr><tr><td align="left" valign="center"><code>securePagesWithPragma</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">securePagesWithPragma</code></td><td align="left" valign="center">

         <p>Controls the caching of pages that are protected by security

         constraints. Setting this to <code>false</code> may help work around

         caching issues in some browsers by using

         <code>Cache-Control: private</code> rather than the default of

         <code>Pragma: No-cache</code> and <code>Cache-control: No-cache</code>.

-        If not set, the default value of <code>true</code> will be used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>validateUri</code></td><td align="left" valign="center">

-        <p>Should the URI be validated as required by RFC2617? If not specified,

-        the default value of <code>true</code> will be used. This should

-        normally only be set when Tomcat is located behind a reverse proxy and

-        the proxy is modifying the URI passed to Tomcat such that DIGEST

-        authentication always fails.</p>

+        If not set, the default value of <code>false</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomAlgorithm</code></td><td align="left" valign="center">

+        <p>Name of the algorithm to use to create the

+        <code>java.security.SecureRandom</code> instances that generate session

+        IDs. If an invalid algorithm and/or provider is specified, the platform

+        default provider and the default algorithm will be used. If not

+        specified, the default algorithm of SHA1PRNG will be used. If the

+        default algorithm is not supported, the platform default will be used.

+        To specify that the platform default should be used, do not set the

+        secureRandomProvider attribute and set this attribute to the empty

+        string.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomClass</code></td><td align="left" valign="center">

+        <p>Name of the Java class that extends

+        <code>java.security.SecureRandom</code> to use to generate SSO session

+        IDs. If not specified, the default value is

+        <code>java.security.SecureRandom</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomProvider</code></td><td align="left" valign="center">

+        <p>Name of the provider to use to create the

+        <code>java.security.SecureRandom</code> instances that generate SSO

+        session IDs. If an invalid algorithm and/or provider is specified, the

+        platform default provider and the default algorithm will be used. If not

+        specified, the platform default provider will be used.</p>

       </td></tr></table>

 

   </blockquote></td></tr></table>

 

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Digest Authenticator Valve"><!--()--></a><a name="Digest_Authenticator_Valve"><strong>Digest Authenticator Valve</strong></a></font></td></tr><tr><td><blockquote>

+</blockquote></td></tr></table>

+

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Digest Authenticator Valve"><!--()--></a><a name="Digest_Authenticator_Valve"><strong>Digest Authenticator Valve</strong></a></font></td></tr><tr><td><blockquote>

 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Digest Authenticator Valve/Introduction"><!--()--></a><a name="Digest_Authenticator_Valve/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -447,19 +983,28 @@
     <p>The <strong>Digest Authenticator Valve</strong> supports the following

     configuration attributes:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code>cache</code></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">alwaysUseSession</code></td><td align="left" valign="center">

+        <p>Should a session always be used once a user is authenticated? This

+        may offer some performance benefits since the session can then be used

+        to cache the authenticated Principal, hence removing the need to

+        authenticate the user via the Realm on every request. This may be of

+        help for combinations such as BASIC authentication used with the

+        JNDIRealm or DataSourceRealms. However there will also be the

+        performance cost of creating and GC'ing the session. If not set, the

+        default value of <code>false</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cache</code></td><td align="left" valign="center">

         <p>Should we cache authenticated Principals if the request is part of an

         HTTP session? If not specified, the default value of <code>false</code>

         will be used.</p>

-      </td></tr><tr><td align="left" valign="center"><strong><code>className</code></strong></td><td align="left" valign="center">

-        <p>Java class name of the implementation to use.  This MUST be set to

-        <strong>org.apache.catalina.authenticator.DigestAuthenticator</strong>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>changeSessionIdOnAuthentication</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">changeSessionIdOnAuthentication</code></td><td align="left" valign="center">

         <p>Controls if the session ID is changed if a session exists at the

         point where users are authenticated. This is to prevent session fixation

         attacks. If not set, the default value of <code>true</code> will be

         used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>disableProxyCaching</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+        <p>Java class name of the implementation to use.  This MUST be set to

+        <strong>org.apache.catalina.authenticator.DigestAuthenticator</strong>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">disableProxyCaching</code></td><td align="left" valign="center">

         <p>Controls the caching of pages that are protected by security

         constraints. Setting this to <code>false</code> may help work around

         caching issues in some browsers but will also cause secured pages to be

@@ -467,32 +1012,60 @@
         <code>securePagesWithPragma</code> offers an alternative, secure,

         workaround for browser caching issues. If not set, the default value of

         <code>true</code> will be used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>key</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">key</code></td><td align="left" valign="center">

         <p>The secret key used by digest authentication. If not set, a secure

         random value is generated. This should normally only be set when it is

         necessary to keep key values constant either across server restarts

         and/or across a cluster.</p>

-      </td></tr><tr><td align="left" valign="center"><code>nonceCacheSize</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">nonceCacheSize</code></td><td align="left" valign="center">

         <p>To protect against replay attacks, the DIGEST authenticator tracks

         server nonce and nonce count values. This attribute controls the size

         of that cache. If not specified, the default value of 1000 is used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>nonceValidity</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">nonceCountWindowSize</code></td><td align="left" valign="center">

+        <p>Client requests may be processed out of order which in turn means

+        that the nonce count values may be processed out of order. To prevent

+        authentication failures when nonce counts are presented out of order

+        the authenticator tracks a window of nonce count values. This attribute

+        controls how big that window is. If not specified, the default value of

+        100 is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">nonceValidity</code></td><td align="left" valign="center">

         <p>The time, in milliseconds, that a server generated nonce will be

         considered valid for use in authentication. If not specified, the

         default value of 300000 (5 minutes) will be used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>opaque</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">opaque</code></td><td align="left" valign="center">

         <p>The opaque server string used by digest authentication. If not set, a

         random value is generated. This should normally only be set when it is

         necessary to keep opaque values constant either across server restarts

         and/or across a cluster.</p>

-      </td></tr><tr><td align="left" valign="center"><code>securePagesWithPragma</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">securePagesWithPragma</code></td><td align="left" valign="center">

         <p>Controls the caching of pages that are protected by security

         constraints. Setting this to <code>false</code> may help work around

         caching issues in some browsers by using

         <code>Cache-Control: private</code> rather than the default of

         <code>Pragma: No-cache</code> and <code>Cache-control: No-cache</code>.

-        If not set, the default value of <code>true</code> will be used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>validateUri</code></td><td align="left" valign="center">

+        If not set, the default value of <code>false</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomAlgorithm</code></td><td align="left" valign="center">

+        <p>Name of the algorithm to use to create the

+        <code>java.security.SecureRandom</code> instances that generate session

+        IDs. If an invalid algorithm and/or provider is specified, the platform

+        default provider and the default algorithm will be used. If not

+        specified, the default algorithm of SHA1PRNG will be used. If the

+        default algorithm is not supported, the platform default will be used.

+        To specify that the platform default should be used, do not set the

+        secureRandomProvider attribute and set this attribute to the empty

+        string.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomClass</code></td><td align="left" valign="center">

+        <p>Name of the Java class that extends

+        <code>java.security.SecureRandom</code> to use to generate SSO session

+        IDs. If not specified, the default value is

+        <code>java.security.SecureRandom</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomProvider</code></td><td align="left" valign="center">

+        <p>Name of the provider to use to create the

+        <code>java.security.SecureRandom</code> instances that generate SSO

+        session IDs. If an invalid algorithm and/or provider is specified, the

+        platform default provider and the default algorithm will be used. If not

+        specified, the platform default provider will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">validateUri</code></td><td align="left" valign="center">

         <p>Should the URI be validated as required by RFC2617? If not specified,

         the default value of <code>true</code> will be used. This should

         normally only be set when Tomcat is located behind a reverse proxy and

@@ -502,7 +1075,10 @@
 

   </blockquote></td></tr></table>

 

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Form Authenticator Valve"><!--()--></a><a name="Form_Authenticator_Valve"><strong>Form Authenticator Valve</strong></a></font></td></tr><tr><td><blockquote>

+</blockquote></td></tr></table>

+

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Form Authenticator Valve"><!--()--></a><a name="Form_Authenticator_Valve"><strong>Form Authenticator Valve</strong></a></font></td></tr><tr><td><blockquote>

 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Form Authenticator Valve/Introduction"><!--()--></a><a name="Form_Authenticator_Valve/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -521,19 +1097,19 @@
     <p>The <strong>Form Authenticator Valve</strong> supports the following

     configuration attributes:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>className</code></strong></td><td align="left" valign="center">

-        <p>Java class name of the implementation to use.  This MUST be set to

-        <strong>org.apache.catalina.authenticator.FormAuthenticator</strong>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>changeSessionIdOnAuthentication</code></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">changeSessionIdOnAuthentication</code></td><td align="left" valign="center">

         <p>Controls if the session ID is changed if a session exists at the

         point where users are authenticated. This is to prevent session fixation

         attacks. If not set, the default value of <code>true</code> will be

         used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>characterEncoding</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">characterEncoding</code></td><td align="left" valign="center">

         <p>Character encoding to use to read the username and password parameters

         from the request. If not set, the encoding of the request body will be

         used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>disableProxyCaching</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+        <p>Java class name of the implementation to use.  This MUST be set to

+        <strong>org.apache.catalina.authenticator.FormAuthenticator</strong>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">disableProxyCaching</code></td><td align="left" valign="center">

         <p>Controls the caching of pages that are protected by security

         constraints. Setting this to <code>false</code> may help work around

         caching issues in some browsers but will also cause secured pages to be

@@ -541,18 +1117,53 @@
         <code>securePagesWithPragma</code> offers an alternative, secure,

         workaround for browser caching issues. If not set, the default value of

         <code>true</code> will be used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>securePagesWithPragma</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">landingPage</code></td><td align="left" valign="center">

+        <p>Controls the behavior of the FORM authentication process if the

+        process is misused, for example by directly requesting the login page

+        or delaying logging in for so long that the session expires. If this

+        attribute is set, rather than returning an error response code, Tomcat

+        will redirect the user to the specified landing page if the login form

+        is submitted with valid credentials. For the login to be processed, the

+        landing page must be a protected resource (i.e. one that requires

+        authentication). If the landing page does not require authentication

+        then the user will not be logged in and will be prompted for their

+        credentials again when they access a protected page.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">securePagesWithPragma</code></td><td align="left" valign="center">

         <p>Controls the caching of pages that are protected by security

         constraints. Setting this to <code>false</code> may help work around

         caching issues in some browsers by using

         <code>Cache-Control: private</code> rather than the default of

         <code>Pragma: No-cache</code> and <code>Cache-control: No-cache</code>.

-        If not set, the default value of <code>true</code> will be used.</p>

+        If not set, the default value of <code>false</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomAlgorithm</code></td><td align="left" valign="center">

+        <p>Name of the algorithm to use to create the

+        <code>java.security.SecureRandom</code> instances that generate session

+        IDs. If an invalid algorithm and/or provider is specified, the platform

+        default provider and the default algorithm will be used. If not

+        specified, the default algorithm of SHA1PRNG will be used. If the

+        default algorithm is not supported, the platform default will be used.

+        To specify that the platform default should be used, do not set the

+        secureRandomProvider attribute and set this attribute to the empty

+        string.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomClass</code></td><td align="left" valign="center">

+        <p>Name of the Java class that extends

+        <code>java.security.SecureRandom</code> to use to generate SSO session

+        IDs. If not specified, the default value is

+        <code>java.security.SecureRandom</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomProvider</code></td><td align="left" valign="center">

+        <p>Name of the provider to use to create the

+        <code>java.security.SecureRandom</code> instances that generate SSO

+        session IDs. If an invalid algorithm and/or provider is specified, the

+        platform default provider and the default algorithm will be used. If not

+        specified, the platform default provider will be used.</p>

       </td></tr></table>

 

   </blockquote></td></tr></table>

 

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="SSL Authenticator Valve"><!--()--></a><a name="SSL_Authenticator_Valve"><strong>SSL Authenticator Valve</strong></a></font></td></tr><tr><td><blockquote>

+</blockquote></td></tr></table>

+

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="SSL Authenticator Valve"><!--()--></a><a name="SSL_Authenticator_Valve"><strong>SSL Authenticator Valve</strong></a></font></td></tr><tr><td><blockquote>

 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="SSL Authenticator Valve/Introduction"><!--()--></a><a name="SSL_Authenticator_Valve/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -571,15 +1182,19 @@
     <p>The <strong>SSL Authenticator Valve</strong> supports the following

     configuration attributes:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>className</code></strong></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">cache</code></td><td align="left" valign="center">

+        <p>Should we cache authenticated Principals if the request is part of an

+        HTTP session? If not specified, the default value of <code>true</code>

+        will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

         <p>Java class name of the implementation to use.  This MUST be set to

         <strong>org.apache.catalina.authenticator.SSLAuthenticator</strong>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>changeSessionIdOnAuthentication</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">changeSessionIdOnAuthentication</code></td><td align="left" valign="center">

         <p>Controls if the session ID is changed if a session exists at the

         point where users are authenticated. This is to prevent session fixation

         attacks. If not set, the default value of <code>true</code> will be

         used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>disableProxyCaching</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">disableProxyCaching</code></td><td align="left" valign="center">

         <p>Controls the caching of pages that are protected by security

         constraints. Setting this to <code>false</code> may help work around

         caching issues in some browsers but will also cause secured pages to be

@@ -587,128 +1202,241 @@
         <code>securePagesWithPragma</code> offers an alternative, secure,

         workaround for browser caching issues. If not set, the default value of

         <code>true</code> will be used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>securePagesWithPragma</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">securePagesWithPragma</code></td><td align="left" valign="center">

         <p>Controls the caching of pages that are protected by security

         constraints. Setting this to <code>false</code> may help work around

         caching issues in some browsers by using

         <code>Cache-Control: private</code> rather than the default of

         <code>Pragma: No-cache</code> and <code>Cache-control: No-cache</code>.

-        If not set, the default value of <code>true</code> will be used.</p>

+        If not set, the default value of <code>false</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomAlgorithm</code></td><td align="left" valign="center">

+        <p>Name of the algorithm to use to create the

+        <code>java.security.SecureRandom</code> instances that generate session

+        IDs. If an invalid algorithm and/or provider is specified, the platform

+        default provider and the default algorithm will be used. If not

+        specified, the default algorithm of SHA1PRNG will be used. If the

+        default algorithm is not supported, the platform default will be used.

+        To specify that the platform default should be used, do not set the

+        secureRandomProvider attribute and set this attribute to the empty

+        string.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomClass</code></td><td align="left" valign="center">

+        <p>Name of the Java class that extends

+        <code>java.security.SecureRandom</code> to use to generate SSO session

+        IDs. If not specified, the default value is

+        <code>java.security.SecureRandom</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomProvider</code></td><td align="left" valign="center">

+        <p>Name of the provider to use to create the

+        <code>java.security.SecureRandom</code> instances that generate SSO

+        session IDs. If an invalid algorithm and/or provider is specified, the

+        platform default provider and the default algorithm will be used. If not

+        specified, the platform default provider will be used.</p>

       </td></tr></table>

 

   </blockquote></td></tr></table>

 

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="WebDAV Fix Valve"><!--()--></a><a name="WebDAV_Fix_Valve"><strong>WebDAV Fix Valve</strong></a></font></td></tr><tr><td><blockquote>

+</blockquote></td></tr></table>

 

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="WebDAV Fix Valve/Introduction"><!--()--></a><a name="WebDAV_Fix_Valve/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

-    <p>Microsoft operating systems have two WebDAV clients. One is used with

-    port 80, the other is used for all other ports. The implementation used with

-    port 80 does not adhere to the WebDAV specification and fails when trying to

-    communicate with the Tomcat WebDAV Servlet. This valve provides a fix for

-    this by forcing the use of the WebDAV implementation that works, even when

-    connecting via port 80.</p>

-    

-    <p>This Valve may be used at the <code>Engine</code>, <code>Host</code> or

-    <code>Context</code> level as required. Normally, this Valve would be used

-    at the <code>Context</code> level.</p>

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="SPNEGO Valve"><!--()--></a><a name="SPNEGO_Valve"><strong>SPNEGO Valve</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="SPNEGO Valve/Introduction"><!--()--></a><a name="SPNEGO_Valve/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>SPNEGO Authenticator Valve</strong> is automatically added to

+    any <a href="context.html">Context</a> that is configured to use SPNEGO

+    authentication.</p>

+

+    <p>If any non-default settings are required, the valve may be configured

+    within <a href="context.html">Context</a> element with the required

+    values.</p>

 

   </blockquote></td></tr></table>

 

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="WebDAV Fix Valve/Attributes"><!--()--></a><a name="WebDAV_Fix_Valve/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="SPNEGO Valve/Attributes"><!--()--></a><a name="SPNEGO_Valve/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

 

-    <p>The <strong>WebDAV Fix Valve</strong> supports the following

+    <p>The <strong>SPNEGO Authenticator Valve</strong> supports the following

     configuration attributes:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>className</code></strong></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">applyJava8u40Fix</code></td><td align="left" valign="center">

+        <p>A fix introduced in Java 8 update 40 (

+        <a href="https://bugs.openjdk.java.net/browse/JDK-8048194">JDK-8048194</a>)

+        onwards broke SPNEGO authentication for IE with Tomcat running on

+        Windows 2008 R2 servers. This option enables a work-around that allows

+        SPNEGO authentication to continue working. The work-around should not

+        impact other configurations so it is enabled by default. If necessary,

+        the workaround can be disabled by setting this attribute to

+        <code>false</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">alwaysUseSession</code></td><td align="left" valign="center">

+        <p>Should a session always be used once a user is authenticated? This

+        may offer some performance benefits since the session can then be used

+        to cache the authenticated Principal, hence removing the need to

+        authenticate the user on every request. This will also help with clients

+        that assume that the server will cache the authenticated user. However

+        there will also be the performance cost of creating and GC'ing the

+        session. For an alternative solution see

+        <code>noKeepAliveUserAgents</code>. If not set, the default value of

+        <code>false</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cache</code></td><td align="left" valign="center">

+        <p>Should we cache authenticated Principals if the request is part of an

+        HTTP session? If not specified, the default value of <code>true</code>

+        will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

         <p>Java class name of the implementation to use.  This MUST be set to

-        <strong>org.apache.catalina.valves.WebdavFixValve</strong>.</p>

+        <strong>org.apache.catalina.authenticator.SpnegoAuthenticator</strong>.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">changeSessionIdOnAuthentication</code></td><td align="left" valign="center">

+        <p>Controls if the session ID is changed if a session exists at the

+        point where users are authenticated. This is to prevent session fixation

+        attacks. If not set, the default value of <code>true</code> will be

+        used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">disableProxyCaching</code></td><td align="left" valign="center">

+        <p>Controls the caching of pages that are protected by security

+        constraints. Setting this to <code>false</code> may help work around

+        caching issues in some browsers but will also cause secured pages to be

+        cached by proxies which will almost certainly be a security issue.

+        <code>securePagesWithPragma</code> offers an alternative, secure,

+        workaround for browser caching issues. If not set, the default value of

+        <code>true</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">loginConfigName</code></td><td align="left" valign="center">

+        <p>The name of the JAAS login configuration to be used to login as the

+        service. If not specified, the default of

+        <code>com.sun.security.jgss.krb5.accept</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">noKeepAliveUserAgents</code></td><td align="left" valign="center">

+        <p>Some clients (not most browsers) expect the server to cache the

+        authenticated user information for a connection and do not resend the

+        credentials with every request. Tomcat will not do this unless an HTTP

+        session is available. A session will be available if either the

+        application creates one or if <code>alwaysUseSession</code> is enabled

+        for this Authenticator.</p>

+        <p>As an alternative to creating a session, this attribute may be used

+        to define the user agents for which HTTP keep-alive is disabled. This

+        means that a connection will only used for a single request and hence

+        there is no ability to cache authenticated user information per

+        connection. There will be a performance cost in disabling HTTP

+        keep-alive.</p>

+        <p>The attribute should be a regular expression that matches the entire

+        user-agent string, e.g. <code>.*Chrome.*</code>. If not specified, no

+        regular expression will be defined and no user agents will have HTTP

+        keep-alive disabled.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">securePagesWithPragma</code></td><td align="left" valign="center">

+        <p>Controls the caching of pages that are protected by security

+        constraints. Setting this to <code>false</code> may help work around

+        caching issues in some browsers by using

+        <code>Cache-Control: private</code> rather than the default of

+        <code>Pragma: No-cache</code> and <code>Cache-control: No-cache</code>.

+        If not set, the default value of <code>false</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomAlgorithm</code></td><td align="left" valign="center">

+        <p>Name of the algorithm to use to create the

+        <code>java.security.SecureRandom</code> instances that generate session

+        IDs. If an invalid algorithm and/or provider is specified, the platform

+        default provider and the default algorithm will be used. If not

+        specified, the default algorithm of SHA1PRNG will be used. If the

+        default algorithm is not supported, the platform default will be used.

+        To specify that the platform default should be used, do not set the

+        secureRandomProvider attribute and set this attribute to the empty

+        string.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomClass</code></td><td align="left" valign="center">

+        <p>Name of the Java class that extends

+        <code>java.security.SecureRandom</code> to use to generate SSO session

+        IDs. If not specified, the default value is

+        <code>java.security.SecureRandom</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomProvider</code></td><td align="left" valign="center">

+        <p>Name of the provider to use to create the

+        <code>java.security.SecureRandom</code> instances that generate SSO

+        session IDs. If an invalid algorithm and/or provider is specified, the

+        platform default provider and the default algorithm will be used. If not

+        specified, the platform default provider will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">storeDelegatedCredential</code></td><td align="left" valign="center">

+        <p>Controls if the user' delegated credential will be stored in

+        the user Principal. If available, the delegated credential will be

+        available to applications (e.g. for onward authentication to external

+        services) via the <code>org.apache.catalina.realm.GSS_CREDENTIAL</code>

+        request attribute. If not set, the default value of <code>true</code>

+        will be used.</p>

       </td></tr></table>

 

   </blockquote></td></tr></table>

 

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote IP Valve"><!--()--></a><a name="Remote_IP_Valve"><strong>Remote IP Valve</strong></a></font></td></tr><tr><td><blockquote>

+</blockquote></td></tr></table>

 

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote IP Valve/Introduction"><!--()--></a><a name="Remote_IP_Valve/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

-  

-    <p>Tomcat port of

-    <a href="http://httpd.apache.org/docs/trunk/mod/mod_remoteip.html">mod_remoteip</a>,

-    this valve replaces the apparent client remote IP address and hostname for

-    the request with the IP address list presented by a proxy or a load balancer

-    via a request headers (e.g. "X-Forwarded-For").</p>

 

-    <p>Another feature of this valve is to replace the apparent scheme

-    (http/https), server port and <code>request.secure</code> with the scheme presented 

-    by a proxy or a load balancer via a request header 

-    (e.g. "X-Forwarded-Proto").</p>

-    

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Error Report Valve"><!--()--></a><a name="Error_Report_Valve"><strong>Error Report Valve</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Error Report Valve/Introduction"><!--()--></a><a name="Error_Report_Valve/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Error Report Valve</strong> is a simple error handler

+    for HTTP status codes that will generate and return HTML error pages.</p>

+

+    <p><strong>NOTE:</strong> Disabling both showServerInfo and showReport will

+    only return the HTTP status code and remove all CSS.</p>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Error Report Valve/Attributes"><!--()--></a><a name="Error_Report_Valve/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Error Report Valve</strong> supports the following

+    configuration attributes:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+        <p>Java class name of the implementation to use.  This MUST be set to

+        <strong>org.apache.catalina.valves.ErrorReportValve</strong> to use the

+        default error report valve.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">showReport</code></td><td align="left" valign="center">

+        <p>Flag to determine if the error report is presented when an error

+           occurs. If set to <code>false</code>, then the error report is not in

+           the HTML response.

+           Default value: <code>true</code>

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">showServerInfo</code></td><td align="left" valign="center">

+        <p>Flag to determine if server information is presented when an error

+           occurs. If set to <code>false</code>, then the server version is not

+           returned in the HTML response.

+           Default value: <code>true</code>

+        </p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Crawler Session Manager Valve"><!--()--></a><a name="Crawler_Session_Manager_Valve"><strong>Crawler Session Manager Valve</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Crawler Session Manager Valve/Introduction"><!--()--></a><a name="Crawler_Session_Manager_Valve/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>Web crawlers can trigger the creation of many thousands of sessions as

+    they crawl a site which may result in significant memory consumption. This

+    Valve ensures that crawlers are associated with a single session - just like

+    normal users - regardless of whether or not they provide a session token

+    with their requests.</p>

+

     <p>This Valve may be used at the <code>Engine</code>, <code>Host</code> or

     <code>Context</code> level as required. Normally, this Valve would be used

     at the <code>Engine</code> level.</p>

-    

-    <p>If used in conjunction with Remote Address/Host valves then this valve

-    should be defined first to ensure that the correct client IP address is

-    presented to the Remote Address/Host valves.</p>

+

+    <p>If used in conjunction with Remote IP valve then the Remote IP valve

+    should be defined before this valve to ensure that the correct client IP

+    address is presented to this valve.</p>

 

   </blockquote></td></tr></table>

 

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote IP Valve/Attributes"><!--()--></a><a name="Remote_IP_Valve/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Crawler Session Manager Valve/Attributes"><!--()--></a><a name="Crawler_Session_Manager_Valve/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

 

-    <p>The <strong>Remote IP Valve</strong> supports the

+    <p>The <strong>Crawler Session Manager Valve</strong> supports the

     following configuration attributes:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>className</code></strong></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

         <p>Java class name of the implementation to use.  This MUST be set to

-        <strong>org.apache.catalina.valves.RemoteIpValve</strong>.</p>

-      </td></tr><tr><td align="left" valign="center"><code>remoteIpHeader</code></td><td align="left" valign="center">

-        <p>Name of the HTTP Header read by this valve that holds the list of

-        traversed IP addresses starting from the requesting client. If not

-        specified, the default of <code>x-forwarded-for</code> is used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>internalProxies</code></td><td align="left" valign="center">

-        <p>List of internal proxies' IP addresses as comma separated regular

-        expressions. If they appear in the <strong>remoteIpHeader</strong>

-        value, they will be trusted and will not appear in the

-        <strong>proxiesHeader</strong> value. If not specified the default value

-        of <code>10\.\d\d?\d?\.\d\d?\d?\.\d\d?\d?,

-        192\.168\.\d\d?\d?\.\d\d?\d?,

-        169\.254\.\d\d?\d?\.\d\d?\d?,

-        127\.\d\d?\d?\.\d\d?\d?\.\d\d?\d?</code> will

-        be used.</p>

-        <p>

-          Note that the individual regular expressions <i>must not</i>

-          contain commas themselves, as the <code>internalProxies</code>

-          value is first split by commas, then parsed into separate regular

-          expression patterns.

+        <strong>org.apache.catalina.valves.CrawlerSessionManagerValve</strong>.

         </p>

-      </td></tr><tr><td align="left" valign="center"><code>proxiesHeader</code></td><td align="left" valign="center">

-        <p>Name of the HTTP header created by this valve to hold the list of

-        proxies that have been processed in the incoming

-        <strong>remoteIpHeader</strong>. If not specified, the default of

-        <code>x-forwarded-by</code> is used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>trustedProxies</code></td><td align="left" valign="center">

-        <p>List of trusted proxies' IP addresses as comma separated regular

-        expressions. If they appear in the <strong>remoteIpHeader</strong>

-        value, they will be trusted and will appear in the

-        <strong>proxiesHeader</strong> value. If not specified, no proxies will

-        be trusted.</p>

-      </td></tr><tr><td align="left" valign="center"><code>protocolHeader</code></td><td align="left" valign="center">

-        <p>Name of the HTTP Header read by this valve that holds the protocol

-        used by the client to connect to the proxy. If not specified, the

-        default of <code>null</code> is used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>protocolHeaderHttpsValue</code></td><td align="left" valign="center">

-        <p>Value of the <strong>protocolHeader</strong> to indicate that it is

-        an HTTPS request. If not specified, the default of <code>https</code> is

-        used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>httpServerPort</code></td><td align="left" valign="center">

-         <p>Value returned by <code>ServletRequest.getServerPort()</code> 

-         when the <strong>protocolHeader</strong> indicates <code>http</code> 

-         protocol. If not specified, the default of <code>80</code> is

-        used.</p>

-      </td></tr><tr><td align="left" valign="center"><code>httpsServerPort</code></td><td align="left" valign="center">

-         <p>Value returned by <code>ServletRequest.getServerPort()</code> 

-         when the <strong>protocolHeader</strong> indicates <code>https</code> 

-         protocol. If not specified, the default of <code>443</code> is

-        used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">crawlerUserAgents</code></td><td align="left" valign="center">

+        <p>Regular expression (using <code>java.util.regex</code>) that the user

+        agent HTTP request header is matched against to determine if a request

+        is from a web crawler. If not set, the default of

+        <code>.*[bB]ot.*|.*Yahoo! Slurp.*|.*Feedfetcher-Google.*</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sessionInactiveInterval</code></td><td align="left" valign="center">

+        <p>The minimum time in seconds that the Crawler Session Manager Valve

+        should keep the mapping of client IP to session ID in memory without any

+        activity from the client. The client IP / session cache will be

+        periodically purged of mappings that have been inactive for longer than

+        this interval. If not specified the default value of <code>60</code>

+        will be used.</p>

       </td></tr></table>

 

   </blockquote></td></tr></table>

@@ -717,10 +1445,12 @@
 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Stuck Thread Detection Valve/Introduction"><!--()--></a><a name="Stuck_Thread_Detection_Valve/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

-    <p>This valve allows to detect requests that take a long time to process, which might

-    indicate that the thread that is processing it is stuck.</p>

-    <p>When such a request is detected, the current stack trace of its thread is written

-    to Tomcat log with a WARN level.</p>

+    <p>This valve allows to detect requests that take a long time to process,

+    which might indicate that the thread that is processing it is stuck.

+    Additionally it can optionally interrupt such threads to try and unblock

+    them.</p>

+    <p>When such a request is detected, the current stack trace of its thread is

+    written to Tomcat log with a WARN level.</p>

     <p>The IDs and names of the stuck threads are available through JMX in the

     <code>stuckThreadIds</code> and <code>stuckThreadNames</code> attributes.

     The IDs can be used with the standard Threading JVM MBean

@@ -734,57 +1464,95 @@
     <p>The <strong>Stuck Thread Detection Valve</strong> supports the

     following configuration attributes:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>className</code></strong></td><td align="left" valign="center">

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

         <p>Java class name of the implementation to use.  This MUST be set to

         <strong>org.apache.catalina.valves.StuckThreadDetectionValve</strong>.

         </p>

-      </td></tr><tr><td align="left" valign="center"><code>threshold</code></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">threshold</code></td><td align="left" valign="center">

         <p>Minimum duration in seconds after which a thread is considered stuck.

         Default is 600 seconds. If set to 0, the detection is disabled.</p>

-        <p>Note: since the detection is done in the background thread of the Container

-        (Engine, Host or Context) declaring this Valve, the threshold should be higher

-        than the <code>backgroundProcessorDelay</code> of this Container.</p>

+        <p>Note: since the detection (and optional interruption) is done in the

+        background thread of the Container (Engine, Host or Context) declaring

+        this Valve, the threshold should be higher than the

+        <code>backgroundProcessorDelay</code> of this Container.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">interruptThreadThreshold</code></td><td align="left" valign="center">

+        <p>Minimum duration in seconds after which a stuck thread should be

+        interrupted to attempt to "free" it.</p>

+        <p>Note that there's no guarantee that the thread will get unstuck.

+        This usually works well for threads stuck on I/O or locks, but is

+        probably useless in case of infinite loops.</p>

+        <p>Default is -1 which disables the feature. To enable it, the value

+        must be greater or equal to <code>threshold</code>.</p>

       </td></tr></table>

 

   </blockquote></td></tr></table>

 

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="SSL Valve"><!--()--></a><a name="SSL_Valve"><strong>SSL Valve</strong></a></font></td></tr><tr><td><blockquote>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Semaphore Valve"><!--()--></a><a name="Semaphore_Valve"><strong>Semaphore Valve</strong></a></font></td></tr><tr><td><blockquote>

 

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="SSL Valve/Introduction"><!--()--></a><a name="SSL_Valve/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Semaphore Valve/Introduction"><!--()--></a><a name="Semaphore_Valve/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

-    <p>When using mod_proxy_http, the client SSL information is not included in

-    the protocol (unlike mod_jk and mod_proxy_ajp). To make the client SSL

-    information available to Tomcat, some additional configuration is required.

-    In httpd, mod_headers is used to add the SSL information as HTTP headers. In

-    Tomcat, this valve is used to read the information from the HTTP headers and

-    insert it into the request.</p>

-

-    <p>Note: Ensure that the headers are always set by httpd for all requests to

-    prevent a client spoofing SSL information by sending fake headers.</p>

-

-    <p>To configure httpd to set the necessary headers, add the following:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>&lt;IfModule ssl_module&gt;

-  RequestHeader set SSL_CLIENT_CERT "%{SSL_CLIENT_CERT}s"

-  RequestHeader set SSL_CIPHER "%{SSL_CIPHER}s"

-  RequestHeader set SSL_SESSION_ID "%{SSL_SESSION_ID}s"

-  RequestHeader set SSL_CIPHER_USEKEYSIZE "%{SSL_CIPHER_USEKEYSIZE}s"

-&lt;/IfModule&gt;</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <p>The <strong>Semaphore Valve</strong> is able to limit the number of

+    concurrent request processing threads.</p>

+    <p><strong>org.apache.catalina.valves.SemaphoreValve</strong> provides

+    methods which may be overridden by a subclass to customize behavior:</p>

+    <ul>

+    <li><b><code>controlConcurrency</code></b> may be overridden to add

+    conditions;</li>

+    <li><b><code>permitDenied</code></b> may be overridden to add error handling

+    when a permit isn't granted.</li>

+    </ul>

 

   </blockquote></td></tr></table>

 

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="SSL Valve/Attributes"><!--()--></a><a name="SSL_Valve/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Semaphore Valve/Attributes"><!--()--></a><a name="Semaphore_Valve/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

 

-    <p>The <strong>SSL Valve</strong> supports the following configuration

-    attribute:</p>

+    <p>The <strong>Semaphore Valve</strong> supports the following

+    configuration attributes:</p>

 

-    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code>className</code></strong></td><td align="left" valign="center">

-        <p>Java class name of the implementation to use.  This MUST be set to

-        <strong>org.apache.catalina.valves.SSLValve</strong>.

-        </p>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">block</code></td><td align="left" valign="center">

+        <p>Flag to determine if a thread is blocked until a permit is available.

+        The default value is <strong>true</strong>.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+        <p>Java class name of the implementation to use. This MUST be set to

+        <strong>org.apache.catalina.valves.SemaphoreValve</strong>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">concurrency</code></td><td align="left" valign="center">

+        <p>Concurrency level of the semaphore. The default value is

+        <strong>10</strong>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">fairness</code></td><td align="left" valign="center">

+        <p>Fairness of the semaphore. The default value is

+        <strong>false</strong>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">interruptible</code></td><td align="left" valign="center">

+        <p>Flag to determine if a thread may be interrupted until a permit is

+        available. The default value is <strong>false</strong>.</p>

       </td></tr></table>

 

   </blockquote></td></tr></table>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/config/valve.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/connectors.html b/tomcat-uid/webapps/docs/connectors.html
index 2d2a0b9..fc4fd27 100644
--- a/tomcat-uid/webapps/docs/connectors.html
+++ b/tomcat-uid/webapps/docs/connectors.html
@@ -1,9 +1,84 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 6.0 (6.0.41) - Connectors How To</title><meta name="author" content="Remy Maucherat"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - Connectors How To</title><meta name="author" content="Remy Maucherat"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat 6.0</h1><h2>Connectors How To</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Connectors How To</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Introduction">Introduction</a></li><li><a href="#HTTP">HTTP</a></li><li><a href="#AJP">AJP</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -18,30 +93,54 @@
 

 <p>For clustering, a HTTP load balancer <b>with support for web sessions stickiness</b>

 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 

+(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.</p>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="AJP"><strong>AJP</strong></a></font></td></tr><tr><td><blockquote>

 

-<p>When using a single server, the performance when using a native webserver in 

+<p>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. 

+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.</p>

 

-<p>The native connectors supported with this Tomcat release are:

+<p>The native connectors supported with this Tomcat release are:</p>

 <ul>

 <li>JK 1.2.x with any of the supported servers</li>

-<li>mod_proxy on Apache HTTP Server 2.x (included by default in Apache HTTP Server 2.2), 

+<li>mod_proxy on Apache HTTP Server 2.x (included by default in Apache HTTP Server 2.2),

 with AJP enabled</li>

 </ul>

-</p>

 

 <p><b>Other native connectors supporting AJP may work, but are no longer supported.</b></p>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/connectors.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/default-servlet.html b/tomcat-uid/webapps/docs/default-servlet.html
index 4292307..277fb7d 100644
--- a/tomcat-uid/webapps/docs/default-servlet.html
+++ b/tomcat-uid/webapps/docs/default-servlet.html
@@ -1,19 +1,96 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 6.0 (6.0.41) - Default Servlet Reference</title><meta name="author" content="Tim Funk"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - Default Servlet Reference</title><meta name="author" content="Tim Funk"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat 6.0</h1><h2>Default Servlet Reference</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Default Servlet Reference</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#what">What is the DefaultServlet</a></li><li><a href="#where">Where is it declared?</a></li><li><a href="#change">What can I change?</a></li><li><a href="#dir">How do I customize directory listings?</a></li><li><a href="#secure">How do I secure directory listings?</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="what"><strong>What is the DefaultServlet</strong></a></font></td></tr><tr><td><blockquote>

+<p>

 The default servlet is the servlet which serves static resources as well

 as serves the directory listings (if directory listings are enabled).

-

+</p>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="where"><strong>Where is it declared?</strong></a></font></td></tr><tr><td><blockquote>

+<p>

 It is declared globally in <i>$CATALINA_BASE/conf/web.xml</i>.

 By default here is it's declaration:

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-    &lt;servlet&gt;

+</p>

+<div class="codeBox"><pre><code>    &lt;servlet&gt;

         &lt;servlet-name&gt;default&lt;/servlet-name&gt;

         &lt;servlet-class&gt;

           org.apache.catalina.servlets.DefaultServlet

@@ -24,7 +101,7 @@
         &lt;/init-param&gt;

         &lt;init-param&gt;

             &lt;param-name&gt;listings&lt;/param-name&gt;

-            &lt;param-value&gt;true&lt;/param-value&gt;

+            &lt;param-value&gt;false&lt;/param-value&gt;

         &lt;/init-param&gt;

         &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;

     &lt;/servlet&gt;

@@ -34,49 +111,34 @@
     &lt;servlet-mapping&gt;

         &lt;servlet-name&gt;default&lt;/servlet-name&gt;

         &lt;url-pattern&gt;/&lt;/url-pattern&gt;

-    &lt;/servlet-mapping&gt;

-

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    &lt;/servlet-mapping&gt;</code></pre></div>

 

 So by default, the default servlet is loaded at webapp startup and

-directory listings are enabled and debugging is turned off.

+directory listings are disabled and debugging is turned off.

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="change"><strong>What can I change?</strong></a></font></td></tr><tr><td><blockquote>

-The DefaultServlet allows the following initParamters:

+<p>

+  The DefaultServlet allows the following initParamters:

+</p>

 

-<table border="1">

-  <tr>

-    <th valign="top">debug</th>

-    <td valign="top">

+<table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Property</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="propertyName">debug</code></td><td align="left" valign="center">

         Debugging level. It is not very useful unless you are a tomcat

         developer. As

-        of this writing, useful values are 0, 1, 11, 1000.

-    </td>

-  </tr>

-  <tr>

-    <th valign="top">listings</th>

-    <td valign="top">

+        of this writing, useful values are 0, 1, 11, 1000. [0]

+  </td></tr><tr><td align="left" valign="center"><code class="propertyName">listings</code></td><td align="left" valign="center">

         If no welcome file is present, can a directory listing be

         shown?

-        value may be <b>true</b> or <b>false</b>

+        value may be <b>true</b> or <b>false</b> [false]

         <br>

         Welcome files are part of the servlet api.

         <br>

         <b>WARNING:</b> Listings of directories containing many entries are

         expensive. Multiple requests for large directory listings can consume

         significant proportions of server resources.

-    </td>

-  </tr>

-  <tr>

-    <th valign="top">readmeFile</th>

-    <td valign="top">

+  </td></tr><tr><td align="left" valign="center"><code class="propertyName">readmeFile</code></td><td align="left" valign="center">

         If a directory listing is presented, a readme file may also

         be presented with the listing. This file is inserted as is

-        so it may contain HTML. default value is null

-    </td>

-  </tr>

-  <tr>

-    <th valign="top">globalXsltFile</th>

-    <td valign="top">

+        so it may contain HTML.

+  </td></tr><tr><td align="left" valign="center"><code class="propertyName">globalXsltFile</code></td><td align="left" valign="center">

         If you wish to customize your directory listing, you

         can use an XSL transformation. This value is a relative file name (to

         either $CATALINA_BASE/conf/ or $CATALINA_HOME/conf/) which will be used

@@ -84,11 +146,7 @@
         per directory. See <strong>contextXsltFile</strong> and

         <strong>localXsltFile</strong> below. The format of the xml is shown

         below.

-    </td>

-  </tr>

-  <tr>

-    <th valign="top">contextXsltFile</th>

-    <td valign="top">

+  </td></tr><tr><td align="left" valign="center"><code class="propertyName">contextXsltFile</code></td><td align="left" valign="center">

         You may also customize your directory listing by context by

         configuring <code>contextXsltFile</code>. This must be a context

         relative path (e.g.: <code>/path/to/context.xslt</code>) to a file with

@@ -97,11 +155,7 @@
         not exist, then <code>globalXsltFile</code> will be used. If

         <code>globalXsltFile</code> does not exist, then the default

         directory listing will be shown.

-    </td>

-  </tr>

-  <tr>

-    <th valign="top">localXsltFile</th>

-    <td valign="top">

+  </td></tr><tr><td align="left" valign="center"><code class="propertyName">localXsltFile</code></td><td align="left" valign="center">

         You may also customize your directory listing by directory by

         configuring <code>localXsltFile</code>. This must be a file in the

         directory where the listing will take place to with a

@@ -113,53 +167,29 @@
         <code>globalXsltFile</code> will be used. If

         <code>globalXsltFile</code> does not exist, then the default

         directory listing will be shown.

-    </td>

-  </tr>

-  <tr>

-    <th valign="top">input</th>

-    <td valign="top">

+  </td></tr><tr><td align="left" valign="center"><code class="propertyName">input</code></td><td align="left" valign="center">

         Input buffer size (in bytes) when reading

         resources to be served.  [2048]

-    </td>

-  </tr>

-  <tr>

-    <th valign="top">output</th>

-    <td valign="top">

+  </td></tr><tr><td align="left" valign="center"><code class="propertyName">output</code></td><td align="left" valign="center">

         Output buffer size (in bytes) when writing

         resources to be served.  [2048]

-    </td>

-  </tr>

-  <tr>

-    <th valign="top">readonly</th>

-    <td valign="top">

+  </td></tr><tr><td align="left" valign="center"><code class="propertyName">readonly</code></td><td align="left" valign="center">

         Is this context "read only", so HTTP commands like PUT and

         DELETE are rejected?  [true]

-    </td>

-  </tr>

-  <tr>

-    <th valign="top">fileEncoding</th>

-    <td valign="top">

+  </td></tr><tr><td align="left" valign="center"><code class="propertyName">fileEncoding</code></td><td align="left" valign="center">

         File encoding to be used when reading static resources.

         [platform default]

-    </td>

-  </tr>

-  <tr>

-    <th valign="top">sendfileSize</th>

-    <td valign="top">

-        If the connector used supports sendfile, this represents the minimal 

-        file size in KB for which sendfile will be used. Use a negative value 

+  </td></tr><tr><td align="left" valign="center"><code class="propertyName">sendfileSize</code></td><td align="left" valign="center">

+        If the connector used supports sendfile, this represents the minimal

+        file size in KB for which sendfile will be used. Use a negative value

         to always disable sendfile. [48]

-    </td>

-  </tr>

-  <tr>

-    <th valign="top">useAcceptRanges</th>

-    <td valign="top">

+  </td></tr><tr><td align="left" valign="center"><code class="propertyName">useAcceptRanges</code></td><td align="left" valign="center">

         If true, the Accept-Ranges header will be set when appropriate for the

         response. [true]

-    </td>

-  </tr>

-

-</table>

+  </td></tr><tr><td align="left" valign="center"><code class="propertyName">showServerInfo</code></td><td align="left" valign="center">

+        Should server information be presented in the response sent to clients

+        when directory listing is enabled. [true]

+  </td></tr></table>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="dir"><strong>How do I customize directory listings?</strong></a></font></td></tr><tr><td><blockquote>

 <p>You can override DefaultServlet with you own implementation and use that

 in your web.xml declaration. If you

@@ -179,8 +209,8 @@
 

 <p>

 Format:

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-    &lt;listing&gt;

+</p>

+<div class="codeBox"><pre><code>    &lt;listing&gt;

      &lt;entries&gt;

       &lt;entry type='file|dir' urlPath='aPath' size='###' date='gmt date'&gt;

         fileName1

@@ -191,21 +221,23 @@
       ...

      &lt;/entries&gt;

      &lt;readme&gt;&lt;/readme&gt;

-    &lt;/listing&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    &lt;/listing&gt;</code></pre></div>

 <ul>

   <li>size will be missing if <code>type='dir'</code></li>

   <li>Readme is a CDATA entry</li>

 </ul>

+

+<p>

+  The following is a sample xsl file which mimics the default tomcat behavior:

 </p>

-The following is a sample xsl file which mimics the default tomcat behavior:

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;?xml version="1.0"?&gt;

+<div class="codeBox"><pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;

 

 &lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

-  version="1.0"&gt;

+  version="3.0"&gt;

 

-  &lt;xsl:output method="xhtml" encoding="iso-8859-1" indent="no"/&gt;

+  &lt;xsl:output method="html" html-version="5.0"

+    encoding="UTF-8" indent="no"

+    doctype-system="about:legacy-compat"/&gt;

 

   &lt;xsl:template match="listing"&gt;

    &lt;html&gt;

@@ -215,33 +247,31 @@
         &lt;xsl:value-of select="@directory"/&gt;

       &lt;/title&gt;

       &lt;style&gt;

-        h1{color : white;background-color : #0086b2;}

-        h3{color : white;background-color : #0086b2;}

-        body{font-family : sans-serif,Arial,Tahoma;

+        h1 {color : white;background-color : #0086b2;}

+        h3 {color : white;background-color : #0086b2;}

+        body {font-family : sans-serif,Arial,Tahoma;

              color : black;background-color : white;}

-        b{color : white;background-color : #0086b2;}

-        a{color : black;} HR{color : #0086b2;}

+        b {color : white;background-color : #0086b2;}

+        a {color : black;} HR{color : #0086b2;}

+        table td { padding: 5px; }

       &lt;/style&gt;

     &lt;/head&gt;

     &lt;body&gt;

       &lt;h1&gt;Sample Directory Listing For

             &lt;xsl:value-of select="@directory"/&gt;

       &lt;/h1&gt;

-      &lt;hr size="1" /&gt;

-      &lt;table cellspacing="0"

-                  width="100%"

-            cellpadding="5"

-                  align="center"&gt;

+      &lt;hr style="height: 1px;" /&gt;

+      &lt;table style="width: 100%;"&gt;

         &lt;tr&gt;

-          &lt;th align="left"&gt;Filename&lt;/th&gt;

-          &lt;th align="center"&gt;Size&lt;/th&gt;

-          &lt;th align="right"&gt;Last Modified&lt;/th&gt;

+          &lt;th style="text-align: left;"&gt;Filename&lt;/th&gt;

+          &lt;th style="text-align: center;"&gt;Size&lt;/th&gt;

+          &lt;th style="text-align: right;"&gt;Last Modified&lt;/th&gt;

         &lt;/tr&gt;

         &lt;xsl:apply-templates select="entries"/&gt;

         &lt;/table&gt;

       &lt;xsl:apply-templates select="readme"/&gt;

-      &lt;hr size="1" /&gt;

-      &lt;h3&gt;Apache Tomcat/6.0&lt;/h3&gt;

+      &lt;hr style="height: 1px;" /&gt;

+      &lt;h3&gt;Apache Tomcat/8.0&lt;/h3&gt;

     &lt;/body&gt;

    &lt;/html&gt;

   &lt;/xsl:template&gt;

@@ -252,34 +282,58 @@
   &lt;/xsl:template&gt;

 

   &lt;xsl:template match="readme"&gt;

-    &lt;hr size="1" /&gt;

+    &lt;hr style="height: 1px;" /&gt;

     &lt;pre&gt;&lt;xsl:apply-templates/&gt;&lt;/pre&gt;

   &lt;/xsl:template&gt;

 

   &lt;xsl:template match="entry"&gt;

     &lt;tr&gt;

-      &lt;td align="left"&gt;

+      &lt;td style="text-align: left;"&gt;

         &lt;xsl:variable name="urlPath" select="@urlPath"/&gt;

         &lt;a href="{$urlPath}"&gt;

-          &lt;tt&gt;&lt;xsl:apply-templates/&gt;&lt;/tt&gt;

+          &lt;pre&gt;&lt;xsl:apply-templates/&gt;&lt;/pre&gt;

         &lt;/a&gt;

       &lt;/td&gt;

-      &lt;td align="right"&gt;

-        &lt;tt&gt;&lt;xsl:value-of select="@size"/&gt;&lt;/tt&gt;

+      &lt;td style="text-align: right;"&gt;

+        &lt;pre&gt;&lt;xsl:value-of select="@size"/&gt;&lt;/pre&gt;

       &lt;/td&gt;

-      &lt;td align="right"&gt;

-        &lt;tt&gt;&lt;xsl:value-of select="@date"/&gt;&lt;/tt&gt;

+      &lt;td style="text-align: right;"&gt;

+        &lt;pre&gt;&lt;xsl:value-of select="@date"/&gt;&lt;/pre&gt;

       &lt;/td&gt;

     &lt;/tr&gt;

   &lt;/xsl:template&gt;

 

-&lt;/xsl:stylesheet&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/xsl:stylesheet&gt;</code></pre></div>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="secure"><strong>How do I secure directory listings?</strong></a></font></td></tr><tr><td><blockquote>

 Use web.xml in each individual webapp. See the security section of the

 Servlet specification.

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/default-servlet.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/deployer-howto.html b/tomcat-uid/webapps/docs/deployer-howto.html
index 5d79780..b18a4ff 100644
--- a/tomcat-uid/webapps/docs/deployer-howto.html
+++ b/tomcat-uid/webapps/docs/deployer-howto.html
@@ -1,19 +1,95 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 6.0 (6.0.41) - Tomcat Web Application Deployment</title><meta name="author" content="Allistair Crossley"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - Tomcat Web Application Deployment</title><meta name="author" content="Allistair Crossley"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat 6.0</h1><h2>Tomcat Web Application Deployment</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Tomcat Web Application Deployment</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Installation">Installation</a></li><li><a href="#A_word_on_Contexts">A word on Contexts</a></li><li><a href="#Deployment_on_Tomcat_startup">Deployment on Tomcat startup</a></li><li><a href="#Deploying_on_a_running_Tomcat_server">Deploying on a running Tomcat server</a></li><li><a href="#Deploying_using_the_Tomcat_Manager">Deploying using the Tomcat Manager</a></li><li><a href="#Deploying_using_the_Client_Deployer_Package">Deploying using the Client Deployer Package</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

         <p>

             Deployment is the term used for the process of installing a web

-            application (either a 3rd party WAR or your own custom web application) 

-            into the Tomcat server. 

+            application (either a 3rd party WAR or your own custom web application)

+            into the Tomcat server.

         </p>

         <p>

             Web application deployment may be accomplished in a number of ways

-            within the Tomcat server.</p>

+            within the Tomcat server.

+        </p>

         <ul>

                 <li>Statically; the web application is setup before Tomcat is started</li>

                 <li>

@@ -33,7 +109,7 @@
             There are a number of ways to perform deployment that rely on

             the Manager web application. Apache Tomcat provides tasks

             for Apache Ant build tool.

-            <a href="http://tomcat.apache.org/">Apache Tomcat Maven Plugin</a>

+            <a href="http://tomcat.apache.org/maven-plugin.html">Apache Tomcat Maven Plugin</a>

             project provides integration with Apache Maven.

             There is also a tool called the Client Deployer, which can be

             used from a command line and provides additional functionality

@@ -45,17 +121,17 @@
         <p>

             There is no installation required for static deployment of web

             applications as this is provided out of the box by Tomcat. Nor is any

-            installation required for deployment functions with the Tomcat Manager, 

-            although some configuration is required as detailed in the 

+            installation required for deployment functions with the Tomcat Manager,

+            although some configuration is required as detailed in the

             <a href="manager-howto.html">Tomcat Manager manual</a>.

             An installation is however required if you wish

-            to use the Tomcat Client Deployer (TCD). 

-        </p>   

+            to use the Tomcat Client Deployer (TCD).

+        </p>

         <p>

-            The TCD is not packaged with the Tomcat core 

-            distribution, and must therefore be downloaded separately from 

-            the Downloads area. The download is usually labelled 

-            <i>apache-tomcat-6.0.x-deployer</i>.

+            The TCD is not packaged with the Tomcat core

+            distribution, and must therefore be downloaded separately from

+            the Downloads area. The download is usually labelled

+            <i>apache-tomcat-7.0.x-deployer</i>.

         </p>

         <p>

             TCD has prerequisites of Apache Ant 1.6.2+ and a Java installation.

@@ -71,27 +147,27 @@
                 The TCD package need not be extracted into any existing Tomcat

                 installation, it can be extracted to any location.

             </li>

-            <li>Read Using the <a href="#Deploying using the Client Deployer Package">

+            <li>Read Using the <a href="#Deploying_using_the_Client_Deployer_Package">

             Tomcat Client Deployer</a></li>

         </ol>

     </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="A word on Contexts"><!--()--></a><a name="A_word_on_Contexts"><strong>A word on Contexts</strong></a></font></td></tr><tr><td><blockquote>

         <p>

             In talking about deployment of web applications, the concept of a

-            <i>Context</i> is required to be understood. A Context is what Tomcat 

+            <i>Context</i> is required to be understood. A Context is what Tomcat

             calls a web application.

         </p>

         <p>

             In order to configure a Context within Tomcat a <i>Context Descriptor</i>

             is required. A Context Descriptor is simply an XML file that contains

-            Tomcat related configuration for a Context, e.g naming resources or 

+            Tomcat related configuration for a Context, e.g naming resources or

             session manager configuration. In earlier versions of

             Tomcat the content of a Context Descriptor configuration was often stored within

             Tomcat's primary configuration file <i>server.xml</i> but this is now

             discouraged (although it currently still works).

         </p>

-        <p>        

-            Context Descriptors not only help Tomcat to know how to configure 

-            Contexts but other tools such as the Tomcat Manager and TCD often use 

+        <p>

+            Context Descriptors not only help Tomcat to know how to configure

+            Contexts but other tools such as the Tomcat Manager and TCD often use

             these Context Descriptors to perform their roles properly.

         </p>

         <p>

@@ -104,14 +180,14 @@
         <p>

             Files in (1) are named [webappname].xml but files in (2) are named

             context.xml. If a Context Descriptor is not provided for a Context,

-            Tomcat configures the Context using default values. 

+            Tomcat configures the Context using default values.

         </p>

     </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deployment on Tomcat startup"><!--()--></a><a name="Deployment_on_Tomcat_startup"><strong>Deployment on Tomcat startup</strong></a></font></td></tr><tr><td><blockquote>

         <p>

-            If you are not interested in using the Tomcat Manager, or TCD, 

-            then you'll need to deploy your web applications 

+            If you are not interested in using the Tomcat Manager, or TCD,

+            then you'll need to deploy your web applications

             statically to Tomcat, followed by a Tomcat startup. The location you

-            deploy web applications to for this type of deployment is called the 

+            deploy web applications to for this type of deployment is called the

             <code>appBase</code> which is specified per Host. You either copy a

             so-called <i>exploded web application</i>, i.e non-compressed, to this

             location, or a compressed web application resource .WAR file.

@@ -119,7 +195,7 @@
         <p>

             The web applications present in the location specified by the Host's

             (default Host is "localhost") <code>appBase</code> attribute (default

-            appBase is "$CATALINA_BASE/webapps") will be deployed on Tomcat startup 

+            appBase is "$CATALINA_BASE/webapps") will be deployed on Tomcat startup

             only if the Host's <code>deployOnStartup</code> attribute is "true".

         </p>

         <p>

@@ -130,29 +206,27 @@
             <li>Any Context Descriptors will be deployed first.</li>

             <li>

                 Exploded web applications not referenced by any Context

-                Descriptor will then be deployed. If they have an associated 

-                .WAR file in the appBase and it is newer than the exploded web application, 

-                the exploded directory will be removed and the webapp will be 

-                redeployed from the .WAR

+                Descriptor will then be deployed. Note that if an exploded web

+                application has an associated .WAR file in the appBase, Tomcat

+                will not detect if the associated .WAR has been updated while

+                Tomcat was stopped and will deploy the exploded web application

+                as is. The exploded web application will not be removed and

+                replaced with the contents of the updated .WAR file.

             </li>

             <li>.WAR files will be deployed</li>

         </ol>

-        <p>

-            Note again that for each deployed web application, a 

-            Context Descriptor will be created <i>unless one exists already</i>.

-        </p>

     </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deploying on a running Tomcat server"><!--()--></a><a name="Deploying_on_a_running_Tomcat_server"><strong>Deploying on a running Tomcat server</strong></a></font></td></tr><tr><td><blockquote>

         <p>

             It is possible to deploy web applications to a running Tomcat server.

         </p>

         <p>

-            If the Host <code>autoDeploy</code> attribute is "true", the Host will 

+            If the Host <code>autoDeploy</code> attribute is "true", the Host will

             attempt to deploy and update web applications dynamically, as needed,

-            for example if a new .WAR is dropped into the <code>appBase</code>. 

-            For this to work, the Host needs to have background processing 

+            for example if a new .WAR is dropped into the <code>appBase</code>.

+            For this to work, the Host needs to have background processing

             enabled which is the default configuration.

         </p>

-        

+

         <p>

             <code>autoDeploy</code> set to "true" and a running Tomcat allows for:

         </p>

@@ -164,32 +238,38 @@
             </li>

             <li>

                 Re-deployment of a web application which has already been deployed from

-                a .WAR when the new .WAR is provided. In this case the exploded 

-                web application is removed, and the .WAR is expanded again. 

-                Note that the explosion will not occur if the Host is configured 

+                a .WAR when the new .WAR is provided. In this case the exploded

+                web application is removed, and the .WAR is expanded again.

+                Note that the explosion will not occur if the Host is configured

                 so that .WARs are not exploded with a <code>unpackWARs</code>

-                attribute set to "false", in which case the web application 

+                attribute set to "false", in which case the web application

                 will be simply redeployed as a compressed archive.

             </li>

             <li>

-                Re-deployment of a web application if the /WEB-INF/web.xml file (or any

-                other resource defined as a WatchedResource) is updated.

+                Re-loading of a web application if the /WEB-INF/web.xml file (or

+                any other resource defined as a WatchedResource) is updated.

             </li>

             <li>

-                Re-deployment of a web application if the Context Descriptor file from which

-                the web application has been deployed is updated.

+                Re-deployment of a web application if the Context Descriptor

+                file from which the web application has been deployed is

+                updated.

+            </li>

+            <li>

+                Re-deployment of dependent web applications if the global or

+                per-host Context Descriptor file used by the web application is

+                updated.

             </li>

             <li>

                 Re-deployment of a web application if a Context Descriptor file (with a

                 filename corresponding to the Context path of the previously deployed

-                web application) is added to the 

+                web application) is added to the

                 <code>$CATALINA_BASE/conf/[enginename]/[hostname]/</code>

                 directory.

             </li>

             <li>

                 Undeployment of a web application if its document base (docBase)

-                is deleted. Note that on Windows, this assumes that anti-locking 

-                features (see Context configuration) are enabled, otherwise it is not 

+                is deleted. Note that on Windows, this assumes that anti-locking

+                features (see Context configuration) are enabled, otherwise it is not

                 possible to delete the resources of a running web application.

             </li>

         </ul>

@@ -199,18 +279,18 @@
         </p>

     </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deploying using the Tomcat Manager"><!--()--></a><a name="Deploying_using_the_Tomcat_Manager"><strong>Deploying using the Tomcat Manager</strong></a></font></td></tr><tr><td><blockquote>

         <p>

-            The Tomcat Manager is covered in its <a href="manager-howto.html">own manual page</a>. 

+            The Tomcat Manager is covered in its <a href="manager-howto.html">own manual page</a>.

         </p>

     </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deploying using the Client Deployer Package"><!--()--></a><a name="Deploying_using_the_Client_Deployer_Package"><strong>Deploying using the Client Deployer Package</strong></a></font></td></tr><tr><td><blockquote>

         <p>

-            Finally, deployment of web application may be achieved using the 

-            Tomcat Client Deployer. This is a package which can be used to 

-            validate, compile, compress to .WAR, and deploy web applications to 

-            production or development Tomcat servers. It should be noted that this feature 

+            Finally, deployment of web application may be achieved using the

+            Tomcat Client Deployer. This is a package which can be used to

+            validate, compile, compress to .WAR, and deploy web applications to

+            production or development Tomcat servers. It should be noted that this feature

             uses the Tomcat Manager and as such the target Tomcat server should be

             running.

         </p>

-    

+

         <p>

             It is assumed the user will be familiar with Apache Ant for using the TCD.

             Apache Ant is a scripted build tool. The TCD comes pre-packaged with a

@@ -219,37 +299,37 @@
             with using the operating system command shell and configuring

             environment variables).

         </p>

-        

+

         <p>

-            The TCD includes Ant tasks, the Jasper page compiler for JSP compilation 

+            The TCD includes Ant tasks, the Jasper page compiler for JSP compilation

             before deployment, as well as a task which

             validates the web application Context Descriptor. The validator task (class

             <code>org.apache.catalina.ant.ValidatorTask</code>) allows only one parameter:

             the base path of an exploded web application.

         </p>

-    

+

         <p>

             The TCD uses an exploded web application as input (see the list of the

-            properties used below). A web application that is programmatically 

-            deployed with the deployer may include a Context Descriptor in 

+            properties used below). A web application that is programmatically

+            deployed with the deployer may include a Context Descriptor in

             <code>/META-INF/context.xml</code>.

         </p>

-    

+

         <p>

             The TCD includes a ready-to-use Ant script, with the following targets:

         </p>

         <ul>

             <li>

-                <code>compile</code> (default): Compile and validate the web 

+                <code>compile</code> (default): Compile and validate the web

                 application. This can be used standalone, and does not need a running

                 Tomcat server. The compiled application will only run on the associated

-                Tomcat 6.0.x server release, and is not guaranteed to work on another

-                Tomcat release, as the code generated by Jasper depends on its runtime

+                <em>Tomcat&nbsp;X.Y.Z</em> server release, and is not guaranteed to work

+                on another Tomcat release, as the code generated by Jasper depends on its runtime

                 component. It should also be noted that this target will also compile

-                automatically any Java source file located in the 

+                automatically any Java source file located in the

                 <code>/WEB-INF/classes</code> folder of the web application.</li>

             <li>

-                <code>deploy</code>: Deploy a web application (compiled or not) to 

+                <code>deploy</code>: Deploy a web application (compiled or not) to

                 a Tomcat server.

             </li>

             <li><code>undeploy</code>: Undeploy a web application</li>

@@ -257,43 +337,45 @@
             <li><code>reload</code>: Reload web application</li>

             <li><code>stop</code>: Stop web application</li>

         </ul>

-        

+

         <p>

             In order for the deployment to be configured, create a file

             called <code>deployer.properties</code> in the TCD installation

             directory root. In this file, add the following name=value pairs per

             line:

         </p>

-        

+

         <p>

-            Additionally, you will need to ensure that a user has been 

+            Additionally, you will need to ensure that a user has been

             setup for the target Tomcat Manager (which TCD uses) otherwise the TCD

             will not authenticate with the Tomcat Manager and the deployment will

-            fail. To do this, see the Tomcat Manager page.        

+            fail. To do this, see the Tomcat Manager page.

         </p>

-        

+

         <ul>

             <li>

-                <code>build</code>: The build folder used will be, by default, 

-                <code>${build}/webapp/${path}</code>. After the end of the execution

-                of the <code>compile</code> target, the web application .WAR will be

-                located at <code>${build}/webapp/${path}.war</code>.

+                <code>build</code>: The build folder used will be, by default,

+                <code>${build}/webapp/${path}</code> (<code>${build}</code>, by

+                default, points to <code>${basedir}/build</code>). After the end

+                of the execution of the <code>compile</code> target, the web

+                application .WAR will be located at

+                <code>${build}/webapp/${path}.war</code>.

             </li>

             <li>

-                <code>webapp</code>: The directory containing the exploded web application 

+                <code>webapp</code>: The directory containing the exploded web application

                 which will be compiled and validated. By default, the folder is

                 <code>myapp</code>.

             </li>

             <li>

-                <code>path</code>: Deployed context path of the web application, 

+                <code>path</code>: Deployed context path of the web application,

                 by default <code>/myapp</code>.

             </li>

             <li>

-                <code>url</code>: Absolute URL to the Tomcat Manager web application of a 

+                <code>url</code>: Absolute URL to the Tomcat Manager web application of a

                 running Tomcat server, which will be used to deploy and undeploy the

-                web application. By default, the deployer will attempt to access 

-                a Tomcat instance running on localhost, at 

-                <code>http://localhost:8080/manager</code>.

+                web application. By default, the deployer will attempt to access

+                a Tomcat instance running on localhost, at

+                <code>http://localhost:8080/manager/text</code>.

             </li>

             <li>

                 <code>username</code>: Tomcat Manager username (user should have a role of

@@ -301,6 +383,31 @@
             </li>

             <li><code>password</code>: Tomcat Manager password.</li>

         </ul>

-    </blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+    </blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/deployer-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/developers.html b/tomcat-uid/webapps/docs/developers.html
index 13b48a7..31ed7d2 100644
--- a/tomcat-uid/webapps/docs/developers.html
+++ b/tomcat-uid/webapps/docs/developers.html
@@ -1,45 +1,149 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 6.0 (6.0.41) - Tomcat Developers</title><meta name="author" content="Remy Maucherat"><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - Tomcat Developers</title><meta name="author" content="Remy Maucherat"><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat 6.0</h1><h2>Tomcat Developers</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Active Developers"><!--()--></a><a name="Active_Developers"><strong>Active Developers</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Tomcat Developers</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Active Developers"><!--()--></a><a name="Active_Developers"><strong>Active Developers</strong></a></font></td></tr><tr><td><blockquote>

 

     <p>

       The list indicates the developers' main areas of interest. Feel free to

-      add to the list :) The developers email addresses are 

-      <code>[login]@apache.org</code>. Please <strong>do not</strong> contact 

-      developers directly for any support issues (please post to the 

-      tomcat-users mailing list instead, or one of the other support 

-      resources; some organizations and individual consultants also offer 

-      for pay Tomcat support, as listed on the 

+      add to the list :) The developers email addresses are

+      <code>[login]@apache.org</code>. Please <strong>do not</strong> contact

+      developers directly for any support issues (please post to the

+      tomcat-users mailing list instead, or one of the other support

+      resources; some organizations and individual consultants also offer

+      for pay Tomcat support, as listed on the

       <a href="http://wiki.apache.org/tomcat/SupportAndTraining">support and

       training</a> page on the Tomcat Wiki).

     </p>

 

     <ul>

-      <li>Amy Roh (amyroh): Catalina, Admin webapp</li>

       <li>Bill Barker (billbarker): Connectors</li>

       <li>Costin Manolache (costin): Catalina, Connectors</li>

-      <li>Filip Hanik (fhanik): Clustering</li>

-      <li>Glenn Nielsen (glenn): Catalina, Connectors</li>

-      <li>Henri Gomez (hgomez): Connectors</li>

-      <li>Jan Luehe (luehe): Jasper</li>

-      <li>Jean-Francois Arcand (jfarcand): Catalina</li>

+      <li>Filip Hanik (fhanik): Clustering, Release Manager</li>

       <li>Jean-Frederic Clere (jfclere): Connectors</li>

       <li>Jim Jagielski (jim): Connectors</li>

-      <li>Kin-Man Chung (kinman): Jasper</li>

+      <li>Konstantin Kolinko (kkolinko): Catalina</li>

+      <li>Mark Thomas (markt): CGI, SSI, WebDAV, bug fixing</li>

       <li>Mladen Turk (mturk): Connectors</li>

       <li>Peter Rossbach (pero): Catalina, Clustering, JMX</li>

+      <li>Rainer Jung (rjung): Catalina, Clustering, Connectors</li>

       <li>Remy Maucherat (remm): Catalina, Connectors, Docs</li>

       <li>Tim Funk (funkman): Catalina, Docs</li>

-      <li>Yoav Shapira (yoavs): Docs, JMX, Catalina, balancer, Release Manager</li>

+      <li>Tim Whittington (timw): Connectors</li>

     </ul>

 

   </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Retired Developers"><!--()--></a><a name="Retired_Developers"><strong>Retired Developers</strong></a></font></td></tr><tr><td><blockquote>

 

-

-

-  </blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+    <ul>

+      <li>Amy Roh (amyroh): Catalina</li>

+      <li>Glenn Nielsen (glenn): Catalina, Connectors</li>

+      <li>Henri Gomez (hgomez): Connectors</li>

+      <li>Jan Luehe (luehe): Jasper</li>

+      <li>Jean-Francois Arcand (jfarcand): Catalina</li>

+      <li>Kin-Man Chung (kinman): Jasper</li>

+      <li>Yoav Shapira (yoavs): Docs, JMX, Catalina, balancer</li>

+    </ul>

+  </blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/developers.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/elapi/index.html b/tomcat-uid/webapps/docs/elapi/index.html
new file mode 100644
index 0000000..19c5985
--- /dev/null
+++ b/tomcat-uid/webapps/docs/elapi/index.html
@@ -0,0 +1,34 @@
+<!--

+  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.

+-->

+<!doctype html public "-//w3c//dtd html 4.0 transitional//en" "http://www.w3.org/TR/REC-html40/strict.dtd">

+<html>

+    <head>

+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+    <title>API docs</title>

+</head>

+

+<body>

+

+The EL Javadoc is not installed by default. Download and install

+the "fulldocs" package to get it.

+

+You can also access the javadoc online in the Tomcat

+<a href="http://tomcat.apache.org/tomcat-7.0-doc/">

+documentation bundle</a>.

+

+</body>

+</html>

diff --git a/tomcat-uid/webapps/docs/extras.html b/tomcat-uid/webapps/docs/extras.html
index ed73dee..55e25e2 100644
--- a/tomcat-uid/webapps/docs/extras.html
+++ b/tomcat-uid/webapps/docs/extras.html
@@ -1,44 +1,121 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 6.0 (6.0.41) - Additional Components</title><meta name="author" content="Remy Maucherat"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - Additional Components</title><meta name="author" content="Remy Maucherat"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat 6.0</h1><h2>Additional Components</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

-<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Downloading">Downloading</a></li><li><a href="#Building">Building</a></li><li><a href="#Components_list">Components list</a><ol><li><a href="#Full_commons-logging_implementation">Full commons-logging implementation</a></li><li><a href="#Web_Services_support_(JSR_109)">Web Services support (JSR 109)</a></li></ol></li></ul>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Additional Components</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Downloading">Downloading</a></li><li><a href="#Building">Building</a></li><li><a href="#Components_list">Components list</a><ol><li><a href="#Full_commons-logging_implementation">Full commons-logging implementation</a></li><li><a href="#Web_Services_support_(JSR_109)">Web Services support (JSR 109)</a></li><li><a href="#JMX_Remote_Lifecycle_Listener">JMX Remote Lifecycle Listener</a></li></ol></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

   <p>

-    A number of additional third party components may be used with Apache

-    Tomcat. These components may be built by users should they need them or they

-    can be downloaded from one of the mirrors.

+    A number of additional components may be used with Apache Tomcat. These

+    components may be built by users should they need them or they can be

+    downloaded from one of the mirrors.

   </p>

 

   </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Downloading"><strong>Downloading</strong></a></font></td></tr><tr><td><blockquote>

   <p>

-    To down load the extras components open the Tomcat 6 download page and

-    select "browse" from the Quick Navigation Links. The extras components can be

-    found in bin/extras. 

+    To download the extras components open the

+    <a href="http://tomcat.apache.org/download-70.cgi">Tomcat download page</a>

+    and select "Browse" from the Quick Navigation Links. The extras components

+    can be found in bin/extras.

   </p>

   </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Building"><strong>Building</strong></a></font></td></tr><tr><td><blockquote>

 

     <p>

-      The additional components are built using the <code>extras.xml</code> Ant

-      script which is present in the source bundle of Tomcat.

+      The additional components are built using the <code>extras</code> target

+      of the standard Tomcat Ant script which is present in the source bundle of

+      Tomcat.

     </p>

-    

+

     <p>The build process is the following:</p>

-    

+

     <ul>

     <li>Follow the <a href="building.html">build instructions</a> to build a

         Tomcat binary from the source bundle (note: it will be used by the build

         process of the additional components, but does not need to be actually

         used later on)</li>

-    <li>Execute the command <code>ant -f extras.xml</code> to run the build

+    <li>Execute the command <code>ant extras</code> to run the build

         script</li>

     <li>The additional components JARs will be placed in the

         <code>output/extras</code> folder</li>

     <li>Refer to the documentation below about the usage of these JARs</li>

     </ul>

-	

+

   </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Components list"><!--()--></a><a name="Components_list"><strong>Components list</strong></a></font></td></tr><tr><td><blockquote>

 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Full commons-logging implementation"><!--()--></a><a name="Full_commons-logging_implementation"><strong>Full commons-logging implementation</strong></a></font></td></tr><tr><td><blockquote>

@@ -70,6 +147,42 @@
 

   </blockquote></td></tr></table>

 

-  </blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JMX Remote Lifecycle Listener"><!--()--></a><a name="JMX_Remote_Lifecycle_Listener"><strong>JMX Remote Lifecycle Listener</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>

+    The JMX protocol requires the JMX server (Tomcat in this instance) to listen

+    on two network ports. One of these ports can be fixed via configuration but

+    the second is selected randomly. This makes it difficult to use JMX through

+    a firewall. The JMX Remote Lifecycle Listener allows both ports to be fixed,

+    simplifying the process of connecting to JMX through a firewall. See the <a href="config/listeners.html">listeners</a> page for usage instructions.

+  </p>

+

+  </blockquote></td></tr></table>

+  </blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/extras.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/funcspecs/fs-admin-apps.html b/tomcat-uid/webapps/docs/funcspecs/fs-admin-apps.html
index 78d9613..2d81539 100644
--- a/tomcat-uid/webapps/docs/funcspecs/fs-admin-apps.html
+++ b/tomcat-uid/webapps/docs/funcspecs/fs-admin-apps.html
@@ -1,9 +1,84 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (6.0.41) - Administrative Apps - Overall Requirements</title><meta name="author" content="Craig McClanahan"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (7.0.77) - Administrative Apps - Overall Requirements</title><meta name="author" content="Craig McClanahan"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

       Catalina Functional Specifications

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Functional Specs</a></li></ul><p><strong>Administrative Apps</strong></p><ul><li><a href="fs-admin-apps.html">Overall Requirements</a></li><li><a href="mbean-names.html">Tomcat MBean Names</a></li><li><a href="fs-admin-objects.html">Administered Objects</a></li><li><a href="fs-admin-opers.html">Supported Operations</a></li></ul><p><strong>Internal Servlets</strong></p><ul><li><a href="fs-default.html">Default Servlet</a></li><li><a href="fs-invoker.html">Invoker Servlet</a></li></ul><p><strong>Realm Implementations</strong></p><ul><li><a href="fs-jdbc-realm.html">JDBC Realm</a></li><li><a href="fs-jndi-realm.html">JNDI Realm</a></li><li><a href="fs-memory-realm.html">Memory Realm</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Catalina Functional Specifications</h1><h2>Administrative Apps - Overall Requirements</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Functional Specs</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Administrative Apps</strong></p><ul><li><a href="fs-admin-apps.html">Overall Requirements</a></li><li><a href="mbean-names.html">Tomcat MBean Names</a></li><li><a href="fs-admin-objects.html">Administered Objects</a></li><li><a href="fs-admin-opers.html">Supported Operations</a></li></ul><p><strong>Internal Servlets</strong></p><ul><li><a href="fs-default.html">Default Servlet</a></li></ul><p><strong>Realm Implementations</strong></p><ul><li><a href="fs-jdbc-realm.html">JDBC Realm</a></li><li><a href="fs-jndi-realm.html">JNDI Realm</a></li><li><a href="fs-memory-realm.html">Memory Realm</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Administrative Apps - Overall Requirements</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Overview">Overview</a><ol><li><a href="#Introduction">Introduction</a></li><li><a href="#External_Specifications">External Specifications</a></li><li><a href="#Implementation_Requirements">Implementation Requirements</a></li></ol></li><li><a href="#Dependencies">Dependencies</a><ol><li><a href="#Environmental_Dependencies">Environmental Dependencies</a></li><li><a href="#Container_Dependencies">Container Dependencies</a></li><li><a href="#External_Technologies">External Technologies</a></li></ol></li><li><a href="#Functionality">Functionality</a><ol><li><a href="#Properties_of_Administered_Objects">Properties of Administered Objects</a></li><li><a href="#Supported_Administrative_Operations">Supported Administrative Operations</a></li><li><a href="#Access_Method_Specific_Requirements">Access Method Specific Requirements</a></li></ol></li><li><a href="#Testable_Assertions">Testable Assertions</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Overview"><strong>Overview</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -12,7 +87,7 @@
 

     <p>The purpose of this specification is to define high level requirements

     for administrative applications that can be used to manage the operation

-    of a running Tomcat 6 container.  A variety of <em>Access Methods</em>

+    of a running Tomcat container.  A variety of <em>Access Methods</em>

     to the supported administrative functionality shall be supported, to

     meet varying requirements:</p>

     <ul>

@@ -58,12 +133,12 @@
     <p>The implementation of this functionality depends on the following

     external specifications:</p>

     <ul>

-    <li><a href="http://java.sun.com/products/jdk/idl/index.html">Java

-        IDL</a> (for CORBA, included in the JDK)</li>

-    <li><a href="http://java.sun.com/products/JavaManagement/index.html">

+    <li><a href="http://docs.oracle.com/javase/7/docs/technotes/guides/idl">

+        Java IDL</a> (for CORBA, included in the JDK)</li>

+    <li><a href="http://www.oracle.com/technetwork/java/javase/tech/javamanagement-140525.html">

         Java Management Extensions</a></li>

-    <li><a href="http://java.sun.com/products/rmi/index.html">Remote

-        Method Invocation</a> (Included in the JDK)</li>

+    <li><a href="http://docs.oracle.com/javase/7/docs/technotes/guides/rmi">

+        Remote Method Invocation</a> (Included in the JDK)</li>

     </ul>

 

   </blockquote></td></tr></table>

@@ -76,7 +151,7 @@
     <ul>

     <li>To the maximum extent feasible, all administrative functions,

         and the access methods that support them, shall run portably

-        on all platforms where Tomcat 6 itself runs.</li>

+        on all platforms where Tomcat itself runs.</li>

     <li>In a default Tomcat distribution, all administrative capabilities

         shall be disabled.  It shall be necessary for a system

         administrator to specifically enable the desired access methods

@@ -142,14 +217,17 @@
 

     <p>The availability of the following technologies can be assumed

     for the implementation and operation of the various access methods

-    and the corresponding administrative business logic:</p>

+    and the corresponding administrative business logic:<br>

+    <strong>FIXME</strong> - This list below is totally outdated, but nobody

+    cares about the administrative app anymore. It is removed and unsupported

+    since Tomcat 6.0.</p>

     <ul>

-    <li><a href="http://java.sun.com/j2se/">Java 2 Standard Edition</a>

-        (Version 1.2 or later)</li>

+    <li><a href="http://www.oracle.com/technetwork/java/javase/overview/index.html">

+        Java Standard Edition</a> (Version 1.2 or later)</li>

     <li><a href="http://www.jcp.org/jsr/detail/154.jsp">Servlet 2.4</a>

-        (supported natively by Tomcat 6)</li>

+        (supported natively by Tomcat 5)</li>

     <li><a href="http://www.jcp.org/jsr/detail/152.jsp">JavaServer Pages 2.0</a>

-        (supported natively by Tomcat 6)</li>

+        (supported natively by Tomcat 5)</li>

     <li><a href="http://jakarta.apache.org/taglibs/doc/standard-doc/intro.html">JavaServer Pages Standard Tag Library 1.0 (Jakarta Taglibs-Standard 1.0.3)</a></li>

     <li><a href="http://struts.apache.org/">Struts Framework</a>

         (Version 1.0) - MVC Framework for Web Applications</li>

@@ -223,10 +301,10 @@
   <p>In addition, this web application shall conform to the following

   requirements:</p>

   <ul>

-  <li>All request URIs shall be protected by a security constraint that

-      requires security role <code>manager</code> for processing.</li>

+  <li>All request URIs shall be protected by security constraints that

+      require a security role to be assigned for processing.</li>

   <li>The default user database shall <strong>not</strong> contain any

-      user that has been assigned the role <code>manager</code>.</li>

+      user that has been assigned a security role.</li>

   </ul>

 

   <h5>HTML-Based Web Application</h5>

@@ -251,6 +329,31 @@
 

   <p><strong>FIXME</strong> - Complete this section.</p>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/funcspecs/fs-admin-apps.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/funcspecs/fs-admin-objects.html b/tomcat-uid/webapps/docs/funcspecs/fs-admin-objects.html
index 1e6f783..cc785aa 100644
--- a/tomcat-uid/webapps/docs/funcspecs/fs-admin-objects.html
+++ b/tomcat-uid/webapps/docs/funcspecs/fs-admin-objects.html
@@ -1,9 +1,84 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (6.0.41) - Administrative Apps - Administered Objects</title><meta name="author" content="Craig McClanahan"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (7.0.77) - Administrative Apps - Administered Objects</title><meta name="author" content="Craig McClanahan"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

       Catalina Functional Specifications

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Functional Specs</a></li></ul><p><strong>Administrative Apps</strong></p><ul><li><a href="fs-admin-apps.html">Overall Requirements</a></li><li><a href="mbean-names.html">Tomcat MBean Names</a></li><li><a href="fs-admin-objects.html">Administered Objects</a></li><li><a href="fs-admin-opers.html">Supported Operations</a></li></ul><p><strong>Internal Servlets</strong></p><ul><li><a href="fs-default.html">Default Servlet</a></li><li><a href="fs-invoker.html">Invoker Servlet</a></li></ul><p><strong>Realm Implementations</strong></p><ul><li><a href="fs-jdbc-realm.html">JDBC Realm</a></li><li><a href="fs-jndi-realm.html">JNDI Realm</a></li><li><a href="fs-memory-realm.html">Memory Realm</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Catalina Functional Specifications</h1><h2>Administrative Apps - Administered Objects</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Functional Specs</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Administrative Apps</strong></p><ul><li><a href="fs-admin-apps.html">Overall Requirements</a></li><li><a href="mbean-names.html">Tomcat MBean Names</a></li><li><a href="fs-admin-objects.html">Administered Objects</a></li><li><a href="fs-admin-opers.html">Supported Operations</a></li></ul><p><strong>Internal Servlets</strong></p><ul><li><a href="fs-default.html">Default Servlet</a></li></ul><p><strong>Realm Implementations</strong></p><ul><li><a href="fs-jdbc-realm.html">JDBC Realm</a></li><li><a href="fs-jndi-realm.html">JNDI Realm</a></li><li><a href="fs-memory-realm.html">Memory Realm</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Administrative Apps - Administered Objects</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Administered_Objects_Overview">Administered Objects Overview</a></li><li><a href="#Access_Logger">Access Logger</a></li><li><a href="#Connector">Connector</a></li><li><a href="#Context">Context</a></li><li><a href="#Default_Context">Default Context</a></li><li><a href="#Default_Deployment_Descriptor">Default Deployment Descriptor</a></li><li><a href="#Engine">Engine</a></li><li><a href="#Environment_Entry">Environment Entry</a></li><li><a href="#Host">Host</a></li><li><a href="#JDBC_Resource">JDBC Resource</a></li><li><a href="#Loader">Loader</a></li><li><a href="#Manager">Manager</a></li><li><a href="#Realm">Realm</a></li><li><a href="#Request_Filter">Request Filter</a></li><li><a href="#Server">Server</a></li><li><a href="#Service">Service</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Administered Objects Overview"><!--()--></a><a name="Administered_Objects_Overview"><strong>Administered Objects Overview</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -336,10 +411,6 @@
   <li><code>checkInterval</code> - Number of seconds between checks for

       expired sessions.  [60]</li>

   <li><code>debug</code> - Debugging detail level.  [0]</li>

-  <li><code>entropy</code> - String initialization parameter used to increase

-      the entropy (initial randomness) of the random number generator used to

-      create session identifiers.  [Inferred from engine, host, and context]

-      </li>

   <li><code>maxActiveSessions</code> - The maximum number of active sessions

       that are allowed, or -1 for no limit.  [-1]</li>

   </ul>

@@ -419,6 +490,31 @@
 

   <p><strong>FIXME</strong> - complete this entry</p>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/funcspecs/fs-admin-objects.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/funcspecs/fs-admin-opers.html b/tomcat-uid/webapps/docs/funcspecs/fs-admin-opers.html
index ebe387c..b0fbeb8 100644
--- a/tomcat-uid/webapps/docs/funcspecs/fs-admin-opers.html
+++ b/tomcat-uid/webapps/docs/funcspecs/fs-admin-opers.html
@@ -1,15 +1,90 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (6.0.41) - Administrative Apps - Supported Operations</title><meta name="author" content="Craig McClanahan"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (7.0.77) - Administrative Apps - Supported Operations</title><meta name="author" content="Craig McClanahan"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

       Catalina Functional Specifications

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Functional Specs</a></li></ul><p><strong>Administrative Apps</strong></p><ul><li><a href="fs-admin-apps.html">Overall Requirements</a></li><li><a href="mbean-names.html">Tomcat MBean Names</a></li><li><a href="fs-admin-objects.html">Administered Objects</a></li><li><a href="fs-admin-opers.html">Supported Operations</a></li></ul><p><strong>Internal Servlets</strong></p><ul><li><a href="fs-default.html">Default Servlet</a></li><li><a href="fs-invoker.html">Invoker Servlet</a></li></ul><p><strong>Realm Implementations</strong></p><ul><li><a href="fs-jdbc-realm.html">JDBC Realm</a></li><li><a href="fs-jndi-realm.html">JNDI Realm</a></li><li><a href="fs-memory-realm.html">Memory Realm</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Catalina Functional Specifications</h1><h2>Administrative Apps - Supported Operations</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Functional Specs</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Administrative Apps</strong></p><ul><li><a href="fs-admin-apps.html">Overall Requirements</a></li><li><a href="mbean-names.html">Tomcat MBean Names</a></li><li><a href="fs-admin-objects.html">Administered Objects</a></li><li><a href="fs-admin-opers.html">Supported Operations</a></li></ul><p><strong>Internal Servlets</strong></p><ul><li><a href="fs-default.html">Default Servlet</a></li></ul><p><strong>Realm Implementations</strong></p><ul><li><a href="fs-jdbc-realm.html">JDBC Realm</a></li><li><a href="fs-jndi-realm.html">JNDI Realm</a></li><li><a href="fs-memory-realm.html">Memory Realm</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Administrative Apps - Supported Operations</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Supported_Operations_Overview">Supported Operations Overview</a></li><li><a href="#Access_Logger">Access Logger</a></li><li><a href="#Connector">Connector</a></li><li><a href="#Context">Context</a></li><li><a href="#Default_Context">Default Context</a></li><li><a href="#Engine">Engine</a></li><li><a href="#Environment_Entry">Environment Entry</a></li><li><a href="#Host">Host</a></li><li><a href="#JDBC_Resource">JDBC Resource</a></li><li><a href="#Loader">Loader</a></li><li><a href="#Manager">Manager</a></li><li><a href="#Realm">Realm</a></li><li><a href="#Request_Filter">Request Filter</a></li><li><a href="#Server">Server</a></li><li><a href="#Service">Service</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Supported Operations Overview"><!--()--></a><a name="Supported_Operations_Overview"><strong>Supported Operations Overview</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>This document defines the <em>Supported Operations</em> that may

 be performed against the <a href="fs-admin-objects.html">Administered

-Objects</a> that are supported by Tomcat 6 administrative applications.

+Objects</a> that are supported by Tomcat administrative applications.

 Not all operations are required to be available through every administrative

 application that is implemented.  However, if a given operation is available,

 it should operate consistently with the descriptions found here.</p>

@@ -264,6 +339,31 @@
   <li>Remove the associated <em>Engine</em>.</li>

   </ul>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/funcspecs/fs-admin-opers.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/funcspecs/fs-default.html b/tomcat-uid/webapps/docs/funcspecs/fs-default.html
index 25ec459..7de9c87 100644
--- a/tomcat-uid/webapps/docs/funcspecs/fs-default.html
+++ b/tomcat-uid/webapps/docs/funcspecs/fs-default.html
@@ -1,9 +1,84 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (6.0.41) - Default Servlet</title><meta name="author" content="Craig McClanahan"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (7.0.77) - Default Servlet</title><meta name="author" content="Craig McClanahan"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

       Catalina Functional Specifications

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Functional Specs</a></li></ul><p><strong>Administrative Apps</strong></p><ul><li><a href="fs-admin-apps.html">Overall Requirements</a></li><li><a href="mbean-names.html">Tomcat MBean Names</a></li><li><a href="fs-admin-objects.html">Administered Objects</a></li><li><a href="fs-admin-opers.html">Supported Operations</a></li></ul><p><strong>Internal Servlets</strong></p><ul><li><a href="fs-default.html">Default Servlet</a></li><li><a href="fs-invoker.html">Invoker Servlet</a></li></ul><p><strong>Realm Implementations</strong></p><ul><li><a href="fs-jdbc-realm.html">JDBC Realm</a></li><li><a href="fs-jndi-realm.html">JNDI Realm</a></li><li><a href="fs-memory-realm.html">Memory Realm</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Catalina Functional Specifications</h1><h2>Default Servlet</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Functional Specs</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Administrative Apps</strong></p><ul><li><a href="fs-admin-apps.html">Overall Requirements</a></li><li><a href="mbean-names.html">Tomcat MBean Names</a></li><li><a href="fs-admin-objects.html">Administered Objects</a></li><li><a href="fs-admin-opers.html">Supported Operations</a></li></ul><p><strong>Internal Servlets</strong></p><ul><li><a href="fs-default.html">Default Servlet</a></li></ul><p><strong>Realm Implementations</strong></p><ul><li><a href="fs-jdbc-realm.html">JDBC Realm</a></li><li><a href="fs-jndi-realm.html">JNDI Realm</a></li><li><a href="fs-memory-realm.html">Memory Realm</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Default Servlet</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Overview">Overview</a><ol><li><a href="#Introduction">Introduction</a></li><li><a href="#External_Specifications">External Specifications</a></li><li><a href="#Implementation_Requirements">Implementation Requirements</a></li></ol></li><li><a href="#Dependencies">Dependencies</a><ol><li><a href="#Environmental_Dependencies">Environmental Dependencies</a></li><li><a href="#Container_Dependencies">Container Dependencies</a></li></ol></li><li><a href="#Functionality">Functionality</a><ol><li><a href="#Initialization_Functionality">Initialization Functionality</a></li><li><a href="#Per-Request_Functionality">Per-Request Functionality</a></li><li><a href="#Finalization_Functionality">Finalization Functionality</a></li></ol></li><li><a href="#Testable_Assertions">Testable Assertions</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Overview"><strong>Overview</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -211,7 +286,7 @@
 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Testable Assertions"><!--()--></a><a name="Testable_Assertions"><strong>Testable Assertions</strong></a></font></td></tr><tr><td><blockquote>

 

-  <p>In addition the the assertions implied by the functionality requirements

+  <p>In addition to the assertions implied by the functionality requirements

   listed above, the following additional assertions shall be tested to

   validate the behavior of the default servlet:</p>

   <ul>

@@ -225,6 +300,31 @@
       has been updated through external means.</li>

   </ul>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/funcspecs/fs-default.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/funcspecs/fs-invoker.html b/tomcat-uid/webapps/docs/funcspecs/fs-invoker.html
deleted file mode 100644
index 810568b..0000000
--- a/tomcat-uid/webapps/docs/funcspecs/fs-invoker.html
+++ /dev/null
@@ -1,225 +0,0 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (6.0.41) - Invoker Servlet</title><meta name="author" content="Craig McClanahan"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

-      Catalina Functional Specifications

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Functional Specs</a></li></ul><p><strong>Administrative Apps</strong></p><ul><li><a href="fs-admin-apps.html">Overall Requirements</a></li><li><a href="mbean-names.html">Tomcat MBean Names</a></li><li><a href="fs-admin-objects.html">Administered Objects</a></li><li><a href="fs-admin-opers.html">Supported Operations</a></li></ul><p><strong>Internal Servlets</strong></p><ul><li><a href="fs-default.html">Default Servlet</a></li><li><a href="fs-invoker.html">Invoker Servlet</a></li></ul><p><strong>Realm Implementations</strong></p><ul><li><a href="fs-jdbc-realm.html">JDBC Realm</a></li><li><a href="fs-jndi-realm.html">JNDI Realm</a></li><li><a href="fs-memory-realm.html">Memory Realm</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Catalina Functional Specifications</h1><h2>Invoker Servlet</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

-<ul><li><a href="#Overview">Overview</a><ol><li><a href="#Introduction">Introduction</a></li><li><a href="#External_Specifications">External Specifications</a></li><li><a href="#Implementation_Requirements">Implementation Requirements</a></li></ol></li><li><a href="#Dependencies">Dependencies</a><ol><li><a href="#Environmental_Dependencies">Environmental Dependencies</a></li><li><a href="#Container_Dependencies">Container Dependencies</a></li></ol></li><li><a href="#Functionality">Functionality</a><ol><li><a href="#Initialization_Functionality">Initialization Functionality</a></li><li><a href="#Per-Request_Functionality">Per-Request Functionality</a></li><li><a href="#Finalization_Functionality">Finalization Functionality</a></li></ol></li><li><a href="#Testable_Assertions">Testable Assertions</a></li></ul>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Overview"><strong>Overview</strong></a></font></td></tr><tr><td><blockquote>

-

-

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

-

-    <p>The purpose of the <strong>Invoker Servlet</strong> is to allow a

-    web application to dynamically register new <em>servlet definitions</em>

-    that correspond with a <code>&lt;servlet&gt;</code> element in the

-    <code>/WEB-INF/web.xml</code> deployment descriptor, and execute

-    requests utilizing the new servlet definitions.  From the perspective

-    of the newly registered servlets, all servlet lifecycle requirements

-    of the Servlet Specification (such as calling <code>init()</code> and

-    <code>destroy()</code> at the correct times) will be respected.</p>

-

-  </blockquote></td></tr></table>

-

-

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="External Specifications"><!--()--></a><a name="External_Specifications"><strong>External Specifications</strong></a></font></td></tr><tr><td><blockquote>

-

-    <p>I do not know of any formal specification of the behavior of an

-    invoker servlet that is publicly available.  Anyone know of one?</p>

-

-  </blockquote></td></tr></table>

-

-

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Implementation Requirements"><!--()--></a><a name="Implementation_Requirements"><strong>Implementation Requirements</strong></a></font></td></tr><tr><td><blockquote>

-

-    <p>The implementation of this functionality shall conform to the

-    following requirements:</p>

-    <ul>

-    <li>Implemented as a servlet.</li>

-    <li>Exist in the <code>org.apache.catalina.servlets</code> package

-        so that it can be loaded by the Catalina class loader.</li>

-    <li>Implement the <code>org.apache.catalina.ContainerServlet</code>

-        interface, so that it gains knowledge of the <code>Wrapper</code>

-        that is responsible for itself and, therefore, access to other

-        internal Catalina components.</li>

-    <li>Support a configurable debugging detail level.</li>

-    <li>Log debugging and operational messages (suitably internationalized)

-        via the <code>getServletContext().log()</code> method.</li>

-    </ul>

-

-  </blockquote></td></tr></table>

-

-

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Dependencies"><strong>Dependencies</strong></a></font></td></tr><tr><td><blockquote>

-

-

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Environmental Dependencies"><!--()--></a><a name="Environmental_Dependencies"><strong>Environmental Dependencies</strong></a></font></td></tr><tr><td><blockquote>

-

-    <p>The following environmental dependencies must be met in order for

-    the Invoker servlet to operate correctly:</p>

-    <ul>

-    <li>The invoker servlet must be registered in the application deployment

-        descriptor (or the default deployment descriptor in file

-        <code>$CATALINA_BASE/conf/web.xml</code>) using a "path mapped"

-        servlet mapping.  The historical default mapping is to URL pattern

-        "<code>/servlet/*</code>", although the invoker servlet must operate

-        correctly with an arbitrary mapping.</li>

-    </ul>

-

-  </blockquote></td></tr></table>

-

-

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Container Dependencies"><!--()--></a><a name="Container_Dependencies"><strong>Container Dependencies</strong></a></font></td></tr><tr><td><blockquote>

-

-    <p>Correct operation of the invoker servlet depends on the following

-    specific features of the surrounding container:</p>

-    <ul>

-    <li>Correct support for the <code>ContainerServlet</code> interface,

-        including calling <code>setWrapper()</code> <strong>before</strong>

-        the <code>init()</code> method of the invoker servlet is called.</li>

-    <li>The web application class loader must be stored as the context

-        class loader of the request processing thread.</li>

-    </ul>

-

-  </blockquote></td></tr></table>

-

-

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Functionality"><strong>Functionality</strong></a></font></td></tr><tr><td><blockquote>

-

-

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Initialization Functionality"><!--()--></a><a name="Initialization_Functionality"><strong>Initialization Functionality</strong></a></font></td></tr><tr><td><blockquote>

-

-    <p>The following processing must be performed when the <code>init()</code>

-    method of the invoker servlet is called:</p>

-    <ul>

-    <li>Ensure that the container has called <code>setWrapper()</code>.  If

-        not, throw a permanent <code>UnavailableException</code>.</li>

-    <li>Look up and cache the <code>Context</code> that corresponds to our

-        <code>Wrapper</code>.  This is the component with which new servlet

-        definitions and mappings will be registered.</li>

-    </ul>

-

-  </blockquote></td></tr></table>

-

-

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Per-Request Functionality"><!--()--></a><a name="Per-Request_Functionality"><strong>Per-Request Functionality</strong></a></font></td></tr><tr><td><blockquote>

-

-    <p>On each request, the following processing shall be performed:</p>

-    <ol>

-    <li>Calculate the <code>{ServletPath}</code> for this request, either from

-        request attribute <code>javax.servlet.include.servlet_path</code> or

-        by calling <code>request.getServletPath()</code>.</li>

-    <li>Calculate the <code>{PathInfo}</code> for this request, either from

-        request attribute <code>javax.servlet.include.path_info</code> or

-        by calling <code>request.getPathInfo()</code>.  If the calculated

-        <code>{PathInfo}</code> is null, return HTTP status 400

-        (bad request).</li>

-    <li>Parse the calculated <code>{PathInfo}</code> value as follows:

-        <ol>

-        <li>Ignore the leading slash character.</li>

-        <li>Accumulate characters up to the next '/' (if any) as the

-            <code>{ServletSelector}</code>.</li>

-        <li>If a '/' was encountered, accumulate all characters from that

-            slash (inclusive) to the end of the string as

-            <code>{PathRemainder}</code>.  If no slash was encountered,

-            set <code>{PathRemainder}</code> to a zero-length string.</li>

-        </ol></li>

-    <li>Determine whether <code>{ServletSelector}</code> is the name of an

-        existing servlet definition, and process it as follows:

-        <ol>

-        <li>Ask our associated <code>Context</code> to find and return a

-            child <code>Wrapper</code> named <code>{ServletSelector}</code>.

-            </li>

-        <li>If there is no such child, skip to the next major step.</li>

-        <li>Register a new servlet mapping for this <code>Wrapper</code>,

-            using a URL pattern calculated as follows:

-            <code>{ServletPath}</code> + "/" + <code>{ServletSelector}</code>

-            + "/*"</li>

-        <li>Create a request dispatcher using a path calculated as follows:

-            <code>{ServletPath}</code> + "/" + <code>{ServletSelector}</code>

-            + <code>{PathRemainder}</code></li>

-        <li>Forward this request to the created request dispatcher, and

-            exit from this request.</li>

-        </ol></li>

-    <li>Assume that <code>{ServletSelector}</code> is the fully qualified

-        name of a Java class that implements <code>javax.servlet.Servlet</code>

-        and process it as follows:

-        <ol>

-        <li>Synthesize a new <code>{ServletName}</code> for the servlet

-            definition that will be created.</li>

-        <li>If there is already a child <code>Wrapper</code> associated with

-            this name, return HTTP status 500 (internal server error), because

-            a mapping should have already been created for this servlet.</li>

-        <li>Attempt to load a class named <code>{ServletSelector}</code> from

-            the web application class loader (i.e. the context class loader

-            for our current thread).  If this fails, return HTTP status 404

-            (not found).</li>

-        <li>Instantiate an instance of this class.  If an error occurs,

-            return HTTP status 404 (not found).</li>

-        <li>If this class does not implement the

-            <code>javax.servlet.Servlet</code> interface, return HTTP status

-            404 (not found).</li>

-        <li>Create and register a new <code>Wrapper</code> child with our

-            <code>Context</code>, under name <code>{ServletName}</code>.</li>

-        <li>Register a new servlet mapping for this <code>Wrapper</code>,

-            using a URL pattern calculated as follows:

-            <code>{ServletPath}</code> + "/" + <code>{ServletSelector}</code>

-            + "/*"</li>

-        <li>Create a request dispatcher using a path calculated as follows:

-            <code>{ServletPath}</code> + "/" + <code>{ServletSelector}</code>

-            + <code>{PathRemainder}</code></li>

-        <li>Forward this request to the created request dispatcher, and

-            exit from this request.</li>

-        </ol></li>

-    </ol>

-

-  </blockquote></td></tr></table>

-

-

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Finalization Functionality"><!--()--></a><a name="Finalization_Functionality"><strong>Finalization Functionality</strong></a></font></td></tr><tr><td><blockquote>

-

-    <p>No specific processing is required when the <code>destroy()</code>

-    method is called:</p>

-

-  </blockquote></td></tr></table>

-

-

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Testable Assertions"><!--()--></a><a name="Testable_Assertions"><strong>Testable Assertions</strong></a></font></td></tr><tr><td><blockquote>

-

-  <p>In addition the the assertions implied by the functionality requirements

-  listed above, the following additional assertions shall be tested to

-  validate the behavior of the invoker servlet:</p>

-  <ul>

-  <li>It is possible to access an existing servlet definition by name

-      through the invoker.  The existing servlet definition can include

-      either a <code>&lt;servlet-class&gt;</code> or

-      <code>&lt;jsp-file&gt;</code> subelement.</li>

-  <li>When an existing servlet definition is accessed by name, the request

-      will be ultimately processed by the same servlet instance that would

-      have processed it had a mapping to that servlet definition been used

-      on the request directly.</li>

-  <li>It is possible to access an anonymous servlet by class name

-      through the invoker.</li>

-  <li>When an anonymous servlet is accessed, the servlet instance is processed

-      according to the lifecycle requirements of the Servlet Specification.

-      </li>

-  <li>When an anonymous servlet is accessed, the servlet instance receives

-      a <code>ServletConfig</code> instance with no servlet initialization

-      parameters.</li>

-  <li>It is possible to utilize the invoker servlet via a direct request.</li>

-  <li>It is possible to utilize the invoker servlet via a call to

-      <code>RequestDispatcher.forward()</code>, or the corresponding

-      <code>&lt;jsp:forward&gt;</code> tag in a JSP page.</li>

-  <li>It is possible to utilize the invoker servlet via a call to

-      <code>RequestDispatcher.include()</code>, or the corresponding

-      <code>&lt;jsp:include&gt;</code> tag in a JSP page.</li>

-  <li>It is possible to use any HTTP method (including GET and POST) that

-      is supported by the Servlet class that is ultimately executed.</li>

-  <li>The invoker servlet should never be asked to process a second or

-      subsequent request for the same <code>{ServletSelector}</code> (because

-      it will have registered an appropriate servlet mapping.</li>

-  </ul>

-

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

-        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/funcspecs/fs-jdbc-realm.html b/tomcat-uid/webapps/docs/funcspecs/fs-jdbc-realm.html
index 2eba2c9..3b8642c 100644
--- a/tomcat-uid/webapps/docs/funcspecs/fs-jdbc-realm.html
+++ b/tomcat-uid/webapps/docs/funcspecs/fs-jdbc-realm.html
@@ -1,9 +1,84 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (6.0.41) - JDBCRealm</title><meta name="author" content="Craig McClanahan"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (7.0.77) - JDBCRealm</title><meta name="author" content="Craig McClanahan"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

       Catalina Functional Specifications

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Functional Specs</a></li></ul><p><strong>Administrative Apps</strong></p><ul><li><a href="fs-admin-apps.html">Overall Requirements</a></li><li><a href="mbean-names.html">Tomcat MBean Names</a></li><li><a href="fs-admin-objects.html">Administered Objects</a></li><li><a href="fs-admin-opers.html">Supported Operations</a></li></ul><p><strong>Internal Servlets</strong></p><ul><li><a href="fs-default.html">Default Servlet</a></li><li><a href="fs-invoker.html">Invoker Servlet</a></li></ul><p><strong>Realm Implementations</strong></p><ul><li><a href="fs-jdbc-realm.html">JDBC Realm</a></li><li><a href="fs-jndi-realm.html">JNDI Realm</a></li><li><a href="fs-memory-realm.html">Memory Realm</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Catalina Functional Specifications</h1><h2>JDBCRealm</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Functional Specs</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Administrative Apps</strong></p><ul><li><a href="fs-admin-apps.html">Overall Requirements</a></li><li><a href="mbean-names.html">Tomcat MBean Names</a></li><li><a href="fs-admin-objects.html">Administered Objects</a></li><li><a href="fs-admin-opers.html">Supported Operations</a></li></ul><p><strong>Internal Servlets</strong></p><ul><li><a href="fs-default.html">Default Servlet</a></li></ul><p><strong>Realm Implementations</strong></p><ul><li><a href="fs-jdbc-realm.html">JDBC Realm</a></li><li><a href="fs-jndi-realm.html">JNDI Realm</a></li><li><a href="fs-memory-realm.html">Memory Realm</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>JDBCRealm</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Overview">Overview</a><ol><li><a href="#Introduction">Introduction</a></li><li><a href="#External_Specifications">External Specifications</a></li><li><a href="#Implementation_Requirements">Implementation Requirements</a></li></ol></li><li><a href="#Dependencies">Dependencies</a><ol><li><a href="#Environmental_Dependencies">Environmental Dependencies</a></li><li><a href="#Container_Dependencies">Container Dependencies</a></li></ol></li><li><a href="#Functionality">Functionality</a><ol><li><a href="#Overview_of_Operation">Overview of Operation</a></li><li><a href="#Detailed_Functional_Requirements">Detailed Functional Requirements</a></li></ol></li><li><a href="#Testable_Assertions">Testable Assertions</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Overview"><strong>Overview</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -11,7 +86,7 @@
   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

     <p>The purpose of the <strong>JDBCRealm</strong> implementation is to

-    provide a mechanism by which Tomcat 6 can acquire information needed

+    provide a mechanism by which Tomcat can acquire information needed

     to authenticate web application users, and define their security roles,

     from a relational database accessed via JDBC APIs.  For integration

     with Catalina, the resulting class(es) must implement the

@@ -35,10 +110,10 @@
     <p>The implementation of this functionality depends on the following

     external specifications:</p>

     <ul>

-    <li><a href="http://java.sun.com/products/jdbc/">Java Database

-        Connectivity</a> (version 2.0 or later)</li>

-    <li><a href="http://java.sun.com/products/jdbc/">Java Database

-        Connectivity Optional Package</a> (version 2.0 or later)</li>

+    <li><a href="http://www.oracle.com/technetwork/java/javase/jdbc/index.html">

+        Java Database Connectivity</a> (version 2.0 or later)</li>

+    <li><a href="http://www.oracle.com/technetwork/java/javase/jdbc/index.html">

+        Java Database Connectivity Optional Package</a> (version 2.0 or later)</li>

     </ul>

 

   </blockquote></td></tr></table>

@@ -215,12 +290,37 @@
 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Testable Assertions"><!--()--></a><a name="Testable_Assertions"><strong>Testable Assertions</strong></a></font></td></tr><tr><td><blockquote>

 

-  <p>In addition the the assertions implied by the functionality requirements

+  <p>In addition to the assertions implied by the functionality requirements

   listed above, the following additional assertions shall be tested to

   validate the behavior of <code>JDBCRealm</code>:</p>

   <ul>

   </ul>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/funcspecs/fs-jdbc-realm.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/funcspecs/fs-jndi-realm.html b/tomcat-uid/webapps/docs/funcspecs/fs-jndi-realm.html
index 74210b3..87d92ee 100644
--- a/tomcat-uid/webapps/docs/funcspecs/fs-jndi-realm.html
+++ b/tomcat-uid/webapps/docs/funcspecs/fs-jndi-realm.html
@@ -1,9 +1,84 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (6.0.41) - JNDIRealm</title><meta name="author" content="Craig McClanahan"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (7.0.77) - JNDIRealm</title><meta name="author" content="Craig McClanahan"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

       Catalina Functional Specifications

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Functional Specs</a></li></ul><p><strong>Administrative Apps</strong></p><ul><li><a href="fs-admin-apps.html">Overall Requirements</a></li><li><a href="mbean-names.html">Tomcat MBean Names</a></li><li><a href="fs-admin-objects.html">Administered Objects</a></li><li><a href="fs-admin-opers.html">Supported Operations</a></li></ul><p><strong>Internal Servlets</strong></p><ul><li><a href="fs-default.html">Default Servlet</a></li><li><a href="fs-invoker.html">Invoker Servlet</a></li></ul><p><strong>Realm Implementations</strong></p><ul><li><a href="fs-jdbc-realm.html">JDBC Realm</a></li><li><a href="fs-jndi-realm.html">JNDI Realm</a></li><li><a href="fs-memory-realm.html">Memory Realm</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Catalina Functional Specifications</h1><h2>JNDIRealm</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Functional Specs</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Administrative Apps</strong></p><ul><li><a href="fs-admin-apps.html">Overall Requirements</a></li><li><a href="mbean-names.html">Tomcat MBean Names</a></li><li><a href="fs-admin-objects.html">Administered Objects</a></li><li><a href="fs-admin-opers.html">Supported Operations</a></li></ul><p><strong>Internal Servlets</strong></p><ul><li><a href="fs-default.html">Default Servlet</a></li></ul><p><strong>Realm Implementations</strong></p><ul><li><a href="fs-jdbc-realm.html">JDBC Realm</a></li><li><a href="fs-jndi-realm.html">JNDI Realm</a></li><li><a href="fs-memory-realm.html">Memory Realm</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>JNDIRealm</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Overview">Overview</a><ol><li><a href="#Introduction">Introduction</a></li><li><a href="#External_Specifications">External Specifications</a></li><li><a href="#Implementation_Requirements">Implementation Requirements</a></li></ol></li><li><a href="#Dependencies">Dependencies</a><ol><li><a href="#Environmental_Dependencies">Environmental Dependencies</a></li><li><a href="#Container_Dependencies">Container Dependencies</a></li></ol></li><li><a href="#Functionality">Functionality</a><ol><li><a href="#Operational_Modes">Operational Modes</a></li><li><a href="#Administrator_Login_Mode_Functionality">Administrator Login Mode Functionality</a></li><li><a href="#Username_Login_Mode_Functionality">Username Login Mode Functionality</a></li></ol></li><li><a href="#Testable_Assertions">Testable Assertions</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Overview"><strong>Overview</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -11,7 +86,7 @@
   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

     <p>The purpose of the <strong>JNDIRealm</strong> implementation is to

-    provide a mechanism by which Tomcat 6 can acquire information needed

+    provide a mechanism by which Tomcat can acquire information needed

     to authenticate web application users, and define their security roles,

     from a directory server or other service accessed via JNDI APIs.  For

     integration with Catalina, this class must implement the

@@ -44,8 +119,8 @@
     <p>The implementation of this functionality depends on the following

     external specifications:</p>

     <ul>

-    <li><a href="http://java.sun.com/products/jndi/">Java Naming and

-        Directory Interface</a> (version 1.2.1 or later)</li>

+    <li><a href="http://docs.oracle.com/javase/7/docs/technotes/guides/jndi/index.html">

+        Java Naming and Directory Interface</a> (version 1.2.1 or later)</li>

     </ul>

 

   </blockquote></td></tr></table>

@@ -366,12 +441,37 @@
 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Testable Assertions"><!--()--></a><a name="Testable_Assertions"><strong>Testable Assertions</strong></a></font></td></tr><tr><td><blockquote>

 

-  <p>In addition the the assertions implied by the functionality requirements

+  <p>In addition to the assertions implied by the functionality requirements

   listed above, the following additional assertions shall be tested to

   validate the behavior of <code>JNDIRealm</code>:</p>

   <ul>

   </ul>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/funcspecs/fs-jndi-realm.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/funcspecs/fs-memory-realm.html b/tomcat-uid/webapps/docs/funcspecs/fs-memory-realm.html
index 847ea4f..6708593 100644
--- a/tomcat-uid/webapps/docs/funcspecs/fs-memory-realm.html
+++ b/tomcat-uid/webapps/docs/funcspecs/fs-memory-realm.html
@@ -1,9 +1,84 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (6.0.41) - MemoryRealm</title><meta name="author" content="Craig McClanahan"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (7.0.77) - MemoryRealm</title><meta name="author" content="Craig McClanahan"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

       Catalina Functional Specifications

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Functional Specs</a></li></ul><p><strong>Administrative Apps</strong></p><ul><li><a href="fs-admin-apps.html">Overall Requirements</a></li><li><a href="mbean-names.html">Tomcat MBean Names</a></li><li><a href="fs-admin-objects.html">Administered Objects</a></li><li><a href="fs-admin-opers.html">Supported Operations</a></li></ul><p><strong>Internal Servlets</strong></p><ul><li><a href="fs-default.html">Default Servlet</a></li><li><a href="fs-invoker.html">Invoker Servlet</a></li></ul><p><strong>Realm Implementations</strong></p><ul><li><a href="fs-jdbc-realm.html">JDBC Realm</a></li><li><a href="fs-jndi-realm.html">JNDI Realm</a></li><li><a href="fs-memory-realm.html">Memory Realm</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Catalina Functional Specifications</h1><h2>MemoryRealm</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Functional Specs</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Administrative Apps</strong></p><ul><li><a href="fs-admin-apps.html">Overall Requirements</a></li><li><a href="mbean-names.html">Tomcat MBean Names</a></li><li><a href="fs-admin-objects.html">Administered Objects</a></li><li><a href="fs-admin-opers.html">Supported Operations</a></li></ul><p><strong>Internal Servlets</strong></p><ul><li><a href="fs-default.html">Default Servlet</a></li></ul><p><strong>Realm Implementations</strong></p><ul><li><a href="fs-jdbc-realm.html">JDBC Realm</a></li><li><a href="fs-jndi-realm.html">JNDI Realm</a></li><li><a href="fs-memory-realm.html">Memory Realm</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>MemoryRealm</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Overview">Overview</a><ol><li><a href="#Introduction">Introduction</a></li><li><a href="#External_Specifications">External Specifications</a></li><li><a href="#Implementation_Requirements">Implementation Requirements</a></li></ol></li><li><a href="#Dependencies">Dependencies</a><ol><li><a href="#Environmental_Dependencies">Environmental Dependencies</a></li><li><a href="#Container_Dependencies">Container Dependencies</a></li></ol></li><li><a href="#Functionality">Functionality</a><ol><li><a href="#Overview_of_Operation">Overview of Operation</a></li><li><a href="#Detailed_Functional_Requirements">Detailed Functional Requirements</a></li></ol></li><li><a href="#Testable_Assertions">Testable Assertions</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Overview"><strong>Overview</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -11,10 +86,10 @@
   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

     <p>The purpose of the <strong>MemoryRealm</strong> implementation is to

-    provide a mechanism by which Tomcat 6 can acquire information needed

+    provide a mechanism by which Tomcat can acquire information needed

     to authenticate web application users, and define their security roles,

     from a simple text-based configuration file in XML format.  This is

-    intended to simplify the initial installation and operation of Tomcat 6,

+    intended to simplify the initial installation and operation of Tomcat,

     without the complexity of configuring a database or directory server

     based Realm.  It is not intended for production use.</p>

 

@@ -202,12 +277,37 @@
 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Testable Assertions"><!--()--></a><a name="Testable_Assertions"><strong>Testable Assertions</strong></a></font></td></tr><tr><td><blockquote>

 

-  <p>In addition the the assertions implied by the functionality requirements

+  <p>In addition to the assertions implied by the functionality requirements

   listed above, the following additional assertions shall be tested to

   validate the behavior of <code>MemoryRealm</code>:</p>

   <ul>

   </ul>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/funcspecs/fs-memory-realm.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/funcspecs/index.html b/tomcat-uid/webapps/docs/funcspecs/index.html
index f99c11f..8d658a0 100644
--- a/tomcat-uid/webapps/docs/funcspecs/index.html
+++ b/tomcat-uid/webapps/docs/funcspecs/index.html
@@ -1,13 +1,88 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (6.0.41) - Table of Contents</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (7.0.77) - Table of Contents</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

       Catalina Functional Specifications

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Functional Specs</a></li></ul><p><strong>Administrative Apps</strong></p><ul><li><a href="fs-admin-apps.html">Overall Requirements</a></li><li><a href="mbean-names.html">Tomcat MBean Names</a></li><li><a href="fs-admin-objects.html">Administered Objects</a></li><li><a href="fs-admin-opers.html">Supported Operations</a></li></ul><p><strong>Internal Servlets</strong></p><ul><li><a href="fs-default.html">Default Servlet</a></li><li><a href="fs-invoker.html">Invoker Servlet</a></li></ul><p><strong>Realm Implementations</strong></p><ul><li><a href="fs-jdbc-realm.html">JDBC Realm</a></li><li><a href="fs-jndi-realm.html">JNDI Realm</a></li><li><a href="fs-memory-realm.html">Memory Realm</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Catalina Functional Specifications</h1><h2>Table of Contents</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Catalina Functional Specifications"><!--()--></a><a name="Catalina_Functional_Specifications"><strong>Catalina Functional Specifications</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Functional Specs</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Administrative Apps</strong></p><ul><li><a href="fs-admin-apps.html">Overall Requirements</a></li><li><a href="mbean-names.html">Tomcat MBean Names</a></li><li><a href="fs-admin-objects.html">Administered Objects</a></li><li><a href="fs-admin-opers.html">Supported Operations</a></li></ul><p><strong>Internal Servlets</strong></p><ul><li><a href="fs-default.html">Default Servlet</a></li></ul><p><strong>Realm Implementations</strong></p><ul><li><a href="fs-jdbc-realm.html">JDBC Realm</a></li><li><a href="fs-jndi-realm.html">JNDI Realm</a></li><li><a href="fs-memory-realm.html">Memory Realm</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Table of Contents</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Catalina Functional Specifications"><!--()--></a><a name="Catalina_Functional_Specifications"><strong>Catalina Functional Specifications</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>This documentation area includes <em>functional specifications</em> for

 many features supported by the <strong>Catalina</strong> servlet container

-portion of Tomcat 6.  In most cases, these features are not documented in the

+portion of Tomcat.  In most cases, these features are not documented in the

 underlying Servlet or JSP specifications, so a definition of the expected

 correct behavior is important both to implementors of those features, and to

 test writers trying to decide what to test.</p>

@@ -16,14 +91,14 @@
 in the menu (to the left):</p>

 <ul>

 <li><em>Administrative Apps</em> - Overall requirements for supporting an

-    ability to configure and operate a Tomcat 6 installation through tools,

+    ability to configure and operate a Tomcat installation through tools,

     as well as detailed requirements for the tools themselves.</li>

 <li><em>Internal Servlets</em> - Requirements for Catalina features that are

     implemented as internal, container-managed, servlets.</li>

 <li><em>Realm Implementations</em> - Requirements for the implementations of

     the <code>org.apache.catalina.Realm</code> interface (providing access to

     collections of users, passwords and roles) that are included in the

-    standard Tomcat 6 distribution.</li>

+    standard Tomcat distribution.</li>

 </ul>

 

 <p><em>NOTE</em> - In some cases, the contents of these functional specs has

@@ -35,6 +110,31 @@
 <p><strong>TODO</strong> - Obviously, this area has a long ways to go before

 it is complete.  Contributions are welcome!</p>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/funcspecs/index.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/funcspecs/mbean-names.html b/tomcat-uid/webapps/docs/funcspecs/mbean-names.html
index b5928b0..94016e6 100644
--- a/tomcat-uid/webapps/docs/funcspecs/mbean-names.html
+++ b/tomcat-uid/webapps/docs/funcspecs/mbean-names.html
@@ -1,9 +1,84 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (6.0.41) - Tomcat MBean Names</title><meta name="author" content="Craig McClanahan"><meta name="author" content="Amy Roh"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (7.0.77) - Tomcat MBean Names</title><meta name="author" content="Craig McClanahan"><meta name="author" content="Amy Roh"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

       Catalina Functional Specifications

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Functional Specs</a></li></ul><p><strong>Administrative Apps</strong></p><ul><li><a href="fs-admin-apps.html">Overall Requirements</a></li><li><a href="mbean-names.html">Tomcat MBean Names</a></li><li><a href="fs-admin-objects.html">Administered Objects</a></li><li><a href="fs-admin-opers.html">Supported Operations</a></li></ul><p><strong>Internal Servlets</strong></p><ul><li><a href="fs-default.html">Default Servlet</a></li><li><a href="fs-invoker.html">Invoker Servlet</a></li></ul><p><strong>Realm Implementations</strong></p><ul><li><a href="fs-jdbc-realm.html">JDBC Realm</a></li><li><a href="fs-jndi-realm.html">JNDI Realm</a></li><li><a href="fs-memory-realm.html">Memory Realm</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Catalina Functional Specifications</h1><h2>Tomcat MBean Names</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Functional Specs</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Administrative Apps</strong></p><ul><li><a href="fs-admin-apps.html">Overall Requirements</a></li><li><a href="mbean-names.html">Tomcat MBean Names</a></li><li><a href="fs-admin-objects.html">Administered Objects</a></li><li><a href="fs-admin-opers.html">Supported Operations</a></li></ul><p><strong>Internal Servlets</strong></p><ul><li><a href="fs-default.html">Default Servlet</a></li></ul><p><strong>Realm Implementations</strong></p><ul><li><a href="fs-jdbc-realm.html">JDBC Realm</a></li><li><a href="fs-jndi-realm.html">JNDI Realm</a></li><li><a href="fs-memory-realm.html">Memory Realm</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Tomcat MBean Names</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Background">Background</a></li><li><a href="#Catalina_Object_Hierarchy">Catalina Object Hierarchy</a></li><li><a href="#MBean_Groups_and_Names">MBean Groups and Names</a></li><li><a href="#JSR-77_Cross_Reference">JSR-77 Cross Reference</a></li><li><a href="#JSR-88_Cross_Reference">JSR-88 Cross Reference</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Background"><strong>Background</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -137,7 +212,7 @@
     <td>Server / Service / Engine / Host / Context</td>

     <td align="center">1..n</td>

     <td align="center"><code>path</code></td>

-    <td><code>type=${CONTEXT}, path=${path}, host=${host.name},

+    <td><code>type=${CONTEXT}, context=${name}, host=${host.name},

         service=${service.name}</code></td>

   </tr>

 

@@ -145,15 +220,16 @@
     <td>Server / Service / Engine / Host / Context / InstanceListener</td>

     <td align="center">0..n</td>

     <td align="center">(none)</td>

-    <td><code>type=${INSTANCE-LISTENER}, sequence=${###}, path=${context.path},

-        host=${host.name}, service=${service.name}</code></td>

+    <td><code>type=${INSTANCE-LISTENER}, sequence=${###},

+        context=${context.name}, host=${host.name},

+        service=${service.name}</code></td>

   </tr>

 

   <tr>

     <td>Server / Service / Engine / Host / Context / Listener</td>

     <td align="center">0..n</td>

     <td align="center">(none)</td>

-    <td><code>type=${LISTENER}, sequence=${###}, path=${context.path},

+    <td><code>type=${LISTENER}, sequence=${###}, context=${context.name},

         host=${host.name}, service=${service.name}</code></td>

   </tr>

 

@@ -161,7 +237,7 @@
     <td>Server / Service / Engine / Host / Context / Loader</td>

     <td align="center">0..1</td>

     <td align="center">(none)</td>

-    <td><code>type=${LOADER}, path=${context.path}, host=${host.name},

+    <td><code>type=${LOADER}, context=${context.name}, host=${host.name},

         service=${service.name}</code></td>

   </tr>

 

@@ -169,7 +245,7 @@
     <td>Server / Service / Engine / Host / Context / Manager</td>

     <td align="center">0..1</td>

     <td align="center">(none)</td>

-    <td><code>type=${MANAGER}, path=${context.path}, host=${host.name},

+    <td><code>type=${MANAGER}, context=${context.name}, host=${host.name},

         service=${service.name}</code></td>

   </tr>

 

@@ -177,7 +253,7 @@
     <td>Server / Service / Engine / Host / Context / Realm</td>

     <td align="center">0..1</td>

     <td align="center">(none)</td>

-    <td><code>type=${REALM}, path=${context.path}, host=${host.name},

+    <td><code>type=${REALM}, context=${context.name}, host=${host.name},

         service=${service.name}</code></td>

   </tr>

 

@@ -185,7 +261,7 @@
     <td>Server / Service / Engine / Host / Context / Resources</td>

     <td align="center">0..1</td>

     <td align="center">(none)</td>

-    <td><code>type=${RESOURCES}, path=${context.path}, host=${host.name},

+    <td><code>type=${RESOURCES}, context=${context.name}, host=${host.name},

         service=${service.name}</code></td>

   </tr>

 

@@ -193,7 +269,7 @@
     <td>Server / Service / Engine / Host / Context / Valve</td>

     <td align="center">0..n</td>

     <td align="center">(none)</td>

-    <td><code>type=${VALVE}, sequence=${###}, path=${context.path},

+    <td><code>type=${VALVE}, sequence=${###}, context=${context.name},

         host=${host.name}, service=${service.name}</code></td>

   </tr>

 

@@ -211,16 +287,18 @@
     <td>Server / Service / Engine / Host / Context / WrapperLifecycle</td>

     <td align="center">0..n</td>

     <td align="center">(none)</td>

-    <td><code>type=${WRAPPER-LIFECYCLE}, sequence=${###}, path=${context.path},

-        host=${host.name}, service=${service.name}</code></td>

+    <td><code>type=${WRAPPER-LIFECYCLE}, sequence=${###},

+        context=${context.name}, host=${host.name},

+        service=${service.name}</code></td>

   </tr>

 

   <tr>

     <td>Server / Service / Engine / Host / Context / WrapperListener</td>

     <td align="center">0..n</td>

     <td align="center">(none)</td>

-    <td><code>type=${WRAPPER-LISTENER}, sequence=${###}, path=${context.path},

-        host=${host.name}, service=${service.name}</code></td>

+    <td><code>type=${WRAPPER-LISTENER}, sequence=${###},

+        context=${context.name}, host=${host.name},

+        service=${service.name}</code></td>

   </tr>

 

   <tr>

@@ -708,6 +786,31 @@
 

 </table>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/funcspecs/mbean-names.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/html-manager-howto.html b/tomcat-uid/webapps/docs/html-manager-howto.html
index 243dba1..3f0231c 100644
--- a/tomcat-uid/webapps/docs/html-manager-howto.html
+++ b/tomcat-uid/webapps/docs/html-manager-howto.html
@@ -1,10 +1,85 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 6.0 (6.0.41) - Tomcat Web Application Manager How To</title><meta name="author" content="Glenn L. Nielsen"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - Tomcat Web Application Manager How To</title><meta name="author" content="Glenn L. Nielsen"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat 6.0</h1><h2>Tomcat Web Application Manager How To</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

-<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Message">Message</a></li><li><a href="#Manager">Manager</a></li><li><a href="#Applications">Applications</a><ol><li><a href="#Start">Start</a></li><li><a href="#Stop">Stop</a></li><li><a href="#Reload">Reload</a></li><li><a href="#Undeploy">Undeploy</a></li></ol></li><li><a href="#Deploy">Deploy</a><ol><li><a href="#Deploy_directory_or_WAR_file_located_on_server">Deploy directory or WAR file located on server</a></li><li><a href="#Upload_a_WAR_file_to_install">Upload a WAR file to install</a></li><li><a href="#Deployment_Notes">Deployment Notes</a></li><li><a href="#Deploy_Message">Deploy Message</a></li></ol></li><li><a href="#Diagnostics">Diagnostics</a><ol><li><a href="#Finding_memory_leaks">Finding memory leaks</a></li></ol></li><li><a href="#Server_Information">Server Information</a></li></ul>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Tomcat Web Application Manager How To</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Message">Message</a></li><li><a href="#Manager">Manager</a></li><li><a href="#Applications">Applications</a><ol><li><a href="#Start">Start</a></li><li><a href="#Stop">Stop</a></li><li><a href="#Reload">Reload</a></li><li><a href="#Undeploy">Undeploy</a></li></ol></li><li><a href="#Deploy">Deploy</a><ol><li><a href="#Deploy_directory_or_WAR_file_located_on_server">Deploy directory or WAR file located on server</a><ol><li><a href="#Deploy_a_Directory_or_WAR_by_URL">Deploy a Directory or WAR by URL</a></li><li><a href="#Deploy_a_Directory_or_War_from_the_Host_appBase">Deploy a Directory or War from the Host appBase</a></li><li><a href="#Deploy_using_a_Context_configuration_%22.xml%22_file">Deploy using a Context configuration ".xml" file</a></li></ol></li><li><a href="#Upload_a_WAR_file_to_install">Upload a WAR file to install</a></li><li><a href="#Deployment_Notes">Deployment Notes</a></li><li><a href="#Deploy_Message">Deploy Message</a></li></ol></li><li><a href="#Diagnostics">Diagnostics</a><ol><li><a href="#Finding_memory_leaks">Finding memory leaks</a></li></ol></li><li><a href="#Server_Information">Server Information</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>In many production environments it is very useful to have the capability

@@ -91,33 +166,29 @@
 users continuously encounter database exceptions.</p>

 

 <p>If this command succeeds, you will see a Message like this:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-OK - Started application at context path /examples

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>OK - Started application at context path /examples</code></pre></div>

 

 <p>Otherwise, the Message will start with <code>FAIL</code> and include an

 error message.  Possible causes for problems include:</p>

 <ul>

 <li><em>Encountered exception</em>

-    <blockquote>             

     <p>An exception was encountered trying to start the web application.

-    Check the Tomcat 6 logs for the details.</p>

-    </blockquote></li>       

+    Check the Tomcat logs for the details.</p>

+    </li>

 <li><em>Invalid context path was specified</em>

-    <blockquote>             

     <p>The context path must start with a slash character, unless you are

     referencing the ROOT web application -- in which case the context path

     must be a zero-length string.</p>

-    </blockquote></li>       

+    </li>

 <li><em>No context exists for path /foo</em>

-    <blockquote>             

     <p>There is no deployed application on the context path

-    that you specified.</p>  

-    </blockquote></li>       

+    that you specified.</p>

+    </li>

 <li><em>No context path was specified</em>

-    <blockquote>             

+    <p>

     The <code>path</code> parameter is required.

-    </blockquote></li>       

+    </p>

+</li>

 </ul>

 

 </blockquote></td></tr></table>

@@ -128,35 +199,31 @@
 deployed.  Any request that comes in while an application is

 stopped will see an HTTP error 404, and this application will show as

 "stopped" on a list applications command.</p>

-                             

+

 <p>If this command succeeds, you will see a Message like this:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-OK - Stopped application at context path /examples

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-                             

+<div class="codeBox"><pre><code>OK - Stopped application at context path /examples</code></pre></div>

+

 <p>Otherwise, the Message will start with <code>FAIL</code> and include an

 error message.  Possible causes for problems include:</p>

-<ul>                         

+<ul>

 <li><em>Encountered exception</em>

-    <blockquote>             

     <p>An exception was encountered trying to stop the web application.

-    Check the Tomcat 6 logs for the details.</p>

-    </blockquote></li>       

+    Check the Tomcat logs for the details.</p>

+    </li>

 <li><em>Invalid context path was specified</em>

-    <blockquote>             

     <p>The context path must start with a slash character, unless you are

     referencing the ROOT web application -- in which case the context path

     must be a zero-length string.</p>

-    </blockquote></li>       

+    </li>

 <li><em>No context exists for path /foo</em>

-    <blockquote>             

     <p>There is no deployed application on the context path

-    that you specified.</p>  

-    </blockquote></li>       

+    that you specified.</p>

+    </li>

 <li><em>No context path was specified</em>

-    <blockquote>             

+    <p>

     The <code>path</code> parameter is required.

-    </blockquote></li>       

+    </p>

+</li>

 </ul>

 

 </blockquote></td></tr></table>

@@ -177,90 +244,79 @@
 </p>

 

 <p>If this command succeeds, you will see a Message like this:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

 OK - Reloaded application at context path /examples

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 

 <p>Otherwise, the Message will start with <code>FAIL</code> and include an

 error message.  Possible causes for problems include:</p>

 <ul>

 <li><em>Encountered exception</em>

-    <blockquote>             

     <p>An exception was encountered trying to restart the web application.

-    Check the Tomcat 6 logs for the details.</p>

-    </blockquote></li>       

+    Check the Tomcat logs for the details.</p>

+    </li>

 <li><em>Invalid context path was specified</em>

-    <blockquote>             

     <p>The context path must start with a slash character, unless you are

     referencing the ROOT web application -- in which case the context path

     must be a zero-length string.</p>

-    </blockquote></li>       

+    </li>

 <li><em>No context exists for path /foo</em>

-    <blockquote>             

     <p>There is no deployed application on the context path

-    that you specified.</p>  

-    </blockquote></li>       

+    that you specified.</p>

+    </li>

 <li><em>No context path was specified</em>

-    <blockquote>             

-    The <code>path</code> parameter is required.

-    </blockquote></li>       

+    <p>The <code>path</code> parameter is required.</p>

+    </li>

 <li><em>Reload not supported on WAR deployed at path /foo</em>

-    <blockquote>             

-    Currently, application reloading (to pick up changes to the classes or

+    <p>Currently, application reloading (to pick up changes to the classes or

     <code>web.xml</code> file) is not supported when a web application is

-    installed directly from a WAR file, which happens when the host is 

-    configured to not unpack WAR files. As it only works when the web 

-    application is installed from an unpacked directory, if you are using 

-    a WAR file, you should <code>undeploy</code> and then <code>deploy</code> 

-    the application again to pick up your changes.

-    </blockquote></li>       

+    installed directly from a WAR file, which happens when the host is

+    configured to not unpack WAR files. As it only works when the web

+    application is installed from an unpacked directory, if you are using

+    a WAR file, you should <code>undeploy</code> and then <code>deploy</code>

+    the application again to pick up your changes.</p>

+    </li>

 </ul>

 

 </blockquote></td></tr></table>

 

 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Undeploy"><strong>Undeploy</strong></a></font></td></tr><tr><td><blockquote>

 

-<p><strong><font color="red">WARNING</font> - This command will delete the

+<p><strong><span style="color: red;">WARNING</span> - This command will delete the

 contents of the web application directory and/or ".war" file if it exists within

 the <code>appBase</code> directory (typically "webapps") for this virtual host

 </strong>.  The web application temporary work directory is also deleted.  If

 you simply want to take an application out of service, you should use the

 <code>/stop</code> command instead.</p>

-                             

+

 <p>Signal an existing application to gracefully shut itself down, and then

 remove it from Tomcat (which also makes this context path available for

 reuse later).  This command is the logical opposite of the

-<code>/deploy</code> Ant command, and the related deploy features available 

+<code>/deploy</code> Ant command, and the related deploy features available

 in the HTML manager.</p>

-                             

+

 <p>If this command succeeds, you will see a Message like this:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-OK - Undeployed application at context path /examples

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-                             

+<div class="codeBox"><pre><code>OK - Undeployed application at context path /examples</code></pre></div>

+

 <p>Otherwise, the Message will start with <code>FAIL</code> and include an

 error message.  Possible causes for problems include:</p>

-<ul>                         

+<ul>

 <li><em>Encountered exception</em>

-    <blockquote>             

     <p>An exception was encountered trying to undeploy the web application.

     Check the Tomcat logs for the details.</p>

-    </blockquote></li>       

+    </li>

 <li><em>Invalid context path was specified</em>

-    <blockquote>             

     <p>The context path must start with a slash character, unless you are

     referencing the ROOT web application -- in which case the context path

     must be a zero-length string.</p>

-    </blockquote></li>       

+    </li>

 <li><em>No context exists for path /foo</em>

-    <blockquote>             

     <p>There is no deployed application on the context path

-    that you specified.</p>  

-    </blockquote></li>       

+    that you specified.</p>

+    </li>

 <li><em>No context path was specified</em>

-    <blockquote>             

     The <code>path</code> parameter is required.

-    </blockquote></li>       

+    </li>

 </ul>

 

 </blockquote></td></tr></table>

@@ -283,7 +339,7 @@
 

 <p>There are a number of different ways the deploy command can be used.</p>

 

-<h3>Deploy a Directory or WAR by URL</h3>

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deploy a Directory or WAR by URL"><!--()--></a><a name="Deploy_a_Directory_or_WAR_by_URL"><strong>Deploy a Directory or WAR by URL</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>Install a web application directory or ".war" file located on the Tomcat

 server. If no <i>Context Path</i> is specified, the directory name or the

@@ -297,10 +353,9 @@
 <p>In this example the web application located in the directory

 <code>C:\path\to\foo</code> on the Tomcat server (running on Windows)

 is deployed as the web application context named <code>/footoo</code>.</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-Context Path: /footoo

+<div class="codeBox"><pre><code>Context Path: /footoo

 WAR or Directory URL: file:C:/path/to/foo

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 

 

 <p>In this example the ".war" file <code>/path/to/bar.war</code> on the

@@ -308,12 +363,11 @@
 context named <code>/bar</code>. Notice that there is no <code>path</code>

 parameter so the context path defaults to the name of the web application

 archive file without the ".war" extension.</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-WAR or Directory URL: jar:file:/path/to/bar.war!/

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>WAR or Directory URL: jar:file:/path/to/bar.war!/</code></pre></div>

 

+</blockquote></td></tr></table>

 

-<h3>Deploy a Directory or War from the Host appBase</h3>

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deploy a Directory or War from the Host appBase"><!--()--></a><a name="Deploy_a_Directory_or_War_from_the_Host_appBase"><strong>Deploy a Directory or War from the Host appBase</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>Install a web application directory or ".war" file located in your Host

 appBase directory. If no <i>Context Path</i> is specified the directory name

@@ -324,21 +378,18 @@
 deployed as the web application context named <code>/foo</code>. Notice

 that there is no <code>path</code> parameter so the context path defaults

 to the name of the web application directory.</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-WAR or Directory URL: foo

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>WAR or Directory URL: foo</code></pre></div>

 

 

 <p>In this example the ".war" file <code>bar.war</code> located in your

 Host appBase directory on the Tomcat server is deployed as the web

 application context named <code>/bartoo</code>.</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-Context Path: /bartoo

-WAR or Directory URL: bar.war

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>Context Path: /bartoo

+WAR or Directory URL: bar.war</code></pre></div>

 

+</blockquote></td></tr></table>

 

-<h3>Deploy using a Context configuration ".xml" file</h3>

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deploy using a Context configuration %22.xml%22 file"><!--()--></a><a name="Deploy_using_a_Context_configuration_%22.xml%22_file"><strong>Deploy using a Context configuration ".xml" file</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>If the Host deployXML flag is set to true, you can install a web

 application using a Context configuration ".xml" file and an optional

@@ -350,15 +401,8 @@
 web application Context just as if it were configured in your

 Tomcat <code>server.xml</code> configuration file. Here is an

 example for Tomcat running on Windows:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;Context path="/foobar" docBase="C:\path\to\application\foobar"&gt;

-

-  &lt;!-- Link to the user database we will get roles from --&gt;

-  &lt;ResourceLink name="users" global="UserDatabase"

-                type="org.apache.catalina.UserDatabase"/&gt;

-

-&lt;/Context&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>&lt;Context path="/foobar" docBase="C:\path\to\application\foobar"&gt;

+&lt;/Context&gt;</code></pre></div>

 

 

 <p>Use of the <i>WAR or Directory URL</i> is optional. When used

@@ -367,20 +411,16 @@
 

 <p>Here is an example of installing an application using a Context

 configuration ".xml" file for Tomcat running on Windows.</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-XML Configuration file URL: file:C:/path/to/context.xml

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>XML Configuration file URL: file:C:/path/to/context.xml</code></pre></div>

 

 

 <p>Here is an example of installing an application using a Context

 configuration ".xml" file and a web application ".war" file located

 on the server (Tomcat running on Unix).</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-XML Configuration file URL: file:/path/to/context.xml

-WAR or Directory URL: jar:file:/path/to/bar.war!/

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>XML Configuration file URL: file:/path/to/context.xml

+WAR or Directory URL: jar:file:/path/to/bar.war!/</code></pre></div>

 

-

+</blockquote></td></tr></table>

 </blockquote></td></tr></table>

 

 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Upload a WAR file to install"><!--()--></a><a name="Upload_a_WAR_file_to_install"><strong>Upload a WAR file to install</strong></a></font></td></tr><tr><td><blockquote>

@@ -392,33 +432,29 @@
 <p>Use the <i>Browse</i> button to select a WAR file to upload to the

 server from your local desktop system.</p>

 

-<p>The .WAR file may include Tomcat specific deployment configuration, by 

-including a Context configuration XML file in 

+<p>The .WAR file may include Tomcat specific deployment configuration, by

+including a Context configuration XML file in

 <code>/META-INF/context.xml</code>.</p>

 

 <p>Upload of a WAR file could fail for the following reasons:</p>

 <ul>

 <li><em>File uploaded must be a .war</em>

-    <blockquote>

     <p>The upload install will only accept files which have the filename

     extension of ".war".</p>

-    </blockquote></li>

+    </li>

 <li><em>War file already exists on server</em>

-    <blockquote>

     <p>If a war file of the same name already exists in your Host's

     appBase the upload will fail. Either undeploy the existing war file

     from your Host's appBase or upload the new war file using a different

     name.</p>

-    </blockquote></li>

+    </li>

 <li><em>File upload failed, no file</em>

-    <blockquote>

     <p>The file upload failed, no file was received by the server.</p>

-    </blockquote></li>

+    </li>

 <li><em>Install Upload Failed, Exception:</em>

-    <blockquote>

     <p>The war file upload or install failed with a Java Exception.

     The exception message will be listed.</p>

-    </blockquote></li>

+    </li>

 </ul>

 

 </blockquote></td></tr></table>

@@ -430,9 +466,9 @@
 directory.</p>

 

 <p>If the application war or directory is deployed in your Host appBase

-directory and either the Host is configured with autoDeploy=true or

-liveDeploy=true, the Context path must match the directory name or

-war file name without the ".war" extension.</p>

+directory and either the Host is configured with autoDeploy=true the Context

+path must match the directory name or war file name without the ".war"

+extension.</p>

 

 <p>For security when untrusted users can manage web applications, the

 Host deployXML flag can be set to false.  This prevents untrusted users

@@ -446,62 +482,54 @@
 

 <p>If deployment and startup is successful, you will receive a Message

 like this:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-OK - Deployed application at context path /foo

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>OK - Deployed application at context path /foo</code></pre></div>

 

 <p>Otherwise, the Message will start with <code>FAIL</code> and include an

 error message.  Possible causes for problems include:</p>

 <ul>

 <li><em>Application already exists at path /foo</em>

-    <blockquote>

     <p>The context paths for all currently running web applications must be

     unique.  Therefore, you must either undeploy the existing web

     application using this context path, or choose a different context path

     for the new one.</p>

-    </blockquote></li>

+    </li>

 <li><em>Document base does not exist or is not a readable directory</em>

-    <blockquote>

     <p>The URL specified by the <i>WAR or Directory URL:</i> field must

     identify a directory on this server that contains the "unpacked" version

     of a web application, or the absolute URL of a web application archive

     (WAR) file that contains this application.  Correct the value entered for

     the <i>WAR or Directory URL:</i> field.</p>

-    </blockquote></li>

+    </li>

 <li><em>Encountered exception</em>

-    <blockquote>

     <p>An exception was encountered trying to start the new web application.

-    Check the Tomcat 6 logs for the details, but likely explanations include

+    Check the Tomcat logs for the details, but likely explanations include

     problems parsing your <code>/WEB-INF/web.xml</code> file, or missing

     classes encountered when initializing application event listeners and

     filters.</p>

-    </blockquote></li>

+    </li>

 <li><em>Invalid application URL was specified</em>

-    <blockquote>

     <p>The URL for the <i>WAR or Directory URL:</i> field that you specified

     was not valid.  Such URLs must start with <code>file:</code>, and URLs

     for a WAR file must end in ".war".</p>

-    </blockquote></li>

+    </li>

 <li><em>Invalid context path was specified</em>

-    <blockquote>

     <p>The context path must start with a slash character, unless you are

     referencing the ROOT web application -- in which case the context path

     must be a "/" string.</p>

-    </blockquote></li>

+    </li>

 <li><em>Context path must match the directory or WAR file name:</em>

-    <blockquote>

-    If the application war or directory is deployed in your Host appBase

-    directory and either the Host is configured with autoDeploy=true or

-    liveDeploy=true, the Context path must match the directory name or

-    war file name without the ".war" extension.

-    </blockquote></li>

+    <p>If the application war or directory is deployed in your Host appBase

+    directory and either the Host is configured with autoDeploy=true the Context

+    path must match the directory name or war file name without the ".war"

+    extension.</p>

+    </li>

 <li><em>Only web applications in the Host web application directory can

      be deployed</em>

-     <blockquote>

+     <p>

      If the Host deployXML flag is set to false this error will happen

      if an attempt is made to install a web application directory or

       ".war" file outside of the Host appBase directory.

-     </blockquote></li>

+     </p></li>

 </ul>

 

 </blockquote></td></tr></table>

@@ -533,10 +561,37 @@
 </blockquote></td></tr></table>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Server Information"><!--()--></a><a name="Server_Information"><strong>Server Information</strong></a></font></td></tr><tr><td><blockquote>

 

-<p>This section displays information about Tomcat, the operating system of

-the server Tomcat is hosted on, and the Java Virtual Machine Tomcat is

-running in.</p>

+<p>This section displays information about Tomcat, the operating system of the

+server Tomcat is hosted on, the Java Virtual Machine Tomcat is running in, the

+primary host name of the server (may not be the host name used to access Tomcat)

+and the primary IP address of the server (may not be the IP address used to

+access Tomcat).</p>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/html-manager-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/images/asf-logo.gif b/tomcat-uid/webapps/docs/images/asf-logo.gif
deleted file mode 100644
index 22eb9d7..0000000
--- a/tomcat-uid/webapps/docs/images/asf-logo.gif
+++ /dev/null
Binary files differ
diff --git a/tomcat-uid/webapps/docs/images/asf-logo.svg b/tomcat-uid/webapps/docs/images/asf-logo.svg
new file mode 100644
index 0000000..eaf91df
--- /dev/null
+++ b/tomcat-uid/webapps/docs/images/asf-logo.svg
@@ -0,0 +1,210 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->

+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

+<svg version="1.1" id="Layer_2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"

+	 viewBox="0 0 7127.6 2890" enable-background="new 0 0 7127.6 2890" xml:space="preserve">

+<path fill="#6D6E71" d="M7104.7,847.8c15.3,15.3,22.9,33.7,22.9,55.2c0,21.5-7.6,39.9-22.9,55.4c-15.3,15.4-33.8,23.1-55.6,23.1

+	c-21.8,0-40.2-7.6-55.4-22.9c-15.1-15.3-22.7-33.7-22.7-55.2c0-21.5,7.6-39.9,22.9-55.4c15.3-15.4,33.7-23.1,55.4-23.1

+	C7070.9,824.9,7089.4,832.5,7104.7,847.8z M7098.1,951.9c13.3-13.6,20-29.8,20-48.7s-6.6-35-19.8-48.5

+	c-13.2-13.4-29.4-20.1-48.6-20.1c-19.2,0-35.4,6.7-48.7,20.2c-13.3,13.5-19.9,29.7-19.9,48.7c0,19,6.6,35.2,19.7,48.6

+	c13.1,13.4,29.3,20.1,48.5,20.1S7084.7,965.4,7098.1,951.9z M7087.1,888.1c0,14-6.1,22.8-18.4,26.4l22.5,30.5h-18.2l-20.3-28.3

+	h-18.6v28.3h-14.7v-84.6h31.8c12.8,0,22,2.2,27.6,6.6C7084.4,871.4,7087.1,878.4,7087.1,888.1z M7068.2,900c3-2.4,4.4-6.5,4.4-12

+	c0-5.5-1.5-9.4-4.5-11.6c-3-2.2-8.4-3.2-16-3.2h-18v30.5h17.5C7059.7,903.6,7065.3,902.4,7068.2,900z"/>

+<path fill="#6D6E71" d="M1803.6,499.8v155.4h-20V499.8h-56.8v-19.2h133.9v19.2H1803.6z"/>

+<path fill="#6D6E71" d="M2082.2,655.2v-76.9h-105.2v76.9h-20V480.5h20v78.9h105.2v-78.9h20v174.7H2082.2z"/>

+<path fill="#6D6E71" d="M2241.4,499.8v57.4h88.1v19.2h-88.1v59.8h101.8v19h-121.8V480.5H2340v19.2H2241.4z"/>

+<path fill="#D22128" d="M1574.5,1852.4l417.3-997.6h80.1l417.3,997.6h-105.4l-129.3-311.9h-448.2l-127.9,311.9H1574.5z M2032.6,970

+	l-205.1,493.2h404.7L2032.6,970z"/>

+<path fill="#D22128" d="M2596.9,1852.4V854.8H3010c171.4,0,295.1,158.8,295.1,313.3c0,163-115.2,316.1-286.6,316.1h-324.6v368.1

+	H2596.9z M2693.9,1397.1h318.9c118,0,193.9-108.2,193.9-229c0-125.1-92.7-226.2-202.3-226.2h-310.5V1397.1z"/>

+<path fill="#D22128" d="M3250.5,1852.4l417.3-997.6h80.1l417.3,997.6h-105.4l-129.3-311.9h-448.2l-127.9,311.9H3250.5z M3708.6,970

+	l-205.1,493.2h404.7L3708.6,970z"/>

+<path fill="#D22128" d="M4637.3,849.1c177,0,306.3,89.9,368.1,217.8l-78.7,47.8c-63.2-132.1-186.9-177-295.1-177

+	c-238.9,0-369.5,213.6-369.5,414.5c0,220.6,161.6,420.1,373.7,420.1c112.4,0,244.5-56.2,307.7-185.5l81.5,42.1

+	c-64.6,148.9-241.7,231.8-394.8,231.8c-274,0-466.5-261.3-466.5-514.2C4163.8,1106.3,4336.6,849.1,4637.3,849.1z"/>

+<path fill="#D22128" d="M5949.1,854.8v997.6h-98.4v-466.5h-591.5v466.5h-96.9V854.8h96.9v444h591.5v-444H5949.1z"/>

+<path fill="#D22128" d="M6844.6,1765.2v87.1h-670.2V854.8H6832v87.1h-560.6v359.7h489v82.9h-489v380.8H6844.6z"/>

+<path fill="#6D6E71" d="M1667.6,2063.6c11.8,3.5,22.2,8.3,31,14.2l-10.3,22.6c-9-6-18.6-10.4-28.9-13.4c-10.2-2.9-20-4.4-29.2-4.4

+	c-13.6,0-24.5,2.4-32.6,7.3c-8.1,4.9-12.2,11.8-12.2,20.7c0,7.6,2.3,14,6.8,19c4.5,5,10.2,8.9,17,11.7c6.8,2.8,16.1,6,28,9.6

+	c14.4,4.6,26,8.9,34.7,12.9c8.8,4,16.3,9.9,22.5,17.8c6.2,7.8,9.3,18.2,9.3,31c0,11.7-3.2,21.8-9.5,30.6

+	c-6.3,8.7-15.3,15.5-26.8,20.3c-11.6,4.8-24.9,7.2-40,7.2c-15.1,0-29.7-2.9-43.9-8.7c-14.2-5.8-26.4-13.6-36.6-23.4l10.7-21.6

+	c9.6,9.4,20.7,16.7,33.3,21.9c12.6,5.2,24.8,7.8,36.8,7.8c15.3,0,27.3-3,36.1-8.9c8.8-5.9,13.2-13.9,13.2-23.9

+	c0-7.8-2.3-14.3-6.9-19.4c-4.6-5.1-10.3-9-17.1-11.9c-6.8-2.8-16.1-6-28-9.6c-14.2-4.2-25.7-8.3-34.6-12.2

+	c-8.9-3.9-16.4-9.7-22.5-17.5c-6.1-7.7-9.2-17.9-9.2-30.6c0-10.9,3-20.4,9-28.6c6-8.2,14.6-14.6,25.6-19.1

+	c11.1-4.5,23.8-6.8,38.2-6.8C1643.8,2058.3,1655.7,2060.1,1667.6,2063.6z"/>

+<path fill="#6D6E71" d="M1980.1,2072.8c16.8,9.4,30.2,22.3,40,38.4c9.8,16.2,14.8,33.9,14.8,53.3c0,19.5-4.9,37.4-14.8,53.6

+	c-9.8,16.3-23.2,29.1-40,38.6c-16.8,9.5-35.3,14.3-55.2,14.3c-20.3,0-38.8-4.7-55.7-14.3c-16.8-9.5-30.2-22.4-40-38.6

+	c-9.8-16.3-14.8-34.1-14.8-53.6c0-19.5,4.9-37.3,14.8-53.5c9.8-16.2,23.2-29,40-38.3c16.8-9.4,35.4-14,55.7-14

+	C1944.8,2058.6,1963.2,2063.3,1980.1,2072.8z M1881.9,2092.7c-13.1,7.4-23.6,17.5-31.4,30.1c-7.8,12.6-11.8,26.5-11.8,41.7

+	c0,15.3,3.9,29.3,11.8,42c7.8,12.7,18.3,22.8,31.4,30.2c13.1,7.4,27.4,11.1,42.9,11.1c15.5,0,29.7-3.7,42.7-11.1

+	c13-7.4,23.3-17.4,31.1-30.2c7.7-12.7,11.6-26.7,11.6-42s-3.9-29.2-11.6-41.8c-7.7-12.6-18.1-22.6-31.1-30

+	c-13-7.4-27.2-11.2-42.6-11.2C1909.4,2081.5,1895.1,2085.2,1881.9,2092.7z"/>

+<path fill="#6D6E71" d="M2186.5,2082.4v74h98.4v23.2h-98.4v90.2h-24.1v-210.6h133.8v23.2H2186.5z"/>

+<path fill="#6D6E71" d="M2491.6,2082.4v187.4h-24.1v-187.4h-68.4v-23.2h161.4v23.2H2491.6z"/>

+<path fill="#6D6E71" d="M2871.8,2269.8l-56.8-177.4l-57.6,177.4h-24.5l-70.5-210.6h25.9l57.9,182.7l57.1-182.4l24.1-0.3l57.7,182.7

+	l57.1-182.7h25l-70.6,210.6H2871.8z"/>

+<path fill="#6D6E71" d="M3087.3,2216.6l-23.5,53.2h-25.6l94.4-210.6h25l94.1,210.6h-26.1l-23.5-53.2H3087.3z M3144.5,2086.6

+	l-46.9,106.8h94.4L3144.5,2086.6z"/>

+<path fill="#6D6E71" d="M3461.1,2202.7c-6,0.4-10.7,0.6-14.1,0.6h-56v66.5H3367v-210.6h80c26.2,0,46.6,6.2,61.2,18.5

+	c14.5,12.3,21.8,29.8,21.8,52.3c0,17.2-4.1,31.7-12.2,43.3c-8.1,11.6-19.8,20-35,25l49.2,71.5h-27.3L3461.1,2202.7z M3491.3,2167.6

+	c10.3-8.4,15.5-20.8,15.5-37c0-15.9-5.2-27.9-15.5-36c-10.3-8.1-25.1-12.2-44.3-12.2h-56v97.8h56

+	C3466.2,2180.2,3481,2176,3491.3,2167.6z"/>

+<path fill="#6D6E71" d="M3688.3,2082.4v69.2h106.2v23.2h-106.2v72.1h122.8v22.9h-146.9v-210.6h142.9v23.2H3688.3z"/>

+<path fill="#6D6E71" d="M4147,2082.4v74h98.4v23.2H4147v90.2h-24.1v-210.6h133.8v23.2H4147z"/>

+<path fill="#6D6E71" d="M4523.3,2072.8c16.8,9.4,30.2,22.3,40,38.4c9.8,16.2,14.8,33.9,14.8,53.3c0,19.5-4.9,37.4-14.8,53.6

+	c-9.8,16.3-23.2,29.1-40,38.6c-16.8,9.5-35.3,14.3-55.2,14.3c-20.3,0-38.8-4.7-55.7-14.3c-16.8-9.5-30.2-22.4-40-38.6

+	c-9.8-16.3-14.8-34.1-14.8-53.6c0-19.5,4.9-37.3,14.8-53.5c9.8-16.2,23.2-29,40-38.3c16.8-9.4,35.4-14,55.7-14

+	C4488.1,2058.6,4506.5,2063.3,4523.3,2072.8z M4425.2,2092.7c-13.1,7.4-23.6,17.5-31.4,30.1c-7.8,12.6-11.8,26.5-11.8,41.7

+	c0,15.3,3.9,29.3,11.8,42c7.8,12.7,18.3,22.8,31.4,30.2c13.1,7.4,27.4,11.1,42.9,11.1c15.5,0,29.7-3.7,42.7-11.1

+	c13-7.4,23.3-17.4,31.1-30.2c7.7-12.7,11.6-26.7,11.6-42s-3.9-29.2-11.6-41.8c-7.7-12.6-18.1-22.6-31.1-30

+	c-13-7.4-27.2-11.2-42.6-11.2C4452.6,2081.5,4438.3,2085.2,4425.2,2092.7z"/>

+<path fill="#6D6E71" d="M4854.7,2247.7c-15.7,15.5-37.3,23.3-64.8,23.3c-27.7,0-49.4-7.8-65.1-23.3c-15.7-15.5-23.6-37-23.6-64.6

+	v-124h24.1v124c0,20.3,5.8,36.1,17.3,47.5c11.6,11.4,27.3,17.1,47.3,17.1c20.1,0,35.8-5.7,47.1-17c11.4-11.3,17-27.2,17-47.7v-124

+	h24.1v124C4878.2,2210.7,4870.4,2232.2,4854.7,2247.7z"/>

+<path fill="#6D6E71" d="M5169.5,2269.8l-126.3-169.1v169.1h-24.1v-210.6h25l126.3,169.3v-169.3h23.8v210.6H5169.5z"/>

+<path fill="#6D6E71" d="M5478.4,2073.1c16.4,9.3,29.4,21.9,38.9,37.9c9.6,16,14.3,33.9,14.3,53.5s-4.8,37.6-14.3,53.6

+	c-9.5,16.1-22.6,28.7-39.3,37.9c-16.6,9.2-35.2,13.8-55.5,13.8h-84.3v-210.6h85.2C5443.7,2059.2,5462,2063.8,5478.4,2073.1z

+	 M5362.3,2246.9h61.4c15.5,0,29.6-3.5,42.3-10.6c12.7-7.1,22.8-16.9,30.2-29.5c7.4-12.5,11.1-26.5,11.1-42

+	c0-15.5-3.8-29.4-11.3-41.9c-7.5-12.5-17.7-22.3-30.6-29.6c-12.8-7.2-27-10.9-42.6-10.9h-60.5V2246.9z"/>

+<path fill="#6D6E71" d="M5668.6,2216.6l-23.5,53.2h-25.6l94.4-210.6h25l94.1,210.6H5807l-23.5-53.2H5668.6z M5725.8,2086.6

+	l-46.9,106.8h94.4L5725.8,2086.6z"/>

+<path fill="#6D6E71" d="M5991,2082.4v187.4H5967v-187.4h-68.4v-23.2h161.4v23.2H5991z"/>

+<path fill="#6D6E71" d="M6175.9,2269.8v-210.6h24.1v210.6H6175.9z"/>

+<path fill="#6D6E71" d="M6493.7,2072.8c16.8,9.4,30.2,22.3,40,38.4c9.8,16.2,14.8,33.9,14.8,53.3c0,19.5-4.9,37.4-14.8,53.6

+	c-9.8,16.3-23.2,29.1-40,38.6c-16.8,9.5-35.3,14.3-55.2,14.3c-20.3,0-38.8-4.7-55.7-14.3c-16.8-9.5-30.2-22.4-40-38.6

+	c-9.8-16.3-14.8-34.1-14.8-53.6c0-19.5,4.9-37.3,14.8-53.5c9.8-16.2,23.2-29,40-38.3c16.8-9.4,35.4-14,55.7-14

+	C6458.5,2058.6,6476.9,2063.3,6493.7,2072.8z M6395.6,2092.7c-13.1,7.4-23.6,17.5-31.4,30.1c-7.8,12.6-11.8,26.5-11.8,41.7

+	c0,15.3,3.9,29.3,11.8,42c7.8,12.7,18.3,22.8,31.4,30.2c13.1,7.4,27.4,11.1,42.9,11.1c15.5,0,29.7-3.7,42.7-11.1

+	c13-7.4,23.3-17.4,31.1-30.2c7.7-12.7,11.6-26.7,11.6-42s-3.9-29.2-11.6-41.8c-7.7-12.6-18.1-22.6-31.1-30

+	c-13-7.4-27.2-11.2-42.6-11.2C6423,2081.5,6408.8,2085.2,6395.6,2092.7z"/>

+<path fill="#6D6E71" d="M6826.5,2269.8l-126.3-169.1v169.1h-24.1v-210.6h25l126.3,169.3v-169.3h23.8v210.6H6826.5z"/>

+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-4516.6152" y1="-2338.7222" x2="-4108.4111" y2="-1861.3982" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">

+	<stop  offset="0" style="stop-color:#F69923"/>

+	<stop  offset="0.3123" style="stop-color:#F79A23"/>

+	<stop  offset="0.8383" style="stop-color:#E97826"/>

+</linearGradient>

+<path fill="url(#SVGID_1_)" d="M1230.1,13.7c-45.3,26.8-120.6,102.5-210.5,212.3l82.6,155.9c58-82.9,116.9-157.5,176.3-221.2

+	c4.6-5.1,7-7.5,7-7.5c-2.3,2.5-4.6,5-7,7.5c-19.2,21.2-77.5,89.2-165.5,224.4c84.7-4.2,214.9-21.6,321.1-39.7

+	c31.6-177-31-258-31-258S1323.4-41.4,1230.1,13.7z"/>

+<path fill="none" d="M1090.2,903.1c0.6-0.1,1.2-0.2,1.8-0.3l-11.9,1.3c-0.7,0.3-1.4,0.7-2.1,1

+	C1082.1,904.4,1086.2,903.7,1090.2,903.1z"/>

+<path fill="none" d="M1005.9,1182.3c-6.7,1.5-13.7,2.7-20.7,3.7C992.3,1185,999.2,1183.8,1005.9,1182.3z"/>

+<path fill="none" d="M432.9,1808.8c0.9-2.3,1.8-4.7,2.6-7c18.2-48,36.2-94.7,54-140.1c20-51,39.8-100.4,59.3-148.3

+	c20.6-50.4,40.9-99.2,60.9-146.3c21-49.4,41.7-97,62-142.8c16.5-37.3,32.8-73.4,48.9-108.3c5.4-11.7,10.7-23.2,16-34.6

+	c10.5-22.7,21-44.8,31.3-66.5c9.5-20,19-39.6,28.3-58.8c3.1-6.4,6.2-12.8,9.3-19.1c0.5-1,1-2,1.5-3.1l-10.2,1.1l-8-15.9

+	c-0.8,1.6-1.6,3.1-2.4,4.6c-14.5,28.8-28.9,57.9-43.1,87.2c-8.2,16.9-16.4,34-24.6,51c-22.6,47.4-44.8,95.2-66.6,143.3

+	c-22.1,48.6-43.7,97.5-64.9,146.5c-20.8,48.1-41.3,96.2-61.2,144.2c-20,48-39.5,95.7-58.5,143.2c-19.9,49.5-39.2,98.7-58,147.2

+	c-4.2,10.9-8.5,21.9-12.7,32.8c-15,39.2-29.7,77.8-44,116l12.7,25.1l11.4-1.2c0.4-1.1,0.8-2.3,1.3-3.4

+	C396.7,1905.4,414.9,1856.4,432.9,1808.8z"/>

+<path fill="none" d="M980,1186.8L980,1186.8c0.1,0,0.1,0,0.1-0.1C980.1,1186.8,980.1,1186.8,980,1186.8z"/>

+<path fill="#BE202E" d="M952.6,1323c-10.6,1.9-21.4,3.8-32.5,5.7c-0.1,0-0.1,0.1-0.2,0.1c5.6-0.8,11.2-1.7,16.6-2.6

+	C942,1325.2,947.3,1324.1,952.6,1323z"/>

+<path opacity="0.35" fill="#BE202E" d="M952.6,1323c-10.6,1.9-21.4,3.8-32.5,5.7c-0.1,0-0.1,0.1-0.2,0.1c5.6-0.8,11.2-1.7,16.6-2.6

+	C942,1325.2,947.3,1324.1,952.6,1323z"/>

+<path fill="#BE202E" d="M980.3,1186.7C980.2,1186.7,980.2,1186.7,980.3,1186.7c-0.1,0.1-0.2,0.1-0.2,0.1c1.8-0.2,3.5-0.5,5.2-0.8

+	c7-1,13.9-2.2,20.7-3.7C997.5,1183.8,989,1185.2,980.3,1186.7L980.3,1186.7L980.3,1186.7z"/>

+<path opacity="0.35" fill="#BE202E" d="M980.3,1186.7C980.2,1186.7,980.2,1186.7,980.3,1186.7c-0.1,0.1-0.2,0.1-0.2,0.1

+	c1.8-0.2,3.5-0.5,5.2-0.8c7-1,13.9-2.2,20.7-3.7C997.5,1183.8,989,1185.2,980.3,1186.7L980.3,1186.7L980.3,1186.7z"/>

+<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-7537.7339" y1="-2391.4075" x2="-4625.4141" y2="-2391.4075" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">

+	<stop  offset="0.3233" style="stop-color:#9E2064"/>

+	<stop  offset="0.6302" style="stop-color:#C92037"/>

+	<stop  offset="0.7514" style="stop-color:#CD2335"/>

+	<stop  offset="1" style="stop-color:#E97826"/>

+</linearGradient>

+<path fill="url(#SVGID_2_)" d="M858.6,784.7c25.1-46.9,50.5-92.8,76.2-137.4c26.7-46.4,53.7-91.3,80.9-134.7

+	c1.6-2.6,3.2-5.2,4.8-7.7c27-42.7,54.2-83.7,81.6-122.9L1019.5,226c-6.2,7.6-12.5,15.3-18.8,23.2c-23.8,29.7-48.6,61.6-73.9,95.5

+	c-28.6,38.2-58,78.9-87.8,121.7c-27.6,39.5-55.5,80.9-83.5,123.7c-23.8,36.5-47.7,74-71.4,112.5c-0.9,1.4-1.8,2.9-2.6,4.3

+	l107.5,212.3C811.8,873.6,835.1,828.7,858.6,784.7z"/>

+<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="-7186.1777" y1="-2099.3059" x2="-5450.7183" y2="-2099.3059" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">

+	<stop  offset="0" style="stop-color:#282662"/>

+	<stop  offset="9.548390e-02" style="stop-color:#662E8D"/>

+	<stop  offset="0.7882" style="stop-color:#9F2064"/>

+	<stop  offset="0.9487" style="stop-color:#CD2032"/>

+</linearGradient>

+<path fill="url(#SVGID_3_)" d="M369,1981c-14.2,39.1-28.5,78.9-42.9,119.6c-0.2,0.6-0.4,1.2-0.6,1.8c-2,5.7-4.1,11.5-6.1,17.2

+	c-9.7,27.4-18,52.1-37.3,108.2c31.7,14.5,57.1,52.5,81.1,95.6c-2.6-44.7-21-86.6-56.2-119.1c156.1,7,290.6-32.4,360.1-146.6

+	c6.2-10.2,11.9-20.9,17-32.2c-31.6,40.1-70.8,57.1-144.5,53c-0.2,0.1-0.3,0.1-0.5,0.2c0.2-0.1,0.3-0.1,0.5-0.2

+	c108.6-48.6,163.1-95.3,211.2-172.6c11.4-18.3,22.5-38.4,33.8-60.6c-94.9,97.5-205,125.3-320.9,104.2l-86.9,9.5

+	C374.4,1966.3,371.7,1973.6,369,1981z"/>

+<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="-7374.1626" y1="-2418.5454" x2="-4461.8428" y2="-2418.5454" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">

+	<stop  offset="0.3233" style="stop-color:#9E2064"/>

+	<stop  offset="0.6302" style="stop-color:#C92037"/>

+	<stop  offset="0.7514" style="stop-color:#CD2335"/>

+	<stop  offset="1" style="stop-color:#E97826"/>

+</linearGradient>

+<path fill="url(#SVGID_4_)" d="M409.6,1786.3c18.8-48.5,38.1-97.7,58-147.2c19-47.4,38.5-95.2,58.5-143.2

+	c20-48,40.4-96.1,61.2-144.2c21.2-49,42.9-97.8,64.9-146.5c21.8-48.1,44-95.9,66.6-143.3c8.1-17.1,16.3-34.1,24.6-51

+	c14.2-29.3,28.6-58.4,43.1-87.2c0.8-1.6,1.6-3.1,2.4-4.6L681.4,706.8c-1.8,2.9-3.5,5.8-5.3,8.6c-25.1,40.9-50,82.7-74.4,125.4

+	c-24.7,43.1-49,87.1-72.7,131.7c-20,37.6-39.6,75.6-58.6,113.9c-3.8,7.8-7.6,15.5-11.3,23.2c-23.4,48.2-44.6,94.8-63.7,139.5

+	c-21.7,50.7-40.7,99.2-57.5,145.1c-11,30.2-21,59.4-30.1,87.4c-7.5,24-14.7,47.9-21.5,71.8c-16,56.3-29.9,112.4-41.2,168.3

+	L353,1935.1c14.3-38.1,28.9-76.8,44-116C401.1,1808.2,405.4,1797.3,409.6,1786.3z"/>

+<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="-7161.7642" y1="-2379.1431" x2="-5631.2524" y2="-2379.1431" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">

+	<stop  offset="0" style="stop-color:#282662"/>

+	<stop  offset="9.548390e-02" style="stop-color:#662E8D"/>

+	<stop  offset="0.7882" style="stop-color:#9F2064"/>

+	<stop  offset="0.9487" style="stop-color:#CD2032"/>

+</linearGradient>

+<path fill="url(#SVGID_5_)" d="M243.5,1729.4c-13.6,68.2-23.2,136.2-28,203.8c-0.2,2.4-0.4,4.7-0.5,7.1

+	c-33.7-54-124-106.8-123.8-106.2c64.6,93.7,113.7,186.7,120.9,278c-34.6,7.1-82-3.2-136.8-23.3c57.1,52.5,100,67,116.7,70.9

+	c-52.5,3.3-107.1,39.3-162.1,80.8c80.5-32.8,145.5-45.8,192.1-35.3C148.1,2414.2,74.1,2645,0,2890c22.7-6.7,36.2-21.9,43.9-42.6

+	c13.2-44.4,100.8-335.6,238-718.2c3.9-10.9,7.8-21.8,11.8-32.9c1.1-3,2.2-6.1,3.3-9.2c14.5-40.1,29.5-81.1,45.1-122.9

+	c3.5-9.5,7.1-19,10.7-28.6c0.1-0.2,0.1-0.4,0.2-0.6l-107.9-213.2C244.6,1724.4,244,1726.9,243.5,1729.4z"/>

+<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="-7374.1626" y1="-2117.1309" x2="-4461.8428" y2="-2117.1309" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">

+	<stop  offset="0.3233" style="stop-color:#9E2064"/>

+	<stop  offset="0.6302" style="stop-color:#C92037"/>

+	<stop  offset="0.7514" style="stop-color:#CD2335"/>

+	<stop  offset="1" style="stop-color:#E97826"/>

+</linearGradient>

+<path fill="url(#SVGID_6_)" d="M805.6,937c-3.1,6.3-6.2,12.7-9.3,19.1c-9.3,19.2-18.8,38.8-28.3,58.8

+	c-10.3,21.7-20.7,43.9-31.3,66.5c-5.3,11.4-10.6,22.9-16,34.6c-16.1,35-32.4,71.1-48.9,108.3c-20.3,45.8-41,93.4-62,142.8

+	c-20,47.1-40.3,95.9-60.9,146.3c-19.5,47.9-39.3,97.3-59.3,148.3c-17.8,45.4-35.9,92.1-54,140.1c-0.9,2.3-1.8,4.7-2.6,7

+	c-18,47.6-36.2,96.6-54.6,146.8c-0.4,1.1-0.8,2.3-1.3,3.4l86.9-9.5c-1.7-0.3-3.5-0.5-5.2-0.9c103.9-13,242.1-90.6,331.4-186.5

+	c41.1-44.2,78.5-96.3,113-157.3c25.7-45.4,49.8-95.8,72.8-151.5c20.1-48.7,39.4-101.4,58-158.6c-23.9,12.6-51.2,21.8-81.4,28.2

+	c-5.3,1.1-10.7,2.2-16.1,3.1c-5.5,1-11,1.8-16.6,2.6l0,0l0,0c0.1,0,0.1-0.1,0.2-0.1c96.9-37.3,158-109.2,202.4-197.4

+	c-25.5,17.4-66.9,40.1-116.6,51.1c-6.7,1.5-13.7,2.7-20.7,3.7c-1.7,0.3-3.5,0.6-5.2,0.8l0,0l0,0c0.1,0,0.1,0,0.1-0.1

+	c0,0,0.1,0,0.1,0l0,0c33.6-14.1,62-29.8,86.6-48.4c5.3-4,10.4-8.1,15.3-12.3c7.5-6.5,14.7-13.3,21.5-20.5c4.4-4.6,8.6-9.3,12.7-14.2

+	c9.6-11.5,18.7-23.9,27.1-37.3c2.6-4.1,5.1-8.3,7.6-12.6c3.2-6.2,6.3-12.3,9.3-18.3c13.5-27.2,24.4-51.5,33-72.8

+	c4.3-10.6,8.1-20.5,11.3-29.7c1.3-3.7,2.5-7.2,3.7-10.6c3.4-10.2,6.2-19.3,8.4-27.3c3.3-12,5.3-21.5,6.4-28.4l0,0l0,0

+	c-3.3,2.6-7.1,5.2-11.3,7.7c-29.3,17.5-79.5,33.4-119.9,40.8l79.8-8.8l-79.8,8.8c-0.6,0.1-1.2,0.2-1.8,0.3c-4,0.7-8.1,1.3-12.2,2

+	c0.7-0.3,1.4-0.7,2.1-1l-273,29.9C806.6,935,806.1,936,805.6,937z"/>

+<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="-7554.8232" y1="-2132.0981" x2="-4642.5034" y2="-2132.0981" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">

+	<stop  offset="0.3233" style="stop-color:#9E2064"/>

+	<stop  offset="0.6302" style="stop-color:#C92037"/>

+	<stop  offset="0.7514" style="stop-color:#CD2335"/>

+	<stop  offset="1" style="stop-color:#E97826"/>

+</linearGradient>

+<path fill="url(#SVGID_7_)" d="M1112.9,385.1c-24.3,37.3-50.8,79.6-79.4,127.5c-1.5,2.5-3,5.1-4.5,7.6

+	c-24.6,41.5-50.8,87.1-78.3,137c-23.8,43.1-48.5,89.3-74.3,139c-22.4,43.3-45.6,89.2-69.4,137.8l273-29.9

+	c79.5-36.6,115.1-69.7,149.6-117.6c9.2-13.2,18.4-27,27.5-41.3c28-43.8,55.6-92,80.1-139.9c23.7-46.3,44.7-92.2,60.7-133.5

+	c10.2-26.3,18.4-50.8,24.1-72.3c5-19,8.9-36.9,11.9-54.1C1327.9,363.5,1197.6,380.9,1112.9,385.1z"/>

+<path fill="#BE202E" d="M936.5,1326.1c-5.5,1-11,1.8-16.6,2.6l0,0C925.5,1328,931,1327.1,936.5,1326.1z"/>

+<path opacity="0.35" fill="#BE202E" d="M936.5,1326.1c-5.5,1-11,1.8-16.6,2.6l0,0C925.5,1328,931,1327.1,936.5,1326.1z"/>

+<linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="-7374.1626" y1="-2027.484" x2="-4461.8433" y2="-2027.484" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">

+	<stop  offset="0.3233" style="stop-color:#9E2064"/>

+	<stop  offset="0.6302" style="stop-color:#C92037"/>

+	<stop  offset="0.7514" style="stop-color:#CD2335"/>

+	<stop  offset="1" style="stop-color:#E97826"/>

+</linearGradient>

+<path fill="url(#SVGID_8_)" d="M936.5,1326.1c-5.5,1-11,1.8-16.6,2.6l0,0C925.5,1328,931,1327.1,936.5,1326.1z"/>

+<path fill="#BE202E" d="M980,1186.8c1.8-0.2,3.5-0.5,5.2-0.8C983.5,1186.3,981.8,1186.6,980,1186.8L980,1186.8z"/>

+<path opacity="0.35" fill="#BE202E" d="M980,1186.8c1.8-0.2,3.5-0.5,5.2-0.8C983.5,1186.3,981.8,1186.6,980,1186.8L980,1186.8z"/>

+<linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="-7374.1626" y1="-2037.7417" x2="-4461.8433" y2="-2037.7417" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">

+	<stop  offset="0.3233" style="stop-color:#9E2064"/>

+	<stop  offset="0.6302" style="stop-color:#C92037"/>

+	<stop  offset="0.7514" style="stop-color:#CD2335"/>

+	<stop  offset="1" style="stop-color:#E97826"/>

+</linearGradient>

+<path fill="url(#SVGID_9_)" d="M980,1186.8c1.8-0.2,3.5-0.5,5.2-0.8C983.5,1186.3,981.8,1186.6,980,1186.8L980,1186.8z"/>

+<path fill="#BE202E" d="M980.2,1186.7C980.2,1186.7,980.2,1186.7,980.2,1186.7L980.2,1186.7L980.2,1186.7L980.2,1186.7

+	C980.2,1186.7,980.2,1186.7,980.2,1186.7z"/>

+<path opacity="0.35" fill="#BE202E" d="M980.2,1186.7C980.2,1186.7,980.2,1186.7,980.2,1186.7L980.2,1186.7L980.2,1186.7

+	L980.2,1186.7C980.2,1186.7,980.2,1186.7,980.2,1186.7z"/>

+<linearGradient id="SVGID_10_" gradientUnits="userSpaceOnUse" x1="-5738.0635" y1="-2039.799" x2="-5094.3457" y2="-2039.799" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">

+	<stop  offset="0.3233" style="stop-color:#9E2064"/>

+	<stop  offset="0.6302" style="stop-color:#C92037"/>

+	<stop  offset="0.7514" style="stop-color:#CD2335"/>

+	<stop  offset="1" style="stop-color:#E97826"/>

+</linearGradient>

+<path fill="url(#SVGID_10_)" d="M980.2,1186.7C980.2,1186.7,980.2,1186.7,980.2,1186.7L980.2,1186.7L980.2,1186.7L980.2,1186.7

+	C980.2,1186.7,980.2,1186.7,980.2,1186.7z"/>

+</svg>

diff --git a/tomcat-uid/webapps/docs/images/cors-flowchart.png b/tomcat-uid/webapps/docs/images/cors-flowchart.png
new file mode 100644
index 0000000..9abb09d
--- /dev/null
+++ b/tomcat-uid/webapps/docs/images/cors-flowchart.png
Binary files differ
diff --git a/tomcat-uid/webapps/docs/images/tomcat.gif b/tomcat-uid/webapps/docs/images/tomcat.gif
index 6175673..f2aa6f8 100644
--- a/tomcat-uid/webapps/docs/images/tomcat.gif
+++ b/tomcat-uid/webapps/docs/images/tomcat.gif
Binary files differ
diff --git a/tomcat-uid/webapps/docs/images/tomcat.png b/tomcat-uid/webapps/docs/images/tomcat.png
new file mode 100644
index 0000000..209b07f
--- /dev/null
+++ b/tomcat-uid/webapps/docs/images/tomcat.png
Binary files differ
diff --git a/tomcat-uid/webapps/docs/images/tomcat.svg b/tomcat-uid/webapps/docs/images/tomcat.svg
index dbccdaf..3636850 100644
--- a/tomcat-uid/webapps/docs/images/tomcat.svg
+++ b/tomcat-uid/webapps/docs/images/tomcat.svg
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>

+<?xml version="1.0" encoding="UTF-8" standalone="no"?>

 <!--

   Licensed to the Apache Software Foundation (ASF) under one or more

   contributor license agreements.  See the NOTICE file distributed with

@@ -16,150 +16,516 @@
   limitations under the License.

 -->

 <!-- Generator: Adobe Illustrator 11 Build 196, SVG Export Plug-In . SVG Version: 6.0.0 Build 78)  -->

-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"    "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" [

-	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">

-	<!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">

-	<!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">

-	<!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">

-	<!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">

-	<!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">

-	<!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">

-	<!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">

-	<!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">

-	<!ENTITY ns_svg "http://www.w3.org/2000/svg">

-	<!ENTITY ns_xlink "http://www.w3.org/1999/xlink">

-]>

-<svg 

-	 xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;" i:viewOrigin="176.7139 486.707" i:rulerOrigin="-156 -296" i:pageBounds="156 496 456 296"

-	 xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"

-	 width="260.162" height="184.413" viewBox="0 0 260.162 184.413" overflow="visible" enable-background="new 0 0 260.162 184.413"

-	 xml:space="preserve">

-	<metadata>

-		<variableSets  xmlns="&ns_vars;">

-			<variableSet  varSetName="binding1" locked="none">

-				<variables></variables>

-				<v:sampleDataSets  xmlns="&ns_custom;" xmlns:v="&ns_vars;"></v:sampleDataSets>

-			</variableSet>

-		</variableSets>

-		<sfw  xmlns="&ns_sfw;">

-			<slices></slices>

-			<sliceSourceBounds  y="302.294" x="176.714" width="260.162" height="184.413" bottomLeftOrigin="true"></sliceSourceBounds>

-		</sfw>

-<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?><x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 3.0-29, framework 1.6'>

-<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>

+<svg:svg

+   xmlns:xapGImg="http://ns.adobe.com/xap/1.0/g/img/"

+   xmlns:xap="http://ns.adobe.com/xap/1.0/"

+   xmlns:ns0="http://ns.adobe.com/SaveForWeb/1.0/"

+   xmlns:ns="http://ns.adobe.com/Variables/1.0/"

+   xmlns:i="http://ns.adobe.com/AdobeIllustrator/10.0/"

+   xmlns:x="adobe:ns:meta/"

+   xmlns:dc="http://purl.org/dc/elements/1.1/"

+   xmlns:cc="http://creativecommons.org/ns#"

+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

+   xmlns:svg="http://www.w3.org/2000/svg"

+   xmlns:xlink="http://www.w3.org/1999/xlink"

+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"

+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"

+   i:viewOrigin="176.7139 486.707"

+   i:rulerOrigin="-156 -296"

+   i:pageBounds="156 496 456 296"

+   width="260.162"

+   height="184.413"

+   viewBox="0 0 260.162 184.413"

+   overflow="visible"

+   enable-background="new 0 0 260.162 184.413"

+   xml:space="preserve"

+   id="svg2"

+   sodipodi:version="0.32"

+   inkscape:version="0.46"

+   sodipodi:docname="tomcat.svg"

+   inkscape:output_extension="org.inkscape.output.svg.inkscape"><svg:defs

+   id="defs59"><inkscape:perspective

+     sodipodi:type="inkscape:persp3d"

+     inkscape:vp_x="0 : 92.206497 : 1"

+     inkscape:vp_y="0 : 1000 : 0"

+     inkscape:vp_z="260.16199 : 92.206497 : 1"

+     inkscape:persp3d-origin="130.08099 : 61.470998 : 1"

+     id="perspective63" /></svg:defs><sodipodi:namedview

+   inkscape:window-height="725"

+   inkscape:window-width="1051"

+   inkscape:pageshadow="2"

+   inkscape:pageopacity="0.0"

+   guidetolerance="10.0"

+   gridtolerance="10.0"

+   objecttolerance="10.0"

+   borderopacity="1.0"

+   bordercolor="#666666"

+   pagecolor="#ffffff"

+   id="base"

+   showgrid="false"

+   inkscape:zoom="2.1025362"

+   inkscape:cx="130.08099"

+   inkscape:cy="91.968689"

+   inkscape:window-x="35"

+   inkscape:window-y="192"

+   inkscape:current-layer="svg2" />

+    <svg:metadata

+   id="metadata4">

+        <ns:variableSets>

+            <ns:variableSet

+   varSetName="binding1"

+   locked="none">

+                <ns:variables />

+                <ns:sampleDataSets />

+            </ns:variableSet>

+        </ns:variableSets>

+        <ns0:sfw>

+            <ns0:slices />

+            <ns0:sliceSourceBounds

+   y="302.294"

+   x="176.714"

+   width="260.162"

+   height="184.413"

+   bottomLeftOrigin="true" />

+        </ns0:sfw>

+<xpacket /><x:xmpmeta

+   x:xmptk="XMP toolkit 3.0-29, framework 1.6">

 

- <rdf:Description rdf:about=''

-  xmlns:pdf='http://ns.adobe.com/pdf/1.3/'>

+<svg:metadata

+   id="metadata61"><rdf:RDF>

+

+ <rdf:Description

+   rdf:about="">

  </rdf:Description>

 

- <rdf:Description rdf:about=''

-  xmlns:tiff='http://ns.adobe.com/tiff/1.0/'>

+ <rdf:Description

+   rdf:about="">

  </rdf:Description>

 

- <rdf:Description rdf:about=''

-  xmlns:xap='http://ns.adobe.com/xap/1.0/'

-  xmlns:xapGImg='http://ns.adobe.com/xap/1.0/g/img/'>

+ <rdf:Description

+   rdf:about="">

   <xap:CreateDate>2006-05-09T08:17:21Z</xap:CreateDate>

   <xap:ModifyDate>2006-05-09T08:37:38Z</xap:ModifyDate>

   <xap:CreatorTool>Illustrator</xap:CreatorTool>

   <xap:Thumbnails>

    <rdf:Alt>

-    <rdf:li rdf:parseType='Resource'>

+    <rdf:li

+   rdf:parseType="Resource">

      <xapGImg:format>JPEG</xapGImg:format>

      <xapGImg:width>256</xapGImg:width>

      <xapGImg:height>184</xapGImg:height>

-     <xapGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA&#xA;AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK&#xA;DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f&#xA;Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAuAEAAwER&#xA;AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA&#xA;AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB&#xA;UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE&#xA;1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ&#xA;qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy&#xA;obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp&#xA;0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo&#xA;+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7&#xA;FXYq7FXYq7FXYq7FXYq7FXhH/OYHnWfQ/wAurfRLSUxXXmK49GQqaN9VtwJJqH3cxqfYnFXhP5Y/&#xA;85O+f/JU0enaw769okbBJLS8ZvrUKg0IhnarDj/I9R2HHFX2F+Xn5neT/P8ApP6R8u3glKAfW7KS&#xA;iXNuzdFljqaezCqnsTirK8VdirsVdirsVdirsVdirC/zM/Nvyd+XemC71255Xcqk2WmQUa5nI2+F&#xA;CRxUd3ag+nbFXx1+Zf8Azkn+YvneaW1tLh9C0NgwXTrB2V3Sm/rzji8m3UDitP2cVfV//OOfmabz&#xA;D+T3l+6uHMl1aRPYTsxqSbVzEhJ7kxKhxV6VirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd&#xA;irsVfHn/ADlxdSa7+bvlvyvGx4RW0EVARtNfXJVqf7BY+uRlKgT3JAt5r/zkD5ZGgfmfqSRR+nZ6&#xA;gsd9agdOMq0f/ksj5h9nZvEwgnmNi2Z4cMiw/wAqebPMHlTXLfW9BvHstQtjVZEPwstQWjkXo6NT&#xA;4lOxzOan3v8Akl+cel/mX5a+tAJa69ZcU1fTlJojGvGWLluYpKbV6GqmtKlV6NirsVdirsVdirsV&#xA;eWfnr+eGl/lroywwBLzzPfox02wJqqL0+sT03EanoOrnYdyFXwh5i8x655j1i41jW7yS+1K6blNc&#xA;SmpPgABQKo6BVFB2xVnf5Q+SjrWh+d9Yli5w6XolylsadbqSNnTj8kiYf7IZg6zUeHKERzlIfL8U&#xA;3YoWCe4Pff8AnCfVTN5D1zTCamz1P11HcLcQIAPlWE5nNL6KxV2KuxV2KuxV2KuxV2KuxV2KuxV2&#xA;KuxV2KuxV2KuxV2KvjD8wm/Sv/OX8UTGsdrqGnCMNUU+rW0Mp6f5ammY2sNYZ/1T9zZi+oe9m/8A&#xA;zkx+Xc/mPytFrunRepqehc3ljUVeS0cAyAU6mMqHA8OXfNB2PqhCfAeUvv8A2uZqcdix0fIedQ69&#xA;m35OefrryN+YOla2kpjsjKttqqDo9nMwEoI78ftr/lKMVfaeqf8AOSH5KaaSs3meCZx0W1inuanf&#xA;YNDG69vHFWM3v/OYn5QW5YQ/pK8ArQwWqitPD1pIuvviqVT/APObH5cKR6GjaxIP2i8dqhB9qTvi&#xA;qmP+c2fIFd9C1Wnfa2/6q4qmFv8A85n/AJUSvxksdZtx/NJb25H/ACTuHOKp3bf85XfkpPBI7avN&#xA;BIisywS2lwGcqCeIZUdKmm1WGKvijzz5x1bzl5q1HzFqjlrm+lLrHWqxRDaOFP8AJjSij7+uKpNb&#xA;W1xdXMVtbRtNcTuscMKAszu54qqgbkkmgwE1uVfbHkL8uk8o/lTPoMiK+o3drPNqZHRrieIhlr4I&#xA;tEB9q5yWo1fi6gS/hBFfN2UMfDAjqwT/AJwdvyt/5usC20sVlOq77em0yMR2/wB2Cudc619ZYq7F&#xA;XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXxZKTJ/zmFc+oedNTmA5b/ZtG49fCgpmH2h/&#xA;cS9zbh+sPqDrsc4t2r57/Nf/AJxkGo3c+teSTFb3ExMlxo0hEcTMdybd/spU/sN8PgQNs3+i7Xoc&#xA;OX5/rcLLpusWIaF/zif56vFWTVr6y0pG6xgtczL81QLH90mZWTtnFH6bk1x0sjz2Z1pf/OIvlOIL&#xA;+lNbvrthSv1dYrZSe+zC4ND88wp9uTP0xA9+/wCptGkHUsms/wDnGf8AKS3AEunT3dOpmupxXam/&#xA;pNFmPPtjOeRA+H67bBpoPDv+ch/yt03yXrdjeaFbG30HUouCQ8pJBFcQ0DqXkZ2+NSrCrfzeGbns&#xA;vWHNAiX1BxdRi4TtySH8jfJdn5u/MOy07UIfrGl28ct3fw1IDRxrxUEqQaGV0By7X6g4sRkOfRhh&#xA;hxSp9N3X/OO/5P3FSdBETGnxRXN0nT/JEvH8M50dq6gfxfYHOOnh3JDqP/OKn5a3NTazajYt+yIp&#xA;0dfpEsbn/hsvj21lHMRP497A6SPmwzW/+cQr9A76H5himO/CG9haL5AyxGT/AIhmXj7cifqiR7t/&#xA;1NUtIehZh+S3/OP8Xk+5GveYXivNfTkLSKIloLYGqlwzBecjL3p8P45i9odqeIOCH09fNtw6fh3P&#xA;N7DfIz2VwijkzRuFA6klTmpxmpD3uRLk+bf+cJrrj+Yet2tT+90hpeP7J9O5hWp9/wB5tneunfZm&#xA;KuxV2KuxV2KuxV2KuxVZLNFDG0srrHGu7O5CqB7k4qks3nzyNC5jm8xaZHIOqPeW6nf2L4qmFhrW&#xA;j6iK6ff294KVrbypLt1r8BPjirAvzb/Pnyf+WrW9rqKS6hq90vqRaba8eaxVp6krMQEUkEL1JPbq&#xA;cVYFof8Azmp5BupVj1fR9Q0wNsZo/SuY1/1qGN6fJDir2Xyf+Yfkrzjam48taxb6iqgGSKNisyA9&#xA;PUhcLKn+yXFWRYq7FXYq7FXxRrBNj/zl/NVwC+rL8XtcWw+Hf/jJTMXXC8M/6pbMP1h9SZxLtnYq&#xA;7FWG+afzg/LnyvdNZ6vrUSXqGj2sKvcSofB1hV+B/wBamZmHs/NkFxjt8mqWaMeZRPk78zvI/nF5&#xA;ItA1RLm5hHKS1dXhmC1pyEcoRmXputRkdRosuLeQ2TDLGXJCfm/5JXzj5D1HSo05X8a/WtNPcXMI&#xA;JUD/AFxVP9lk+z9R4WUE8jsWOaHFGnl3/OI/lpodN1zzFMlGuJUsLcsKELCPUlpXsWkQfNc2Xbmb&#xA;eMPj+r9LRpI8y+hc0DmuxV2KuxV2Kvl//nClHP5oas4B4Lok6luwLXdqQPpoc9AdK+08VdirsVdi&#xA;rsVdiqXeYPMOi+XtIudY1q7jsdNtF5z3EpooHQAd2ZjsqjcnYYq+VfPf/OV3nXzNqp0D8stPlto5&#xA;mMcF0IfrGoT+8UIDrGD8mbvVcVSqz/5xn/Pjzs66h5t1RbUueX+5W7kurgA/yxx+sq/6pZaeGKsj&#xA;h/5wanMYM3nNUk7qmml1/wCCN0n6sVQt7/zhDr8B56Z5stppEIMZntZLfcb1qkk9KHFXzr5mtdUs&#xA;tfv9O1S5a7vtOuJbKaZndwWt3MZ4mSjcartUDFUsxVFabqeo6XfQ3+m3UtlfW7c4Lq3dopUbxV1I&#xA;IxV9Sfkr/wA5aNcT2+gfmG6K8hWO18wqAi1OwF2q0Vf+Mi0H8w6tir6lVlZQykMrCqsNwQe4xVvF&#xA;XYq+Kfzzro3/ADlLa6oxKJLdaReFiaApGsMLeG1ISMqzw4sco94LKBogvqPOEdw7FXkf55/mBrlj&#xA;Jp3kbykX/wAVeYSFE0Zo8FuzFOSt+wzlW+P9lQx2NDm27N0sZXlyfRFxs+Qj0jmUd5B/IHyP5bsI&#xA;31Oyh1zWnAa6vb1BMnqHciKKSqKAehI5e+Q1XamTIfSeGPlzTj08YjfcsJ/PDy5pXkHX/LH5geW7&#xA;WPTGhvlt9Rt7RBFHKpBk+wgCjnGkiPQbg5m9m5jnhLFM3s1Z4iBEg+hOu4zn3NQOkaLpuj20ltp8&#xA;IghlnnunRe8tzK0sh/4JzQdhtlmXLKZuXdXyYxiByR2VsnYqxjV/zO/L3SJWh1DzDYQzoaPD66PI&#xA;p/ykQsw+kZlY9Dmnyifu+9qOWI6pvoOvaRr+kwato9yt3p1zz9C4UMob03MbbMFOzoR0ynLiljkY&#xA;yFEM4yBFhV1WVYdLvJWJCxwSOxHWioTjhFzA8wsuRfPn/OEVoX83eZLzekOnxQnpSsswb/mVneOn&#xA;fYOKuxV2KuxV2KqF9e2lhZT315KsFpaxtNcTuaKkcYLMzHwAFcVfFHnPzR50/wCchPzJi8veXlaH&#xA;y7aO5sYnqsUUCkK97dU/bYdB2qFXcklV9U/lj+UnlH8u9IWz0a2WS+dQL7VpVBuLhh1q37KV+yg2&#xA;Huakqs1xV2KuxV8v/nf/AM4patrnmG+80eSp4Xn1GR7m/wBIuW9ImdyWd4JSOH7xjUq9KGvxb0Cr&#xA;5/1j8mPzX0iRkvfKepgL9qSC3e5jG9P7yASJ1PjiqRjyb5vMvpDQ9QMtePpi1m5culKca1xVPtG/&#xA;JT82dYdUsvKepUf7MlxA1rGe395cekn44q+zf+cffKv5m+VvJ50bzvPbzRwFf0RFHK01xbxU+KCV&#xA;6cCqmnDizU3FaUAVeo4q7FXx5/zmxpD2vnTy7rcdUN5YPbh12POzmL1qO4FyuKsl/Lz/AJyc8ra2&#xA;sNj5mUaHqZAU3TGtnI3Qnn1ir1o/wj+bOY1XY8474/UO7r+1z8epB2Oz2iKWKaJJYnWSKQBkkQhl&#xA;ZTuCCNiDmnIINFygVGXTNOmvYb6W1hkvbbkLe6eNWljDgq3ByOS1UkGhwjJIDhs0ei0LtE5FLxD/&#xA;AJyycP5F0ezQcp59WjaNdt+NvMp/GQZuuxI/vJH+j+lxNWfSPe9rgiEMEcQNRGoQE9+IpmmlKyS5&#xA;QCpgSsllihieWVxHFGpeR2NFVVFSST0AGEAk0EEvn2fVfOv5269e6foN9Jof5e6fIYbm9QMst2af&#xA;ZIBUtyG4QkKqkFqmgzfiGLRQBkOLKfx+C4ZMspobRZzof/OOv5U6VCiyaUdSnUUa4vZZJGb5opSL&#xA;7kzBydrZ5HY8PuDbHTQDP9G0XStE02HTNJtks9Pt+Xo20Qoi83LtQe7MTmBkyynLikbJboxAFBJv&#xA;zO1Aaf8Al35lu60ZNNuljP8AlvEyJ/wzDL9FDizQH9IfYxymol59/wA4P6S0eg+adXI+G6ura0Vv&#xA;e2jeRgP+kkZ2zqX01irsVdirsVdir50/5zJ/MGbSfK1j5PspOFxrrGa/KmhFpAwon/PWWn0KR3xV&#xA;mf8Azjd+WEPkj8vrae5iA17XES91KQijorrWG333HpI24/mLYq9YxV2KuxV2KuxV2KuxV2KuxV2K&#xA;obUdT03TbR7zUbuGytI/7y4uJFijX5u5VRir5U/5yz/MX8tfNfl7S7DQtZh1LW9NvS5W2V3iFvJG&#xA;yyUnC+kfjVPsscVSv8i/yi/LTzn5Ij1XVLSafU4J5rW9C3EkaFlIdCFQrT926980XaOuy4cnDGqI&#xA;vk5eDDGQsvdvKXkby35StXtdBgmtrZ6Vge6uZ4wf5ljmkkRCe5UCuaPPqp5Tc9/gHLhjEeSN8x3+&#xA;o6foGoX2m2hv9QtoJJbWyFazSKpKxjjv8R22yOCEZTAkaBZTJAsPHv8AlcP53/8Altpv+BuP+ac3&#xA;H8n6X/VPti4vjZP5rzz8wfPP5i+bfNvluw1Dyq1rqWjzG+g0ROZmuRVZDVGHPjxgbcDpXNhpdNiw&#xA;wkYy9Mutj8dWnJOUiAQ9D/5XD+d//ltpv+BuP+ac1/8AJ+l/1T7Yt3jZP5rv+Vw/nf8A+W2m/wCB&#xA;uP8AmnH+T9L/AKp9sV8bJ/NYp+ZX5v8A5qXnli40LVfKbaCutAWkdyxlWRwWXnHGrheRdfhI8DmV&#xA;pNBgE+KMuLh9zXkzTIoirR/kbzf+bvlHy1Y+XtO/LedobYENM6zK0kjtyeRzxoOTH6BtkNTp9Plm&#xA;ZyyfaEwnOIoRej+RPO35o6xr62fmPyf+hdNMTub71C1HWnFaV/azX6rS4IQuE+KXds348kyaIZ7q&#xA;jaqthKdKSCS/pSBbp3jhr4uY1kbbwA38Rmux8PF6r4fJuldbPlv8+YvzstdPS483apafoO7nEEVh&#xA;pcjJbl6NIA0bKkjgenWsnKhpnTdnHTH+7HqHfz+f6nAz8f8AFyfQ3/OLHl06N+TWkyOnCfVpJ9Rm&#xA;Hj6r+nEfphiQ5t3GeuYq7FXYq7FXYq+MfzQhXzz/AM5YWmgz1lsLe7sbB4zvW3gRbi5TvSrNLir7&#xA;OxV2KuxV2KuxV2KuxV2KuxV5j59/5yM/K7yb6kFxqQ1TU0qP0dpvG4cMO0kgIij36hn5e2KvAvMv&#xA;/OWP5p+arl9P8laWukxtXiYIzfXvHpUuy+mg+UdR/NkJ5IwFyIA80xiSaDF/+VT/AJo+b7sah5w1&#xA;h1kavx3sz3k617KgYoo9uYp4ZptR7QYIbRuZ8uXzP7XMx6GcuezJYf8AnH3yrBptwjXFxd6g8LrB&#xA;NIwSNJSpCOEQA7NvRmOak+0eQzGwjCxfU11/FOT/ACfEDnZYH+S+sfmZZeajoHlC8htrq6ZnubC/&#xA;K/VnMAPLkrAtyUdfT+Kg8BnSa7HhMOLINg6/CZA1F9k6KdbOmw/pxbZdTp/pH1IyNAW8U9UK9Pnn&#xA;I5eDi9F8PnzdlG63R2VsmndUUu5CooJZiaAAdSTiBaHhP5N8/On5r+bPzEkBbT7dv0do7EGhWgUM&#xA;tRswgjUsP+LM3vaH7nBDCOZ5/j3/AHOJh9UzJ7vmicx2KvEf+clQLS78i63cEjT9O1cC6O3H4mjl&#xA;FR/qwPm77G3GSPUj9f63E1XQvbQQQCDUHoc0jlN4pSXzN5z8q+V7ZLjX9Tg0+OSvpLK37x+PXhGv&#xA;J3pXfiMuw6bJlNQFsJ5BHmXzJ+dn5haf+Z/mby75e8qtLPbLN6EbyI0YluruRI0oh+KigChIHU50&#xA;/ZmilhieL6i4GoyiZ2fbWh6Ra6Noun6PaClpp1tFaW4/4rgQRr+C5s3HR2KuxV2KuxV2KvjfymCP&#xA;+c0p/rdK/pTU+POlKfUp/S/4144q+yMVdirsVdirsVdirsVeQfmX/wA5Ofl55MaaxtZv0/rcdVNl&#xA;ZMDEj+E1x8SL4ELyYdxir5W/Mf8A5yD/ADJ88GSC6vjpmjyVC6VYFoYmQ1FJXr6kte/I8fADFXme&#xA;Kvpj8jdTtb3yJBFFGkdxYyyW9zwVU5MDzRzTqSjipPU1zhvaDHKOosk8Mht5d/6/i7rQSBh5h6Fm&#xA;ic12Kvnvz6l35B/Nqz8z2CEQyzLqMSqeIY143UVf8upr7Pnedl5RqdLwS5gcJ/R9n2uj1MPDyWPe&#xA;+wdL1Ky1TTbXUrGQTWd5Ek9vKOjJIoZT9xznMkDCRieYc2JsWisgyYZ+b1p5vvfIGqWPlSFZ9Tu0&#xA;9F1LiN/q77TelXYuV+EAkddt6A5vZ8sccoMzsPv6NOYSMdnzl+Wn5m/mVoKR+RtEtNLsrmGWSsOp&#xA;q1vM87t8Su8ssS+p0UKaGgAGdDqtHhyfvJ2fd3fBwseWUfSHq36V/wCcqf8AqzaN/wAGn/ZRms4N&#xA;B/OP2/qci83c79K/85U/9WbRv+DT/sox4NB/OP2/qW83c8o/Mj8z/wAy/MAm8i6zaaZfXU0sY9HT&#xA;Ea4lSdGqqxvFLKvqbFSBXqQc2el0eHH+8jY2693xcfJllL0l9KflXb+bbXyJpVp5riWLV7aIQsqu&#xA;JGMSbRGUio9ThQNQnx70znNccZyk4+R+9zsIkIi2W5iNqB1xdH/RF2+sxQy6XFE8t4tyiyRelGpZ&#xA;i6uCpAAyzFxcQ4D6ixlVb8nzj/zjB5UtfNn5xal5tisltNE0Rpbu1tEUCOOa6ZktYgBt+7j5tt3U&#xA;Z3UIkRAJt1BO77PySHYq7FXYq7FXYq+M/wAyX/wb/wA5b2WsP+7s7q90+7Zz8NILlEt7htqV3EmK&#xA;vszFXYq7FXYq7FWGfmR+bnkn8vrD6xr16PrkilrXS4KPdTdacY6jitRTmxC++Kvjz80/+clPPvnk&#xA;TWVq50Py45KfULRj6kqntcTjiz1H7K8V8QeuKsQ/KyLyvP5wtbTzFbC4trn91bc2IjW4JBj9QAjk&#xA;G+zQ7VIrmB2mcowE4jUh93Vv0wiZgS5Po7zD5J8ta/pa6bf2UfoQrxtWiAjeDbb0io+Hp06eIzht&#xA;N2jmwz4oyu+d7373dZNPCYoh8/effyj17yuZLu3B1DRgSRdRr8cS9f3yD7P+sPh+XTOz7P7Wxajb&#xA;6Z936u90+fSyx78wnP8Azj5r4s/M11o8jUi1OHlED/v63qwA+cbP92YvtDp+PCJjnA/Ydv1NugyV&#xA;Ou99C5xDuWDeefKvnzV9WiufL+v/AKKskt1jkt+Ui8pQ7sX+AEbqyj6M3XZ2t02LGRlhxyvnQO23&#xA;e4eow5JSuJoe8sD81/lL+ZF9pj3Go65Hq7WKPLBbMZGc7VZY+S9WC9O+bnSdsaQTEYQ4OLyAHxou&#xA;Jl0mWrJuvel/5Q/8rK80ySeXdA85S6P9Qh9W2spZ51RouXx+kEDD4CwqPfbvmz1pw4xxzhxX5Bxc&#xA;XFLYGnv35Y+RfzR0DXri881+af03p0lq8MVp6s0nGZpI2WSkiqNkRh9OaLW6rBkgBjjwm+4D7nMx&#xA;Y5g7m3p2axyGGfmF+U3k/wA82pGq23paii8bfVIAFuEpWgLU+NN/st9FDvmZpddkwnbePc1ZMMZ+&#xA;95R/iv8AMz8lbm20/wAzMPMvk2Z/Ssr5XpcIBvxXmSwKr/ut6r2Vxm28HDrAZQ9OTr+P0uNxzxbH&#xA;cNSeb/zJ/Om9uNM8pk+XPJ0Lelf6g7D13DD7L8DyJZf91oafzNTEYMOjAlP1ZOn7P1qZyymhsHrH&#xA;5d/lN5R8i2gXS7f1tRdaXGqTgNcPXqAeiJ/kr9NTvmq1euyZjvtHucjHhEPezPMJuePedvy3/OXV&#xA;fNF/qGg+c/0ZpM7KbWx9a4X0wI1VhxRSoqwJ2zc6fWaaMAJQuXuDizxZCbB2eNfm7F+Z3lQQaDr3&#xA;nKXV21SJmm0+GedgIQwCmVXC7OwIUd6HNtopYcvrhDhrrQcbKJR2JeieSv8AnHD8+9H0SJtG83Q+&#xA;XlvlS5udPinuonSR0Hwy+nHxLqPhO5zYtD2r8mvJH5m+V/0x/jjzN/iL659W/R/76eb0PS9X1f75&#xA;Vpz5p08MVel4q7FXYq7FXYq+Xv8AnNjya81joXnG3Sv1Vm0y/YCp4SEy25PgquJB82GKva/yY87J&#xA;5z/LXRNbaTneNALfUfEXVv8Au5SR25leY9mGKs2xV2KrZJI4o2kkYJGgLO7EBVUCpJJ6AYq+aPzm&#xA;/wCctrTTWn0L8vmjvL1ax3GvOA9vEehFsh2lYH9tvg8A1cVeMfl95AvPzCvLrzP5l1SW6iNwUueT&#xA;tJdTyqqsQ7tXgvFgPGmwp1zS9rdrflqjEXMj4OZpdL4m5Oz3O18seXrXSP0PDp0C6ZSjWhjVkb3c&#xA;NXk3ud842etzSyeIZHi73bDDAR4a2eaeb/yBsLlmvPK9x9QuQeX1OYs0JPX4JN3j/EfLN9ovaIj0&#xA;5hfmP0j9XycLNoBzh8noHku+1y50OKLXrV7XWLT9xeB6FZGUCkyOvwsHG549DUds03aOLHHJxYiD&#xA;jluPLy8v1OXp5SMakPUE9IBBBFQdiDmCDTe841/8pLaHW7bzL5U42OqWkyzvYfZt5+JqyrT+6LrV&#xA;f5fl1zoNL21xQOLPvGQri6j39/3+9wMujo8UOY6PSB06U9s54uewnzt5H8z69qsV5pXme60W3jgW&#xA;F7WAyhWcO7GQ+nLGKkMB07Zt9BrsGGBjkxiZvnt5d7iZ8M5m4ypj/wDyqbz9/wBT/f8A/BXP/ZRm&#xA;d/K+k/1CPyj+pp/K5f55+15z518keZ/y91G01W01SZ2nLiPVrYyW8qTMDzQurFgXQnfl8Qrm90Pa&#xA;GLVxIrl/CXCz4JYiHv8A+Qeia/NDH5tufO155k0u+s3gGm3Tzt9XufUjZuQkmlUPHwZdh0NQaHfV&#xA;9qTgP3YgIyB57bhv04PO7eyZp3KYZ+afm/zN5Z0KGby5okmtanezC1gVAXSF3UlXkRPjYbdqDxYd&#xA;83Q6eGWR45cIG7TmmYjYMC8p/kVrGu6ovmj81b1tV1Njyi0YODBEOoWQp8FB/vuP4fEtXM7P2nGE&#xA;eDAKHf8Aj7y1QwEm5orzX+Rd9pepP5n/ACuvm0HWlq0mlhqWc46lFBqqV/kYFP8AVyODtMSHBnHF&#xA;Hv8Ax9/NM8BBuGxZB+VP5j+ZPMs9/ovmbQJ9J13R1Q3s3ErbPzNEoGPJWehIA5KQKhu2Ua7RwxgT&#xA;hK4yZYcplsRuHo2a1yHh35u+SvN1nNrXnD/lYl/omiIFli0yB7gBSEVFiiC3EacpHGwAG5zd6HPi&#xA;lw4/DEpd+3z5OJmhIXLi2eW/lJ+UXnn829Svtdl1ue0XTjGo127MtzM9ytDHHG5dXrGg5E8vh+Hx&#xA;zo4QERQFBwSSeb2z/oXX86P/AC8Gq/8AI2+/7Kskh6L+UP5dedPJv6W/xN5wu/Nf1/6v9U+tvO/1&#xA;f0fV9Th68s3956i1pT7OKvRcVdirsVdirsVY/wCf/J9l5x8nar5bvKLFqMDRpKRX05R8UUlP8iRV&#xA;b6MVfLf/ADiz50vvJX5han+XXmGtsmoztDHE/SLU4Dw4jt++Qca9yEpir7ExVK/MnmbQvLOjXGs6&#xA;5eR2Om2q8pZ5TT5KoG7M3RVUVJ6Yq+M/zS/PHzr+bWrnyv5Vt5rPy67fDZoaS3CqaerduDRU/wAi&#xA;vEd+RplWbNDFEymaiGUIGRoc0Nc/846uugI1vqXPX1BaRGFLVtv7tTTmtP5z18BnOw9pInLRj+77&#xA;+vv/AB9rsD2eeHY+pV/Io6rofmDWPK2rwSWlzJEl3FBIKCsbem5UjZuYddxUHjke34xy4YZYGwDW&#xA;3n/YuhJjMxL2rOSdq7FXYq7FXYq7FXYq7FUt8w6Bp2v6Pc6VqCc7a5XiSPtIw3V0J6Mp3GZGl1M8&#xA;GQTjzH2+TXlxicaLxryB5w1r8nPPM+i63yl8v3rKbrgCVKE0ju4V8R0ZR13HUDO3ywx67CJw59P1&#xA;H8ebpgZYZ0X1xZXlpfWkN5ZyrPa3CLLBNGQyOjiqspHUEZzE4mJo8w54N7q2RS7FXYq73xVTuLi3&#xA;treS4uJFht4VMk00hCoiKKszMdgAOpwxiSaHNBNPlfzv5j8wfnh+Yll5O8qBhoVtKTFKwIQqvwzX&#xA;047IgNEB33p9p6Z13Z2iGGNn6zz/AFOtz5eM+T7B8j+TdG8m+V7Hy7o8fCzso+Jc/blkO8ksh7s7&#xA;bn7htTNi0J9irsVdirsVdirsVdirsVfLP/OXf5WXENxb/mXoKNHNCY4tbMNVdWQhbe7BG9RtGx/1&#xA;PfFWefl3/wA5I+VdQ/KqTzN5mu0ttV0YLbavarT1Z7gqfSaCPbl9YCkgdFIb9la4q+cvNPm3z/8A&#xA;nr5uCUNnolo1YLRSxtrOIkgSSdPUmYd+p7cV6Yms1mPTw4pn3DqW3FhlkNB695O8l6J5U00Wemx/&#xA;vHAN1duB6szDux8B2XoM4LXdoZNTK5cug7vx3u7w4I4xQT/MFvUJbGzluYbqSFGubfl6ExA5oHFG&#xA;AbrQjqMsjmkImIPplzDEwBIPUNahew2Nhc3s54wWsTzSt4JGpZj9wxw4zOYiP4iB81nLhBPc8w/J&#xA;Tzn5v8y3mqHV7oXFlaIhjHpojLJKxIAZQtQFQ9a50XbujwYYRMI8MifsH4DgaLNOZNmwHq+cy7F2&#xA;KuxV2KuxV2KuxVjXnzyLpnm/SDZ3P7m7hq9leAVaJyO/ijftL/EDNj2d2jLTTsbxPMfjq4+o04yD&#xA;zeb/AJZ/mj5g/KrXZPKnmyKSTQS9QFq5t+Z/v7c/txP1ZR8x8VQet1Gmx6vGMmM+r8bF1UJyxS4Z&#xA;PqrTNT0/VLCDUNOuI7qyuVDwXETBkZT3BGczkxygeGQohzgQRYRWRZOxVSurq2tLaW6upUgtoVLz&#xA;TSMEREUVLMxoABhjEyNDcoJp8v8A5n/mrr/5n65D5E8hQTTadcy+kxQcZL1lNeTV+xbpTl8VNvia&#xA;nTOp7O7OGL1S+v7v2uvz5+LYcn0j+SX5N6V+Wvlv6uCl1r96FfV9RUGjMKlYoq7iKOu38x+I+A2z&#xA;jPR8VdirsVdirsVdirsVdirsVSDz3rvlfQ/KWp6h5oaMaGsDx3kUgDCZJFK+iqEjm0leIXvir81d&#xA;SfTpdTupdPhkt9MedzawyMJJI4WYmNGeihmCbV74q+q/y8tfLEHlOyPlsV06VefqGnqvJ0czH/fl&#xA;RQ+HQbUzzrtWeY5z4v1D5V5eTv8ATCAgOFkma5yHYq7FWIfm3qBsfy81mRftSxLbge08ixN/wrHN&#xA;r2Jj4tVHys/Z+txdZKsZSD/nH3TRb+S5rwj4767kYH/IjVYwP+CDZm+0mQnNGPQR+/8AAauz4+gn&#xA;zenZzrnuxV2KuxV2KuxV2KuxVjnnbyLovm3Tfqt+np3MYJtL1APUiY+Feqn9pe/zocz9B2jk00rj&#xA;vHqPx1aM+njkG/N4/ovmf8xfyX1w2rr9b0W4fkbVyxtLgDq8T0Jikp12r4gimdkPA12PiHP7R7/x&#xA;7nUETwyovpX8vvzc8m+eLZf0ZdCDUgKzaVcEJcKR1KitJF/ykr70O2aHVaDJhO4uPf8Ajk5ePNGX&#xA;vTXzl578seTtMOoa9eLboa+hAPimmYfsxRjdj+A7kZVp9LPMaiP1Mp5BEbvmXzJ54/Mb87vMcflj&#xA;y1ZyQ6SzhksENFCKf96L2YbcV60+yDQAM1Cep0eghgF85d/6nX5cxn7n1H+S35IaB+Wmkkxlb3zD&#xA;eIo1LVGHyJhgrukQbfxbqewGe0vSsVdirsVdirsVdirsVdirsVQup6np+l6fc6jqNwlrY2kbTXNx&#xA;KeKJGgqzMfYYq+HfzQ/MTzL+dvnmHSNFR4PLtm7fo+2eoUIKh7y5pX42BoB+yPhG5JajU6mGGBnM&#xA;7BnjxmZoPQ4Pyv8AK8fk1vK5i5W8g5yXVAJjcU2nr/MO3am3TOGl2xmOfxfs6V3ft73dDSQ4OH7X&#xA;kehaz5g/KfzbLpWqK0+jXLB5VQfDJGaqlxDU7MKfEv0HsR0uowYu0MAlA+ocvI9x/HmHXY5ywTo8&#xA;n0Fp2o2OpWMN9YzLcWlwoeGZDUEH/Pcds4jNhljkYyFSDuYTEhY5KzTQoaPIqnwJAOCOOR3AKmQH&#xA;VyzQueKyKx8AQTiccgLIKiQPV5t/zkDctD5FijHS5voYm37BJJP1x5vPZwf4Qf6h+8OH2h/dj3p3&#xA;+UNt9X/LnRkoQXjklNRQ/vJnf9TbZjdtyvVT+H3Bs0Y/dBmOalynYq7FXYq7FXYq7FXYq7FUHq+j&#xA;6ZrFhLYanbJdWkwo8Tjb2II3Vh2I3GXYNRPFLigaLCeMSFF4R50/JTXdCnOq+VpJby1ib1FjjJF5&#xA;ARuCvGhenYr8Xt3zstB25jzenJ6Z/Yf1fF1OfRShvHcJFJ5F/M7zRY3PmTUI7m8eKMFHvZHa6mRe&#xA;0SvV2CjcdK/s1OZsu0NNimMVgHy5D39zQMGSQ4qfTP8AziV518hXnlX/AA3p1lBpPmi0XnqUIr6l&#xA;6F2+sq7lnfr8SV+A9AFIzYtD6BxV2KuxV2KuxV2KuxV2KuxV2KvjX/nI7847/wA+eYk/L/ye7XGj&#xA;QTiO4kgNRfXSnswNDBEeh6Egt0CnIZMkYRMpGgExiSaDJvy88h2PlDRRbJxl1G4o9/dAfbcDZVPX&#xA;gn7P3988/wC0+0Zamd8oDkP0+93um04xx82vOP5meVvKoMV7OZ7+lVsLejy+3PcKg/1j8q4dF2Tm&#xA;1G4HDDvP6O9c2qhj25l47r/mfzt+ak6aXovlxrmO3f1I47SF7meOuxLzAURT32UZ1/Z/ZcNNdEkn&#xA;n3fJ1OfUnJzDFvNXl7z35Lu/8P8AmCG60uQoLhbNpaxMsg+2nps0TVpQkHqKHcZseEXdbtFsbySH&#xA;Yqu9ST0/T5H068uFTx5UpWnjir2HyZ+T/wCfGr+U9O1/yreSS6VdKzWkEOo+iQI5HRlMcjxoPjjI&#xA;pXKMmmxT+qMT7wGcckhyJCOudA/5yq0IfvtM1G4VDuscNvqFadqwidj07HMXJ2Tpp84D4bfc2x1W&#xA;QdUvl/Oj8y9CmEPmHQ0iPQpc209pKT1/aNP+FzCyezunly4o/H9bbHX5Bzop1pv/ADkboslBqWkX&#xA;FsfG3dJx8/j9HNfl9mZfwTB94r9bkR7RHUMv0r82/wAvtSoserx28ndLoNb0/wBlIFT7mzWZuxdT&#xA;D+HiHlv9nP7HIhrMcutMst7i3uIlmt5Umib7MkbBlPyIqM1s8coGpAg+bkxkDuFTIJdirsVdirsV&#xA;dirH/PXm608q+XZ9Umo8391ZwH/dk7A8V+Qpyb2GZ/Z2iOoyiP8AD19zRqMwxxvq+cfL9n+Yf19/&#xA;Omi29ytzYytfnU41CgPyLOyhqCTqeSqDt1FM7+WoxYyIGQBOwDoxjlIE0+1/yK/O7S/zJ0IpP6dp&#xA;5nsVA1LT1OzrsPrEAO5jYncdVOx/ZJyGt6jirsVdirsVdirsVdirsVfO/wDzlT+dh8vaa/kfQJ6a&#xA;7qUf+5S4jPxWtrINoxTpJMD8wm/7SnFWA/k3+W48v6eNZ1OL/c1ep8EbDe3hbfhQ9Hbq3h08a8V2&#xA;52n4svCgfRHn5n9Q/HR3Gi03COI8yl/5qfm5LYTt5d8sP6mqM3pXd3GOZiY7elFStZa9T+z0+10v&#xA;7I7G4gMmUbdI/pP6mGr1demPzZX+UH/OJcl6I/MP5lNKZJj6sehB2EjV35XkoPKp68FNfFuq51wF&#xA;OqfT2j6Jo+i2Een6RZQafYxf3dtbRrFGPfigAqe5xVj35mflh5Y/MLy++k61CBKgLWGoIB69tKf2&#xA;o2PY0HJejD6CFXwV+Z35WeaPy715tL1qHlbyFmsNRjB9C4jBoGU/st/Mh3X5UJVYdirsVfb3/OHX&#xA;mKPUfyrfSS9Z9EvpovTrUiK4/wBIRvYM7yD6MVe7YqsmhhniaKaNZYnFHjcBlI8CDtirDde/JX8q&#xA;Ne5HUvK1g0j15zQRC1lJPcyW/pOT9OKvMfMn/OF/5eXwZ9D1K+0aY/ZRit3AP9g/CT/krirzTVv+&#xA;cTvzh8tSPdeVNVh1EDoLS4exuWp4rIVj/wCSpyGTHGYqQBHmmMiNwxq58/fnT5ImW382aVMYgeIO&#xA;oWzRch0pHcRhUfp1+LNVn7C02TcDhPl+rk5UNbkj1tlGgf8AOQHlS94x6rBNpUx6uR68P/BIOf8A&#xA;wmaPUezmWO+MiX2H9X2uZj7QifqFPRNK1vR9Wg9fTL2G9iHVoHV6V7NQ7H2OaTPpsmI1OJi5sMkZ&#xA;cjaNyhm7FXYqlGq+VNC1fULe91S2F69opW2hn+OFCxqzekfhLGg3avTbMzDrsuKBhA8N8yOfz/U0&#xA;zwRlKzumyqqqFUAKBQKNgAO2YhJJttp84edta0nyl+Y0Gu+Qr/0NQtH9W4WAfuI5wfiRSDxdJBUO&#xA;lOPUd6D0PsqWc4R4w36d5Hm6HUiAn6H2P+TH5xaN+ZXlwXcIW11u0ATVdM5VMbnpJHXcxP8Asnt0&#xA;PTNk470PFXYq7FXYq7FXYqwf84fzP078uvJtxrU/GXUJawaTZMf765YbVA34IPic+G3UjFXyR+U/&#xA;lPUvNnmK589+ZXa65XDzRPKB/pF2Wq0h7cIz0AFK7D7NM5/tztLwo+HA+uXPyH6z+OjnaLT8R4jy&#xA;DOPzf89t5Y8v+hZScdX1HlHbEdY0A/eS/MVovufbNJ2J2f4+TikPRD7T3fr/AGubrM/BGhzKf/8A&#xA;OK/5HQWtjb/mF5ltxLqV3+90K2mBPoxHpdMD1kk6x+C/F1O3dukfTGKuxV2KpL5v8neXfN+hz6J5&#xA;gs0vLCffi2zxuPsyROPiR17EfqxV8N/nR/zj/wCZfy5umvYeep+VpXpb6mq/FFyPwx3Kj7Ddg32W&#xA;7UO2KvKcVeu/84z/AJoQeRvPwi1KX0tC11Vs7+RjRIpA1YJ29kZipJ6KxPbFX3sCCKjcHocVbxV2&#xA;KuxV2Kqc9vBcQvBcRrNDIOMkUihlYHsVNQcVeX+cP+cZ/wAovM3OQ6QNIvH/AOPrSmFsQf8AjDRo&#xA;D/yLrirw/wA0f84fef8AQZ21DyRrKal6dTHEWNhejwVH5GJvmXT5ZGURIURYSCRyYf8A8rL/ADW8&#xA;jXo03zjpUslK8Y7+JreVlXasU6rxdf8AKo3zzT6rsHBk3j6D5cvl+qnLx62cee7P/LX5zeSdbKxS&#xA;XJ0y7bb0byiKT/kygmP5VIPtnO6rsLPi3iOOPlz+X6rc/HrYS57FnSsrKGUhlIqCNwRmmIINFywW&#xA;8CWLebfLnmTzCG0+PVV0jRm2n+rK0lzOpG6s7FFjXtRa17nembXRavBp/VwmeTz2A93P5uLmxTnt&#xA;dRSjR/yO8g6cVea2l1GVTUPdyEiv+pH6aEfMHL83tBqJ/TUfcP12whocY57sS80+XfMH5YeaLfz3&#xA;5JdorSKStxbAExxBz8UUigjlbydP8n58Tm97H7WGccE/7wf7L9vf8/dhavS8BsfT9z6x/Kf81NB/&#xA;MbyzHq2nEQXsVI9U0xmDSW03genJHpVHpuPAggb1wmbYq7FXYq7FVK6ure0tprq5lWG2gRpZ5nIV&#xA;ERByZmJ2AAFTir4W89eZtV/PD81xHas8Xlyw5RWXb0bJGHqTsDt6s7U/4Vei1zE12rjp8Rmfh5lt&#xA;w4jOVB7Zp2n2enWMFjZxiG1tkWKGMdAqig655xmyyyTM5G5F6CEREUOTxPS9Gb81/wA/YNJlLNo1&#xA;tMUuKbUsrEky0I6es9QD25jPQ+zNL4OCMevM+8/inQ6nJxzJfdcUUUUSRRIscUahY41AVVVRQAAb&#xA;AAZntC/FXYq7FXYqo3dnaXtrLaXkKXFrOpjnglUOjowoVZWqCD74q+T/AM7f+cTri0a48wfl7E09&#xA;pvJdeX6lpY+5NqTu6/8AFZ+Ifs16BV8xyRyRSNHIpSRCVdGBDBgaEEHoRiqLv9b1nUEjS/v7m7SF&#xA;VjhWeV5QiIOKqocmgUbADFU/8k/mp588l38N1oOrzwxREcrCR2ktJFH7MkDHgRTaoow7EYq/Qb8v&#xA;POFv5y8laR5mt4/RXUoBI8NeXpyqxjlQNtULIjCuKsixV2KuxV2KuxVB6rpGlavZSWGq2cF/ZS7S&#xA;W1zGssbfNHBGKvD/AD5/zh75B1r1Lny1PL5cvmqREtbizY/8YnYOlT/K9B/LirxDWPy7/Pr8pmea&#xA;GKW90OI8nuLOt5ZcQakvERzhHixVfnmJqdDhzj1xvz6/Ntx5pw5FNvKv/OQWi3fCDzDbNp0/Q3UI&#xA;aWAmnUqKyJv2+L55zWr9nJDfEeLyPP58vudhi7QB2kKepWGo6fqNst1YXMd1bP8AZmhcOp+lSc57&#xA;LhnjPDMGJ83YRmJCwbROVMlk0MU8LwzIJIZVKSRsKqysKEEHqCMlCZiQRsQggEUXiepWHmf8m/OM&#xA;PnDyiS+jSH07i3erxhHYFrafuY2oOD9QadwCe77J7UGojwy2yD7fN0mq0xxmx9L7C/Lr8wvL/n3y&#xA;zBr+iyExSfBc2z/3tvOAC8Ug8RXY9CNxm5cRk+KuxV2Kvm7/AJzA/NOTTNHg8haVKRf6ugn1ZkJ5&#xA;JacqJDt3mdTyH8op0bFUg/KjyOvlfy2n1iMDVr8LNfsaVXb4Ia/8Vg7/AOVXOB7Z1/j5aH0R5fpL&#xA;vNJg4I2eZZRr1/8Ao/Q9Rv8A/lktZp/+RUZf+Ga7SwE8sInkZAfa35ZVEnyYp/zg/o0Ump+atccV&#xA;mghtbKJu/Gd3ll/GBM9PecfWeKuxV2KuxV2KuxV2KvOfPf5Aflj521UatrGmtHqRFJ7m0kMDTdKG&#xA;Xjs7CmzUr+GKsb/6FD/Jv/lmvv8ApLb+mKu/6FD/ACb/AOWa+/6S2/pir0/yZ5Q0byf5as/LmirI&#xA;mmWPqfV1lcyOPWleZ6sevxyHFU7xV2KuxV2KuxV2KuxV2KvMfzC/5x1/LLzr6lzcaf8AovVn3/Se&#xA;ncYJGbrWSOhikr3LLy9xir5080f846/nH+XVzJqnlK6k1nT1NTLpwYXHFenrWR58/kvMZTmwQyx4&#xA;ZgSDKEzE2DSH8r/85ABZRZea7IwSoeD3lup+FgaH1YT8Qp34/wDA5zes9nBzwn4H9B/X83Y4u0Ok&#xA;w9b0nWdK1e0W80y7iu7ZukkTBgD4Hup9jvnM59PkxS4ZgxLsYZIyFg2q31jaX9pNZ3kKz2s6lJoX&#xA;FVZT2ORxZZY5CUTUgmURIUeTxy2svzN/KLzbcaj5Eil1DS9RRkNuIZLqMqDVUnij35Rk/A+3z3YZ&#xA;3Wg7YxZYXOQhMc7NfK/wHS59JKMthYZVB/zlL+eWlMZNc8owTWiEmRzaXlsaClaS83jp/sTmxx6r&#xA;FM1GUZe4guPLHIcwQ9C8jf8AOYH5ea7NFaa9bzeW7uUhRLMwns+RNADOgVl+bxhR3OXsHulvcW9z&#xA;BHcW0qTW8yh4Zo2Do6MKqysKggjoRir849U/MZtX/M6688azZnUTNdNcxWTSekFVPhtk5cZPhhVV&#xA;FKb0yjU4pZMZjE8JPVnjkIyBItnP/Qyn/fuf9Pv/AF4zm/8AQx/tn+x/487D+Uv6P2/sQWuf85A/&#xA;pXRNQ0z9A+j9etprb1vrfLh60ZTlx9Fa05VpXLcHs74eSM+O+Eg/T3f5zGev4okcPPz/AGPU/wDn&#xA;B7UUbTvNmmkgPFNaXCjuRIsqH7vTH350zrn1DirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV&#xA;dirsVdirsVdirBPzB/JP8uvPivJremKmpFaJqtofQul2oKuopJTsJFYYq+afOP8AzjN+afkK7fWP&#xA;JF7LrNjGeX+iVjvVUb0ktqlZh/qcq/yjK8uKGSPDIAjzZRkYmwl/lf8AP1opf0f5vsmgnjb05LyB&#xA;CCrA0PqwH4lI78f+BzmtZ7OA74T8D+g/r+bsMPaHSfzet6TrOlavZreaZdR3ds3SSJgwB8D3B9jv&#xA;nMZ9PkxS4ZgxLsoZIyFg2jMpZsJ87flR5Z8zxSTLCthqxBKX0Kgcm/4uQUEg9/te+bjQds5cBAke&#xA;KHcf0H8BxM+kjPlsWPfkJ+aPmL8t/PS+QfNEjHQbycWyo7FktbiZh6U8LH/dMpYcxsN+WxBr3OHN&#xA;HLATibiXSzgYmjzfWP8AyrzyB/1LOlf9INt/zRlrF3/KvPIH/Us6V/0g23/NGKu/5V55A/6lnSv+&#xA;kG2/5oxVHaV5Z8uaRJJJpOlWenySgLK9rbxQMyg1AYxqtRiqZYq7FXYq7FXYq7FXYq7FXYq7FXYq&#xA;7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqwT8xvyU/L/AM/xFtbsBHqQXjFq1pSG6XsKuARIB2EisB2x&#xA;V856t/ziZ+bHl/VpT5M1qO4sZhtcpcPYT0B2SVFJBp4hj8hleTFCYqQEh5i2UZGPI0of9C+f85Nf&#xA;9XeT/uLS/wDNWUfkNP8A6nD/AEo/Uz8ef84/N3/Qvn/OTX/V3k/7i0v/ADVj+Q0/+pw/0o/Uvjz/&#xA;AJx+aX3n/OK/576ldpcalLBdTgKguLi/MzqoNQAzVagqTTMjHijAVECI8tmEpEmybf/Z</xapGImg:image>

+     <xapGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA

+AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK

+DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f

+Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAuAEAAwER

+AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA

+AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB

+UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE

+1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ

+qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy

+obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp

+0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo

++DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7

+FXYq7FXYq7FXYq7FXYq7FXhH/OYHnWfQ/wAurfRLSUxXXmK49GQqaN9VtwJJqH3cxqfYnFXhP5Y/

+85O+f/JU0enaw769okbBJLS8ZvrUKg0IhnarDj/I9R2HHFX2F+Xn5neT/P8ApP6R8u3glKAfW7KS

+iXNuzdFljqaezCqnsTirK8VdirsVdirsVdirsVdirC/zM/Nvyd+XemC71255Xcqk2WmQUa5nI2+F

+CRxUd3ag+nbFXx1+Zf8Azkn+YvneaW1tLh9C0NgwXTrB2V3Sm/rzji8m3UDitP2cVfV//OOfmabz

+D+T3l+6uHMl1aRPYTsxqSbVzEhJ7kxKhxV6VirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd

+irsVfHn/ADlxdSa7+bvlvyvGx4RW0EVARtNfXJVqf7BY+uRlKgT3JAt5r/zkD5ZGgfmfqSRR+nZ6

+gsd9agdOMq0f/ksj5h9nZvEwgnmNi2Z4cMiw/wAqebPMHlTXLfW9BvHstQtjVZEPwstQWjkXo6NT

+4lOxzOan3v8Akl+cel/mX5a+tAJa69ZcU1fTlJojGvGWLluYpKbV6GqmtKlV6NirsVdirsVdirsV

+eWfnr+eGl/lroywwBLzzPfox02wJqqL0+sT03EanoOrnYdyFXwh5i8x655j1i41jW7yS+1K6blNc

+SmpPgABQKo6BVFB2xVnf5Q+SjrWh+d9Yli5w6XolylsadbqSNnTj8kiYf7IZg6zUeHKERzlIfL8U

+3YoWCe4Pff8AnCfVTN5D1zTCamz1P11HcLcQIAPlWE5nNL6KxV2KuxV2KuxV2KuxV2KuxV2KuxV2

+KuxV2KuxV2KuxV2KvjD8wm/Sv/OX8UTGsdrqGnCMNUU+rW0Mp6f5ammY2sNYZ/1T9zZi+oe9m/8A

+zkx+Xc/mPytFrunRepqehc3ljUVeS0cAyAU6mMqHA8OXfNB2PqhCfAeUvv8A2uZqcdix0fIedQ69

+m35OefrryN+YOla2kpjsjKttqqDo9nMwEoI78ftr/lKMVfaeqf8AOSH5KaaSs3meCZx0W1inuanf

+YNDG69vHFWM3v/OYn5QW5YQ/pK8ArQwWqitPD1pIuvviqVT/APObH5cKR6GjaxIP2i8dqhB9qTvi

+qmP+c2fIFd9C1Wnfa2/6q4qmFv8A85n/AJUSvxksdZtx/NJb25H/ACTuHOKp3bf85XfkpPBI7avN

+BIisywS2lwGcqCeIZUdKmm1WGKvijzz5x1bzl5q1HzFqjlrm+lLrHWqxRDaOFP8AJjSij7+uKpNb

+W1xdXMVtbRtNcTuscMKAszu54qqgbkkmgwE1uVfbHkL8uk8o/lTPoMiK+o3drPNqZHRrieIhlr4I

+tEB9q5yWo1fi6gS/hBFfN2UMfDAjqwT/AJwdvyt/5usC20sVlOq77em0yMR2/wB2Cudc619ZYq7F

+XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXxZKTJ/zmFc+oedNTmA5b/ZtG49fCgpmH2h/

+cS9zbh+sPqDrsc4t2r57/Nf/AJxkGo3c+teSTFb3ExMlxo0hEcTMdybd/spU/sN8PgQNs3+i7Xoc

+OX5/rcLLpusWIaF/zif56vFWTVr6y0pG6xgtczL81QLH90mZWTtnFH6bk1x0sjz2Z1pf/OIvlOIL

++lNbvrthSv1dYrZSe+zC4ND88wp9uTP0xA9+/wCptGkHUsms/wDnGf8AKS3AEunT3dOpmupxXam/

+pNFmPPtjOeRA+H67bBpoPDv+ch/yt03yXrdjeaFbG30HUouCQ8pJBFcQ0DqXkZ2+NSrCrfzeGbns

+vWHNAiX1BxdRi4TtySH8jfJdn5u/MOy07UIfrGl28ct3fw1IDRxrxUEqQaGV0By7X6g4sRkOfRhh

+hxSp9N3X/OO/5P3FSdBETGnxRXN0nT/JEvH8M50dq6gfxfYHOOnh3JDqP/OKn5a3NTazajYt+yIp

+0dfpEsbn/hsvj21lHMRP497A6SPmwzW/+cQr9A76H5himO/CG9haL5AyxGT/AIhmXj7cifqiR7t/

+1NUtIehZh+S3/OP8Xk+5GveYXivNfTkLSKIloLYGqlwzBecjL3p8P45i9odqeIOCH09fNtw6fh3P

+N7DfIz2VwijkzRuFA6klTmpxmpD3uRLk+bf+cJrrj+Yet2tT+90hpeP7J9O5hWp9/wB5tneunfZm

+KuxV2KuxV2KuxV2KuxVZLNFDG0srrHGu7O5CqB7k4qks3nzyNC5jm8xaZHIOqPeW6nf2L4qmFhrW

+j6iK6ff294KVrbypLt1r8BPjirAvzb/Pnyf+WrW9rqKS6hq90vqRaba8eaxVp6krMQEUkEL1JPbq

+cVYFof8Azmp5BupVj1fR9Q0wNsZo/SuY1/1qGN6fJDir2Xyf+Yfkrzjam48taxb6iqgGSKNisyA9

+PUhcLKn+yXFWRYq7FXYq7FXxRrBNj/zl/NVwC+rL8XtcWw+Hf/jJTMXXC8M/6pbMP1h9SZxLtnYq

+7FWG+afzg/LnyvdNZ6vrUSXqGj2sKvcSofB1hV+B/wBamZmHs/NkFxjt8mqWaMeZRPk78zvI/nF5

+ItA1RLm5hHKS1dXhmC1pyEcoRmXputRkdRosuLeQ2TDLGXJCfm/5JXzj5D1HSo05X8a/WtNPcXMI

+JUD/AFxVP9lk+z9R4WUE8jsWOaHFGnl3/OI/lpodN1zzFMlGuJUsLcsKELCPUlpXsWkQfNc2Xbmb

+eMPj+r9LRpI8y+hc0DmuxV2KuxV2Kvl//nClHP5oas4B4Lok6luwLXdqQPpoc9AdK+08VdirsVdi

+rsVdiqXeYPMOi+XtIudY1q7jsdNtF5z3EpooHQAd2ZjsqjcnYYq+VfPf/OV3nXzNqp0D8stPlto5

+mMcF0IfrGoT+8UIDrGD8mbvVcVSqz/5xn/Pjzs66h5t1RbUueX+5W7kurgA/yxx+sq/6pZaeGKsj

+h/5wanMYM3nNUk7qmml1/wCCN0n6sVQt7/zhDr8B56Z5stppEIMZntZLfcb1qkk9KHFXzr5mtdUs

+tfv9O1S5a7vtOuJbKaZndwWt3MZ4mSjcartUDFUsxVFabqeo6XfQ3+m3UtlfW7c4Lq3dopUbxV1I

+IxV9Sfkr/wA5aNcT2+gfmG6K8hWO18wqAi1OwF2q0Vf+Mi0H8w6tir6lVlZQykMrCqsNwQe4xVvF

+XYq+Kfzzro3/ADlLa6oxKJLdaReFiaApGsMLeG1ISMqzw4sco94LKBogvqPOEdw7FXkf55/mBrlj

+Jp3kbykX/wAVeYSFE0Zo8FuzFOSt+wzlW+P9lQx2NDm27N0sZXlyfRFxs+Qj0jmUd5B/IHyP5bsI

+31Oyh1zWnAa6vb1BMnqHciKKSqKAehI5e+Q1XamTIfSeGPlzTj08YjfcsJ/PDy5pXkHX/LH5geW7

+WPTGhvlt9Rt7RBFHKpBk+wgCjnGkiPQbg5m9m5jnhLFM3s1Z4iBEg+hOu4zn3NQOkaLpuj20ltp8

+IghlnnunRe8tzK0sh/4JzQdhtlmXLKZuXdXyYxiByR2VsnYqxjV/zO/L3SJWh1DzDYQzoaPD66PI

+p/ykQsw+kZlY9Dmnyifu+9qOWI6pvoOvaRr+kwato9yt3p1zz9C4UMob03MbbMFOzoR0ynLiljkY

+yFEM4yBFhV1WVYdLvJWJCxwSOxHWioTjhFzA8wsuRfPn/OEVoX83eZLzekOnxQnpSsswb/mVneOn

+fYOKuxV2KuxV2KqF9e2lhZT315KsFpaxtNcTuaKkcYLMzHwAFcVfFHnPzR50/wCchPzJi8veXlaH

+y7aO5sYnqsUUCkK97dU/bYdB2qFXcklV9U/lj+UnlH8u9IWz0a2WS+dQL7VpVBuLhh1q37KV+yg2

+Huakqs1xV2KuxV8v/nf/AM4patrnmG+80eSp4Xn1GR7m/wBIuW9ImdyWd4JSOH7xjUq9KGvxb0Cr

+5/1j8mPzX0iRkvfKepgL9qSC3e5jG9P7yASJ1PjiqRjyb5vMvpDQ9QMtePpi1m5culKca1xVPtG/

+JT82dYdUsvKepUf7MlxA1rGe395cekn44q+zf+cffKv5m+VvJ50bzvPbzRwFf0RFHK01xbxU+KCV

+6cCqmnDizU3FaUAVeo4q7FXx5/zmxpD2vnTy7rcdUN5YPbh12POzmL1qO4FyuKsl/Lz/AJyc8ra2

+sNj5mUaHqZAU3TGtnI3Qnn1ir1o/wj+bOY1XY8474/UO7r+1z8epB2Oz2iKWKaJJYnWSKQBkkQhl

+ZTuCCNiDmnIINFygVGXTNOmvYb6W1hkvbbkLe6eNWljDgq3ByOS1UkGhwjJIDhs0ei0LtE5FLxD/

+AJyycP5F0ezQcp59WjaNdt+NvMp/GQZuuxI/vJH+j+lxNWfSPe9rgiEMEcQNRGoQE9+IpmmlKyS5

+QCpgSsllihieWVxHFGpeR2NFVVFSST0AGEAk0EEvn2fVfOv5269e6foN9Jof5e6fIYbm9QMst2af

+ZIBUtyG4QkKqkFqmgzfiGLRQBkOLKfx+C4ZMspobRZzof/OOv5U6VCiyaUdSnUUa4vZZJGb5opSL

+7kzBydrZ5HY8PuDbHTQDP9G0XStE02HTNJtks9Pt+Xo20Qoi83LtQe7MTmBkyynLikbJboxAFBJv

+zO1Aaf8Al35lu60ZNNuljP8AlvEyJ/wzDL9FDizQH9IfYxymol59/wA4P6S0eg+adXI+G6ura0Vv

+e2jeRgP+kkZ2zqX01irsVdirsVdir50/5zJ/MGbSfK1j5PspOFxrrGa/KmhFpAwon/PWWn0KR3xV

+mf8Azjd+WEPkj8vrae5iA17XES91KQijorrWG333HpI24/mLYq9YxV2KuxV2KuxV2KuxV2KuxV2K

+obUdT03TbR7zUbuGytI/7y4uJFijX5u5VRir5U/5yz/MX8tfNfl7S7DQtZh1LW9NvS5W2V3iFvJG

+yyUnC+kfjVPsscVSv8i/yi/LTzn5Ij1XVLSafU4J5rW9C3EkaFlIdCFQrT926980XaOuy4cnDGqI

+vk5eDDGQsvdvKXkby35StXtdBgmtrZ6Vge6uZ4wf5ljmkkRCe5UCuaPPqp5Tc9/gHLhjEeSN8x3+

+o6foGoX2m2hv9QtoJJbWyFazSKpKxjjv8R22yOCEZTAkaBZTJAsPHv8AlcP53/8Altpv+BuP+ac3

+H8n6X/VPti4vjZP5rzz8wfPP5i+bfNvluw1Dyq1rqWjzG+g0ROZmuRVZDVGHPjxgbcDpXNhpdNiw

+wkYy9Mutj8dWnJOUiAQ9D/5XD+d//ltpv+BuP+ac1/8AJ+l/1T7Yt3jZP5rv+Vw/nf8A+W2m/wCB

+uP8AmnH+T9L/AKp9sV8bJ/NYp+ZX5v8A5qXnli40LVfKbaCutAWkdyxlWRwWXnHGrheRdfhI8DmV

+pNBgE+KMuLh9zXkzTIoirR/kbzf+bvlHy1Y+XtO/LedobYENM6zK0kjtyeRzxoOTH6BtkNTp9Plm

+ZyyfaEwnOIoRej+RPO35o6xr62fmPyf+hdNMTub71C1HWnFaV/azX6rS4IQuE+KXds348kyaIZ7q

+jaqthKdKSCS/pSBbp3jhr4uY1kbbwA38Rmux8PF6r4fJuldbPlv8+YvzstdPS483apafoO7nEEVh

+pcjJbl6NIA0bKkjgenWsnKhpnTdnHTH+7HqHfz+f6nAz8f8AFyfQ3/OLHl06N+TWkyOnCfVpJ9Rm

+Hj6r+nEfphiQ5t3GeuYq7FXYq7FXYq+MfzQhXzz/AM5YWmgz1lsLe7sbB4zvW3gRbi5TvSrNLir7

+OxV2KuxV2KuxV2KuxV2KuxV5j59/5yM/K7yb6kFxqQ1TU0qP0dpvG4cMO0kgIij36hn5e2KvAvMv

+/OWP5p+arl9P8laWukxtXiYIzfXvHpUuy+mg+UdR/NkJ5IwFyIA80xiSaDF/+VT/AJo+b7sah5w1

+h1kavx3sz3k617KgYoo9uYp4ZptR7QYIbRuZ8uXzP7XMx6GcuezJYf8AnH3yrBptwjXFxd6g8LrB

+NIwSNJSpCOEQA7NvRmOak+0eQzGwjCxfU11/FOT/ACfEDnZYH+S+sfmZZeajoHlC8htrq6ZnubC/

+K/VnMAPLkrAtyUdfT+Kg8BnSa7HhMOLINg6/CZA1F9k6KdbOmw/pxbZdTp/pH1IyNAW8U9UK9Pnn

+I5eDi9F8PnzdlG63R2VsmndUUu5CooJZiaAAdSTiBaHhP5N8/On5r+bPzEkBbT7dv0do7EGhWgUM

+tRswgjUsP+LM3vaH7nBDCOZ5/j3/AHOJh9UzJ7vmicx2KvEf+clQLS78i63cEjT9O1cC6O3H4mjl

+FR/qwPm77G3GSPUj9f63E1XQvbQQQCDUHoc0jlN4pSXzN5z8q+V7ZLjX9Tg0+OSvpLK37x+PXhGv

+J3pXfiMuw6bJlNQFsJ5BHmXzJ+dn5haf+Z/mby75e8qtLPbLN6EbyI0YluruRI0oh+KigChIHU50

+/ZmilhieL6i4GoyiZ2fbWh6Ra6Noun6PaClpp1tFaW4/4rgQRr+C5s3HR2KuxV2KuxV2KvjfymCP

++c0p/rdK/pTU+POlKfUp/S/4144q+yMVdirsVdirsVdirsVeQfmX/wA5Ofl55MaaxtZv0/rcdVNl

+ZMDEj+E1x8SL4ELyYdxir5W/Mf8A5yD/ADJ88GSC6vjpmjyVC6VYFoYmQ1FJXr6kte/I8fADFXme

+Kvpj8jdTtb3yJBFFGkdxYyyW9zwVU5MDzRzTqSjipPU1zhvaDHKOosk8Mht5d/6/i7rQSBh5h6Fm

+ic12Kvnvz6l35B/Nqz8z2CEQyzLqMSqeIY143UVf8upr7Pnedl5RqdLwS5gcJ/R9n2uj1MPDyWPe

++wdL1Ky1TTbXUrGQTWd5Ek9vKOjJIoZT9xznMkDCRieYc2JsWisgyYZ+b1p5vvfIGqWPlSFZ9Tu0

+9F1LiN/q77TelXYuV+EAkddt6A5vZ8sccoMzsPv6NOYSMdnzl+Wn5m/mVoKR+RtEtNLsrmGWSsOp

+q1vM87t8Su8ssS+p0UKaGgAGdDqtHhyfvJ2fd3fBwseWUfSHq36V/wCcqf8AqzaN/wAGn/ZRms4N

+B/OP2/qci83c79K/85U/9WbRv+DT/sox4NB/OP2/qW83c8o/Mj8z/wAy/MAm8i6zaaZfXU0sY9HT

+Ea4lSdGqqxvFLKvqbFSBXqQc2el0eHH+8jY2693xcfJllL0l9KflXb+bbXyJpVp5riWLV7aIQsqu

+JGMSbRGUio9ThQNQnx70znNccZyk4+R+9zsIkIi2W5iNqB1xdH/RF2+sxQy6XFE8t4tyiyRelGpZ

+i6uCpAAyzFxcQ4D6ixlVb8nzj/zjB5UtfNn5xal5tisltNE0Rpbu1tEUCOOa6ZktYgBt+7j5tt3U

+Z3UIkRAJt1BO77PySHYq7FXYq7FXYq+M/wAyX/wb/wA5b2WsP+7s7q90+7Zz8NILlEt7htqV3EmK

+vszFXYq7FXYq7FWGfmR+bnkn8vrD6xr16PrkilrXS4KPdTdacY6jitRTmxC++Kvjz80/+clPPvnk

+TWVq50Py45KfULRj6kqntcTjiz1H7K8V8QeuKsQ/KyLyvP5wtbTzFbC4trn91bc2IjW4JBj9QAjk

+G+zQ7VIrmB2mcowE4jUh93Vv0wiZgS5Po7zD5J8ta/pa6bf2UfoQrxtWiAjeDbb0io+Hp06eIzht

+N2jmwz4oyu+d7373dZNPCYoh8/effyj17yuZLu3B1DRgSRdRr8cS9f3yD7P+sPh+XTOz7P7Wxajb

+6Z936u90+fSyx78wnP8Azj5r4s/M11o8jUi1OHlED/v63qwA+cbP92YvtDp+PCJjnA/Ydv1NugyV

+Ou99C5xDuWDeefKvnzV9WiufL+v/AKKskt1jkt+Ui8pQ7sX+AEbqyj6M3XZ2t02LGRlhxyvnQO23

+e4eow5JSuJoe8sD81/lL+ZF9pj3Go65Hq7WKPLBbMZGc7VZY+S9WC9O+bnSdsaQTEYQ4OLyAHxou

+Jl0mWrJuvel/5Q/8rK80ySeXdA85S6P9Qh9W2spZ51RouXx+kEDD4CwqPfbvmz1pw4xxzhxX5Bxc

+XFLYGnv35Y+RfzR0DXri881+af03p0lq8MVp6s0nGZpI2WSkiqNkRh9OaLW6rBkgBjjwm+4D7nMx

+Y5g7m3p2axyGGfmF+U3k/wA82pGq23paii8bfVIAFuEpWgLU+NN/st9FDvmZpddkwnbePc1ZMMZ+

+95R/iv8AMz8lbm20/wAzMPMvk2Z/Ssr5XpcIBvxXmSwKr/ut6r2Vxm28HDrAZQ9OTr+P0uNxzxbH

+cNSeb/zJ/Om9uNM8pk+XPJ0Lelf6g7D13DD7L8DyJZf91oafzNTEYMOjAlP1ZOn7P1qZyymhsHrH

+5d/lN5R8i2gXS7f1tRdaXGqTgNcPXqAeiJ/kr9NTvmq1euyZjvtHucjHhEPezPMJuePedvy3/OXV

+fNF/qGg+c/0ZpM7KbWx9a4X0wI1VhxRSoqwJ2zc6fWaaMAJQuXuDizxZCbB2eNfm7F+Z3lQQaDr3

+nKXV21SJmm0+GedgIQwCmVXC7OwIUd6HNtopYcvrhDhrrQcbKJR2JeieSv8AnHD8+9H0SJtG83Q+

+XlvlS5udPinuonSR0Hwy+nHxLqPhO5zYtD2r8mvJH5m+V/0x/jjzN/iL659W/R/76eb0PS9X1f75

+Vpz5p08MVel4q7FXYq7FXYq+Xv8AnNjya81joXnG3Sv1Vm0y/YCp4SEy25PgquJB82GKva/yY87J

+5z/LXRNbaTneNALfUfEXVv8Au5SR25leY9mGKs2xV2KrZJI4o2kkYJGgLO7EBVUCpJJ6AYq+aPzm

+/wCctrTTWn0L8vmjvL1ax3GvOA9vEehFsh2lYH9tvg8A1cVeMfl95AvPzCvLrzP5l1SW6iNwUueT

+tJdTyqqsQ7tXgvFgPGmwp1zS9rdrflqjEXMj4OZpdL4m5Oz3O18seXrXSP0PDp0C6ZSjWhjVkb3c

+NXk3ud842etzSyeIZHi73bDDAR4a2eaeb/yBsLlmvPK9x9QuQeX1OYs0JPX4JN3j/EfLN9ovaIj0

+5hfmP0j9XycLNoBzh8noHku+1y50OKLXrV7XWLT9xeB6FZGUCkyOvwsHG549DUds03aOLHHJxYiD

+jluPLy8v1OXp5SMakPUE9IBBBFQdiDmCDTe841/8pLaHW7bzL5U42OqWkyzvYfZt5+JqyrT+6LrV

+f5fl1zoNL21xQOLPvGQri6j39/3+9wMujo8UOY6PSB06U9s54uewnzt5H8z69qsV5pXme60W3jgW

+F7WAyhWcO7GQ+nLGKkMB07Zt9BrsGGBjkxiZvnt5d7iZ8M5m4ypj/wDyqbz9/wBT/f8A/BXP/ZRm

+d/K+k/1CPyj+pp/K5f55+15z518keZ/y91G01W01SZ2nLiPVrYyW8qTMDzQurFgXQnfl8Qrm90Pa

+GLVxIrl/CXCz4JYiHv8A+Qeia/NDH5tufO155k0u+s3gGm3Tzt9XufUjZuQkmlUPHwZdh0NQaHfV

+9qTgP3YgIyB57bhv04PO7eyZp3KYZ+afm/zN5Z0KGby5okmtanezC1gVAXSF3UlXkRPjYbdqDxYd

+83Q6eGWR45cIG7TmmYjYMC8p/kVrGu6ovmj81b1tV1Njyi0YODBEOoWQp8FB/vuP4fEtXM7P2nGE

+eDAKHf8Aj7y1QwEm5orzX+Rd9pepP5n/ACuvm0HWlq0mlhqWc46lFBqqV/kYFP8AVyODtMSHBnHF

+Hv8Ax9/NM8BBuGxZB+VP5j+ZPMs9/ovmbQJ9J13R1Q3s3ErbPzNEoGPJWehIA5KQKhu2Ua7RwxgT

+hK4yZYcplsRuHo2a1yHh35u+SvN1nNrXnD/lYl/omiIFli0yB7gBSEVFiiC3EacpHGwAG5zd6HPi

+lw4/DEpd+3z5OJmhIXLi2eW/lJ+UXnn829Svtdl1ue0XTjGo127MtzM9ytDHHG5dXrGg5E8vh+Hx

+zo4QERQFBwSSeb2z/oXX86P/AC8Gq/8AI2+/7Kskh6L+UP5dedPJv6W/xN5wu/Nf1/6v9U+tvO/1

+f0fV9Th68s3956i1pT7OKvRcVdirsVdirsVY/wCf/J9l5x8nar5bvKLFqMDRpKRX05R8UUlP8iRV

+b6MVfLf/ADiz50vvJX5han+XXmGtsmoztDHE/SLU4Dw4jt++Qca9yEpir7ExVK/MnmbQvLOjXGs6

+5eR2Om2q8pZ5TT5KoG7M3RVUVJ6Yq+M/zS/PHzr+bWrnyv5Vt5rPy67fDZoaS3CqaerduDRU/wAi

+vEd+RplWbNDFEymaiGUIGRoc0Nc/846uugI1vqXPX1BaRGFLVtv7tTTmtP5z18BnOw9pInLRj+77

++vv/AB9rsD2eeHY+pV/Io6rofmDWPK2rwSWlzJEl3FBIKCsbem5UjZuYddxUHjke34xy4YZYGwDW

+3n/YuhJjMxL2rOSdq7FXYq7FXYq7FXYq7FUt8w6Bp2v6Pc6VqCc7a5XiSPtIw3V0J6Mp3GZGl1M8

+GQTjzH2+TXlxicaLxryB5w1r8nPPM+i63yl8v3rKbrgCVKE0ju4V8R0ZR13HUDO3ywx67CJw59P1

+H8ebpgZYZ0X1xZXlpfWkN5ZyrPa3CLLBNGQyOjiqspHUEZzE4mJo8w54N7q2RS7FXYq73xVTuLi3

+treS4uJFht4VMk00hCoiKKszMdgAOpwxiSaHNBNPlfzv5j8wfnh+Yll5O8qBhoVtKTFKwIQqvwzX

+047IgNEB33p9p6Z13Z2iGGNn6zz/AFOtz5eM+T7B8j+TdG8m+V7Hy7o8fCzso+Jc/blkO8ksh7s7

+bn7htTNi0J9irsVdirsVdirsVdirsVfLP/OXf5WXENxb/mXoKNHNCY4tbMNVdWQhbe7BG9RtGx/1

+PfFWefl3/wA5I+VdQ/KqTzN5mu0ttV0YLbavarT1Z7gqfSaCPbl9YCkgdFIb9la4q+cvNPm3z/8A

+nr5uCUNnolo1YLRSxtrOIkgSSdPUmYd+p7cV6Yms1mPTw4pn3DqW3FhlkNB695O8l6J5U00Wemx/

+vHAN1duB6szDux8B2XoM4LXdoZNTK5cug7vx3u7w4I4xQT/MFvUJbGzluYbqSFGubfl6ExA5oHFG

+AbrQjqMsjmkImIPplzDEwBIPUNahew2Nhc3s54wWsTzSt4JGpZj9wxw4zOYiP4iB81nLhBPc8w/J

+Tzn5v8y3mqHV7oXFlaIhjHpojLJKxIAZQtQFQ9a50XbujwYYRMI8MifsH4DgaLNOZNmwHq+cy7F2

+KuxV2KuxV2KuxVjXnzyLpnm/SDZ3P7m7hq9leAVaJyO/ijftL/EDNj2d2jLTTsbxPMfjq4+o04yD

+zeb/AJZ/mj5g/KrXZPKnmyKSTQS9QFq5t+Z/v7c/txP1ZR8x8VQet1Gmx6vGMmM+r8bF1UJyxS4Z

+PqrTNT0/VLCDUNOuI7qyuVDwXETBkZT3BGczkxygeGQohzgQRYRWRZOxVSurq2tLaW6upUgtoVLz

+TSMEREUVLMxoABhjEyNDcoJp8v8A5n/mrr/5n65D5E8hQTTadcy+kxQcZL1lNeTV+xbpTl8VNvia

+nTOp7O7OGL1S+v7v2uvz5+LYcn0j+SX5N6V+Wvlv6uCl1r96FfV9RUGjMKlYoq7iKOu38x+I+A2z

+jPR8VdirsVdirsVdirsVdirsVSDz3rvlfQ/KWp6h5oaMaGsDx3kUgDCZJFK+iqEjm0leIXvir81d

+SfTpdTupdPhkt9MedzawyMJJI4WYmNGeihmCbV74q+q/y8tfLEHlOyPlsV06VefqGnqvJ0czH/fl

+RQ+HQbUzzrtWeY5z4v1D5V5eTv8ATCAgOFkma5yHYq7FWIfm3qBsfy81mRftSxLbge08ixN/wrHN

+r2Jj4tVHys/Z+txdZKsZSD/nH3TRb+S5rwj4767kYH/IjVYwP+CDZm+0mQnNGPQR+/8AAauz4+gn

+zenZzrnuxV2KuxV2KuxV2KuxVjnnbyLovm3Tfqt+np3MYJtL1APUiY+Feqn9pe/zocz9B2jk00rj

+vHqPx1aM+njkG/N4/ovmf8xfyX1w2rr9b0W4fkbVyxtLgDq8T0Jikp12r4gimdkPA12PiHP7R7/x

+7nUETwyovpX8vvzc8m+eLZf0ZdCDUgKzaVcEJcKR1KitJF/ykr70O2aHVaDJhO4uPf8Ajk5ePNGX

+vTXzl578seTtMOoa9eLboa+hAPimmYfsxRjdj+A7kZVp9LPMaiP1Mp5BEbvmXzJ54/Mb87vMcflj

+y1ZyQ6SzhksENFCKf96L2YbcV60+yDQAM1Cep0eghgF85d/6nX5cxn7n1H+S35IaB+Wmkkxlb3zD

+eIo1LVGHyJhgrukQbfxbqewGe0vSsVdirsVdirsVdirsVdirsVQup6np+l6fc6jqNwlrY2kbTXNx

+KeKJGgqzMfYYq+HfzQ/MTzL+dvnmHSNFR4PLtm7fo+2eoUIKh7y5pX42BoB+yPhG5JajU6mGGBnM

+7BnjxmZoPQ4Pyv8AK8fk1vK5i5W8g5yXVAJjcU2nr/MO3am3TOGl2xmOfxfs6V3ft73dDSQ4OH7X

+kehaz5g/KfzbLpWqK0+jXLB5VQfDJGaqlxDU7MKfEv0HsR0uowYu0MAlA+ocvI9x/HmHXY5ywTo8

+n0Fp2o2OpWMN9YzLcWlwoeGZDUEH/Pcds4jNhljkYyFSDuYTEhY5KzTQoaPIqnwJAOCOOR3AKmQH

+VyzQueKyKx8AQTiccgLIKiQPV5t/zkDctD5FijHS5voYm37BJJP1x5vPZwf4Qf6h+8OH2h/dj3p3

++UNt9X/LnRkoQXjklNRQ/vJnf9TbZjdtyvVT+H3Bs0Y/dBmOalynYq7FXYq7FXYq7FXYq7FUHq+j

+6ZrFhLYanbJdWkwo8Tjb2II3Vh2I3GXYNRPFLigaLCeMSFF4R50/JTXdCnOq+VpJby1ib1FjjJF5

+ARuCvGhenYr8Xt3zstB25jzenJ6Z/Yf1fF1OfRShvHcJFJ5F/M7zRY3PmTUI7m8eKMFHvZHa6mRe

+0SvV2CjcdK/s1OZsu0NNimMVgHy5D39zQMGSQ4qfTP8AziV518hXnlX/AA3p1lBpPmi0XnqUIr6l

+6F2+sq7lnfr8SV+A9AFIzYtD6BxV2KuxV2KuxV2KuxV2KuxV2KvjX/nI7847/wA+eYk/L/ye7XGj

+QTiO4kgNRfXSnswNDBEeh6Egt0CnIZMkYRMpGgExiSaDJvy88h2PlDRRbJxl1G4o9/dAfbcDZVPX

+gn7P3988/wC0+0Zamd8oDkP0+93um04xx82vOP5meVvKoMV7OZ7+lVsLejy+3PcKg/1j8q4dF2Tm

+1G4HDDvP6O9c2qhj25l47r/mfzt+ak6aXovlxrmO3f1I47SF7meOuxLzAURT32UZ1/Z/ZcNNdEkn

+n3fJ1OfUnJzDFvNXl7z35Lu/8P8AmCG60uQoLhbNpaxMsg+2nps0TVpQkHqKHcZseEXdbtFsbySH

+Yqu9ST0/T5H068uFTx5UpWnjir2HyZ+T/wCfGr+U9O1/yreSS6VdKzWkEOo+iQI5HRlMcjxoPjjI

+pXKMmmxT+qMT7wGcckhyJCOudA/5yq0IfvtM1G4VDuscNvqFadqwidj07HMXJ2Tpp84D4bfc2x1W

+QdUvl/Oj8y9CmEPmHQ0iPQpc209pKT1/aNP+FzCyezunly4o/H9bbHX5Bzop1pv/ADkboslBqWkX

+FsfG3dJx8/j9HNfl9mZfwTB94r9bkR7RHUMv0r82/wAvtSoserx28ndLoNb0/wBlIFT7mzWZuxdT

+D+HiHlv9nP7HIhrMcutMst7i3uIlmt5Umib7MkbBlPyIqM1s8coGpAg+bkxkDuFTIJdirsVdirsV

+dirH/PXm608q+XZ9Umo8391ZwH/dk7A8V+Qpyb2GZ/Z2iOoyiP8AD19zRqMwxxvq+cfL9n+Yf19/

+Omi29ytzYytfnU41CgPyLOyhqCTqeSqDt1FM7+WoxYyIGQBOwDoxjlIE0+1/yK/O7S/zJ0IpP6dp

+5nsVA1LT1OzrsPrEAO5jYncdVOx/ZJyGt6jirsVdirsVdirsVdirsVfO/wDzlT+dh8vaa/kfQJ6a

+7qUf+5S4jPxWtrINoxTpJMD8wm/7SnFWA/k3+W48v6eNZ1OL/c1ep8EbDe3hbfhQ9Hbq3h08a8V2

+52n4svCgfRHn5n9Q/HR3Gi03COI8yl/5qfm5LYTt5d8sP6mqM3pXd3GOZiY7elFStZa9T+z0+10v

+7I7G4gMmUbdI/pP6mGr1demPzZX+UH/OJcl6I/MP5lNKZJj6sehB2EjV35XkoPKp68FNfFuq51wF

+OqfT2j6Jo+i2Een6RZQafYxf3dtbRrFGPfigAqe5xVj35mflh5Y/MLy++k61CBKgLWGoIB69tKf2

+o2PY0HJejD6CFXwV+Z35WeaPy715tL1qHlbyFmsNRjB9C4jBoGU/st/Mh3X5UJVYdirsVfb3/OHX

+mKPUfyrfSS9Z9EvpovTrUiK4/wBIRvYM7yD6MVe7YqsmhhniaKaNZYnFHjcBlI8CDtirDde/JX8q

+Ne5HUvK1g0j15zQRC1lJPcyW/pOT9OKvMfMn/OF/5eXwZ9D1K+0aY/ZRit3AP9g/CT/krirzTVv+

+cTvzh8tSPdeVNVh1EDoLS4exuWp4rIVj/wCSpyGTHGYqQBHmmMiNwxq58/fnT5ImW382aVMYgeIO

+oWzRch0pHcRhUfp1+LNVn7C02TcDhPl+rk5UNbkj1tlGgf8AOQHlS94x6rBNpUx6uR68P/BIOf8A

+wmaPUezmWO+MiX2H9X2uZj7QifqFPRNK1vR9Wg9fTL2G9iHVoHV6V7NQ7H2OaTPpsmI1OJi5sMkZ

+cjaNyhm7FXYqlGq+VNC1fULe91S2F69opW2hn+OFCxqzekfhLGg3avTbMzDrsuKBhA8N8yOfz/U0

+zwRlKzumyqqqFUAKBQKNgAO2YhJJttp84edta0nyl+Y0Gu+Qr/0NQtH9W4WAfuI5wfiRSDxdJBUO

+lOPUd6D0PsqWc4R4w36d5Hm6HUiAn6H2P+TH5xaN+ZXlwXcIW11u0ATVdM5VMbnpJHXcxP8Asnt0

+PTNk470PFXYq7FXYq7FXYqwf84fzP078uvJtxrU/GXUJawaTZMf765YbVA34IPic+G3UjFXyR+U/

+lPUvNnmK589+ZXa65XDzRPKB/pF2Wq0h7cIz0AFK7D7NM5/tztLwo+HA+uXPyH6z+OjnaLT8R4jy

+DOPzf89t5Y8v+hZScdX1HlHbEdY0A/eS/MVovufbNJ2J2f4+TikPRD7T3fr/AGubrM/BGhzKf/8A

+OK/5HQWtjb/mF5ltxLqV3+90K2mBPoxHpdMD1kk6x+C/F1O3dukfTGKuxV2KpL5v8neXfN+hz6J5

+gs0vLCffi2zxuPsyROPiR17EfqxV8N/nR/zj/wCZfy5umvYeep+VpXpb6mq/FFyPwx3Kj7Ddg32W

+7UO2KvKcVeu/84z/AJoQeRvPwi1KX0tC11Vs7+RjRIpA1YJ29kZipJ6KxPbFX3sCCKjcHocVbxV2

+KuxV2Kqc9vBcQvBcRrNDIOMkUihlYHsVNQcVeX+cP+cZ/wAovM3OQ6QNIvH/AOPrSmFsQf8AjDRo

+D/yLrirw/wA0f84fef8AQZ21DyRrKal6dTHEWNhejwVH5GJvmXT5ZGURIURYSCRyYf8A8rL/ADW8

+jXo03zjpUslK8Y7+JreVlXasU6rxdf8AKo3zzT6rsHBk3j6D5cvl+qnLx62cee7P/LX5zeSdbKxS

+XJ0y7bb0byiKT/kygmP5VIPtnO6rsLPi3iOOPlz+X6rc/HrYS57FnSsrKGUhlIqCNwRmmIINFywW

+8CWLebfLnmTzCG0+PVV0jRm2n+rK0lzOpG6s7FFjXtRa17nembXRavBp/VwmeTz2A93P5uLmxTnt

+dRSjR/yO8g6cVea2l1GVTUPdyEiv+pH6aEfMHL83tBqJ/TUfcP12whocY57sS80+XfMH5YeaLfz3

+5JdorSKStxbAExxBz8UUigjlbydP8n58Tm97H7WGccE/7wf7L9vf8/dhavS8BsfT9z6x/Kf81NB/

+MbyzHq2nEQXsVI9U0xmDSW03genJHpVHpuPAggb1wmbYq7FXYq7FVK6ure0tprq5lWG2gRpZ5nIV

+ERByZmJ2AAFTir4W89eZtV/PD81xHas8Xlyw5RWXb0bJGHqTsDt6s7U/4Vei1zE12rjp8Rmfh5lt

+w4jOVB7Zp2n2enWMFjZxiG1tkWKGMdAqig655xmyyyTM5G5F6CEREUOTxPS9Gb81/wA/YNJlLNo1

+tMUuKbUsrEky0I6es9QD25jPQ+zNL4OCMevM+8/inQ6nJxzJfdcUUUUSRRIscUahY41AVVVRQAAb

+AAZntC/FXYq7FXYqo3dnaXtrLaXkKXFrOpjnglUOjowoVZWqCD74q+T/AM7f+cTri0a48wfl7E09

+pvJdeX6lpY+5NqTu6/8AFZ+Ifs16BV8xyRyRSNHIpSRCVdGBDBgaEEHoRiqLv9b1nUEjS/v7m7SF

+VjhWeV5QiIOKqocmgUbADFU/8k/mp588l38N1oOrzwxREcrCR2ktJFH7MkDHgRTaoow7EYq/Qb8v

+POFv5y8laR5mt4/RXUoBI8NeXpyqxjlQNtULIjCuKsixV2KuxV2KuxVB6rpGlavZSWGq2cF/ZS7S

+W1zGssbfNHBGKvD/AD5/zh75B1r1Lny1PL5cvmqREtbizY/8YnYOlT/K9B/LirxDWPy7/Pr8pmea

+GKW90OI8nuLOt5ZcQakvERzhHixVfnmJqdDhzj1xvz6/Ntx5pw5FNvKv/OQWi3fCDzDbNp0/Q3UI

+aWAmnUqKyJv2+L55zWr9nJDfEeLyPP58vudhi7QB2kKepWGo6fqNst1YXMd1bP8AZmhcOp+lSc57

+LhnjPDMGJ83YRmJCwbROVMlk0MU8LwzIJIZVKSRsKqysKEEHqCMlCZiQRsQggEUXiepWHmf8m/OM

+PnDyiS+jSH07i3erxhHYFrafuY2oOD9QadwCe77J7UGojwy2yD7fN0mq0xxmx9L7C/Lr8wvL/n3y

+zBr+iyExSfBc2z/3tvOAC8Ug8RXY9CNxm5cRk+KuxV2Kvm7/AJzA/NOTTNHg8haVKRf6ugn1ZkJ5

+JacqJDt3mdTyH8op0bFUg/KjyOvlfy2n1iMDVr8LNfsaVXb4Ia/8Vg7/AOVXOB7Z1/j5aH0R5fpL

+vNJg4I2eZZRr1/8Ao/Q9Rv8A/lktZp/+RUZf+Ga7SwE8sInkZAfa35ZVEnyYp/zg/o0Ump+atccV

+mghtbKJu/Gd3ll/GBM9PecfWeKuxV2KuxV2KuxV2KvOfPf5Aflj521UatrGmtHqRFJ7m0kMDTdKG

+Xjs7CmzUr+GKsb/6FD/Jv/lmvv8ApLb+mKu/6FD/ACb/AOWa+/6S2/pir0/yZ5Q0byf5as/LmirI

+mmWPqfV1lcyOPWleZ6sevxyHFU7xV2KuxV2KuxV2KuxV2KvMfzC/5x1/LLzr6lzcaf8AovVn3/Se

+ncYJGbrWSOhikr3LLy9xir5080f846/nH+XVzJqnlK6k1nT1NTLpwYXHFenrWR58/kvMZTmwQyx4

+ZgSDKEzE2DSH8r/85ABZRZea7IwSoeD3lup+FgaH1YT8Qp34/wDA5zes9nBzwn4H9B/X83Y4u0Ok

+w9b0nWdK1e0W80y7iu7ZukkTBgD4Hup9jvnM59PkxS4ZgxLsYZIyFg2q31jaX9pNZ3kKz2s6lJoX

+FVZT2ORxZZY5CUTUgmURIUeTxy2svzN/KLzbcaj5Eil1DS9RRkNuIZLqMqDVUnij35Rk/A+3z3YZ

+3Wg7YxZYXOQhMc7NfK/wHS59JKMthYZVB/zlL+eWlMZNc8owTWiEmRzaXlsaClaS83jp/sTmxx6r

+FM1GUZe4guPLHIcwQ9C8jf8AOYH5ea7NFaa9bzeW7uUhRLMwns+RNADOgVl+bxhR3OXsHulvcW9z

+BHcW0qTW8yh4Zo2Do6MKqysKggjoRir849U/MZtX/M6688azZnUTNdNcxWTSekFVPhtk5cZPhhVV

+FKb0yjU4pZMZjE8JPVnjkIyBItnP/Qyn/fuf9Pv/AF4zm/8AQx/tn+x/487D+Uv6P2/sQWuf85A/

+pXRNQ0z9A+j9etprb1vrfLh60ZTlx9Fa05VpXLcHs74eSM+O+Eg/T3f5zGev4okcPPz/AGPU/wDn

+B7UUbTvNmmkgPFNaXCjuRIsqH7vTH350zrn1DirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV

+dirsVdirsVdirBPzB/JP8uvPivJremKmpFaJqtofQul2oKuopJTsJFYYq+afOP8AzjN+afkK7fWP

+JF7LrNjGeX+iVjvVUb0ktqlZh/qcq/yjK8uKGSPDIAjzZRkYmwl/lf8AP1opf0f5vsmgnjb05LyB

+CCrA0PqwH4lI78f+BzmtZ7OA74T8D+g/r+bsMPaHSfzet6TrOlavZreaZdR3ds3SSJgwB8D3B9jv

+nMZ9PkxS4ZgxLsoZIyFg2jMpZsJ87flR5Z8zxSTLCthqxBKX0Kgcm/4uQUEg9/te+bjQds5cBAke

+KHcf0H8BxM+kjPlsWPfkJ+aPmL8t/PS+QfNEjHQbycWyo7FktbiZh6U8LH/dMpYcxsN+WxBr3OHN

+HLATibiXSzgYmjzfWP8AyrzyB/1LOlf9INt/zRlrF3/KvPIH/Us6V/0g23/NGKu/5V55A/6lnSv+

+kG2/5oxVHaV5Z8uaRJJJpOlWenySgLK9rbxQMyg1AYxqtRiqZYq7FXYq7FXYq7FXYq7FXYq7FXYq

+7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqwT8xvyU/L/AM/xFtbsBHqQXjFq1pSG6XsKuARIB2EisB2x

+V856t/ziZ+bHl/VpT5M1qO4sZhtcpcPYT0B2SVFJBp4hj8hleTFCYqQEh5i2UZGPI0of9C+f85Nf

+9XeT/uLS/wDNWUfkNP8A6nD/AEo/Uz8ef84/N3/Qvn/OTX/V3k/7i0v/ADVj+Q0/+pw/0o/Uvjz/

+AJx+aX3n/OK/576ldpcalLBdTgKguLi/MzqoNQAzVagqTTMjHijAVECI8tmEpEmybf/Z</xapGImg:image>

     </rdf:li>

    </rdf:Alt>

   </xap:Thumbnails>

  </rdf:Description>

 

- <rdf:Description rdf:about=''

-  xmlns:dc='http://purl.org/dc/elements/1.1/'>

+ <rdf:Description

+   rdf:about="">

   <dc:format>image/svg+xml</dc:format>

  </rdf:Description>

 

-</rdf:RDF>

-</x:xmpmeta>

-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <?xpacket end='w'?>

-			</metadata>

-		<switch>

-			<foreignObject requiredExtensions="&ns_ai;" x="0" y="0" width="1" height="1">

-				<i:pgfRef  xlink:href="#adobe_illustrator_pgf">

-				</i:pgfRef>

-			</foreignObject>

-			<g i:extraneous="self">

-				<g id="colors" i:layer="yes" i:dimmedPercent="3" i:rgbTrio="#4F00FFFF4F00">

-					<path i:knockout="Off" fill="#F8DC75" d="M237.682,33.617c-0.019-5.071,0.402-24.5-2.5-30.4

-						c-7.869,2.99-19.189,11.68-22.431,21.588c-15.532-2.32-35.042-2.045-50.381,0.608C159.808,14.753,147.946,7.596,138.243,3

-						c-4.093,6.907-3.906,19.92-3.445,31.279c-0.018,0.013-0.037,0.024-0.054,0.037c1.8,47.7,22.2,74.399,52.799,92.399

-						c31.481-17.988,50.972-49.057,50.101-93.12C237.656,33.603,237.67,33.609,237.682,33.617z M216.485,25.421

-						c0.114,0.021,0.229,0.042,0.344,0.064C216.715,25.463,216.601,25.441,216.485,25.421z M214.527,25.083

-						c0.275,0.044,0.554,0.094,0.83,0.141C215.081,25.177,214.805,25.129,214.527,25.083z"/>

-					<path i:knockout="Off" fill="#D2A41F" d="M91.013,133.328c46.474,4.115,90.927,22.883,141.085,49.085h25.598l0.361,0.191

-						c0.516-2.575-1.888-6.025-4.752-9.229c-4.941-5.528-11.623-6.145-19.707-5.951c-5.738-6.83-41.004-43.861-41.004-43.861

-						l-4.808,3.395c-38.75-21.75-49.155-62.513-49.155-62.513c-33.792,8.148-69.78,28.334-90.391,49.761l-3.118,3.292

-						c-1.489,1.597-2.928,3.174-4.312,4.723C18.967,146.661,3,170.87,3,175.213v2.25h23.816l-0.505-0.668

-						c-2.449-12.943,4.443-23.341,10.279-30.385c4.179-5.044,11.1-9.801,21.968-12.457L91.013,133.328z"/>

-				</g>

-				<g id="tomcat" i:layer="yes" i:dimmedPercent="3" i:rgbTrio="#4F00FFFF4F00">

-					<path i:knockout="Off" d="M240.682,32.617c-0.019-5.071-1.598-26.5-4.5-32.4c-7.869,2.99-22.189,12.68-25.431,22.588

-						c-15.532-2.32-33.042-2.045-48.381,0.608C159.808,12.753,146.946,4.596,137.243,0c-4.093,6.907-5.906,22.92-5.445,34.279

-						c-0.018,0.013-0.037,0.024-0.054,0.037c1.8,47.7,25.2,77.399,55.799,95.399c31.481-17.988,53.972-53.057,53.101-97.12

-						C240.656,32.603,240.67,32.609,240.682,32.617z M214.485,23.421c0.114,0.021,0.229,0.042,0.344,0.064

-						C214.715,23.463,214.601,23.441,214.485,23.421z M212.527,23.083c0.275,0.044,0.554,0.094,0.83,0.141

-						C213.081,23.177,212.805,23.129,212.527,23.083z M235.784,36.059c0.81,39.69-19.44,71.279-47.79,87.48

-						c-48.118-23.977-57.183-84.71-48.977-117.289c2.283,12.454,6.424,20.266,15.394,24.098c19.533-5.591,46.423-6.033,66.231-0.57

-						c8.255-6.001,11.456-15.169,13.204-23.18C236.029,15.921,235.777,36.055,235.784,36.059z"/>

-					<g>

-						<rect x="133.209" y="90.51" i:knockout="Off" width="26.245" height="3.239"/> 

-						<rect x="133.209" y="82.732" i:knockout="Off" width="26.245" height="3.24"/> 

-						<rect x="213.35" y="90.51" i:knockout="Off" width="26.244" height="3.239"/> 

-						<rect x="213.35" y="82.732" i:knockout="Off" width="26.244" height="3.24"/> 

-						<g>

-							<path i:knockout="Off" d="M204.1,63.524h-27.188h-3.021h-12.561v-2.917h13.31c1.639-7.018,1.963-13.725-0.014-17.125

-								c-0.844-1.446-2.01-2.121-3.674-2.121c-7.609,0-10.753,8.046-10.884,8.389l0.002-0.003l-2.73-1.024

-								c0.156-0.42,3.965-10.278,13.612-10.278c2.692,0,4.834,1.235,6.191,3.57c2.41,4.141,2.127,11.305,0.494,18.592l23.354,0

-								c3.103-9.116,9.581-13.414,20.405-13.414v2.916c-11.732,0-15.019,4.973-17.366,10.498l12.743,0l-0.029,2.901L204.1,63.524z"

-								/>

-							<path i:knockout="Off" d="M206.017,77.925l0.019-0.003c-3.459-5.101-4.555-9.456-3.108-14.413l-2.971,0.015

-								c-1.035,3.3-0.62,8.273,1.929,12.54H172.21c1.806-3.616,3.479-8.025,4.702-12.54h-3.021

-								c-1.348,4.786-3.241,9.524-5.372,13.277l-0.689,1.213l16.652,10.482l-9.375,6.178l1.605,2.436l10.479-6.908l11.312,7.382

-								l1.554-2.468l-10.488-6.488c0,0,15.682-10.187,16.461-10.684C206.024,77.937,206.021,77.931,206.017,77.925z M187.156,86.733

-								l-12.317-7.755l24.071,0.006L187.156,86.733z"/>

-						</g>

-					</g>

-					<polygon i:knockout="Off" points="114.745,73.635 122.087,95.391 99.788,80.434 "/>

-					<polygon i:knockout="Off" points="93.261,83.153 101.147,96.75 84.559,88.32 "/>

-					<polygon i:knockout="Off" points="75.313,93.759 79.12,107.356 67.699,99.47 "/>

-					<polygon i:knockout="Off" points="196.871,130.199 189.801,141.077 202.31,135.366 "/>

-					<polygon i:knockout="Off" points="208.021,142.709 196.6,151.411 212.372,147.332 "/>

-					<polygon i:knockout="Off" points="180.282,24.686 188.713,43.178 194.151,24.414 "/>

-					<polygon i:knockout="Off" points="137.588,51.608 150.913,58.678 138.947,59.494 "/>

-					<polygon i:knockout="Off" points="140.851,66.021 149.009,69.284 142.211,71.188 "/>

-					<polygon i:knockout="Off" points="236.031,56.775 225.153,61.398 234.127,62.757 "/>

-					<polygon i:knockout="Off" points="231.68,70.1 223.25,72.548 230.048,74.995 "/>

-					<path i:knockout="Off" d="M256.305,173.375c-4.941-5.528-14.623-8.145-22.707-7.951c-5.738-6.83-39.004-41.861-39.004-41.861

-						l-2.306,2.903l40.162,43.238l1.743-0.149c10.912-0.935,17.115,4.983,18.757,6.819c1.204,1.347,1.931,2.575,2.326,3.539h-22.075

-						c-50.624-26.416-95.078-45.044-142.297-49.112c0.104-6.571,1.273-14.01,3.518-22.299l-4.343-1.177

-						c-2.308,8.521-3.523,16.236-3.661,23.133c-4.92-0.326-9.872-0.495-14.868-0.495c-4.237,0-8.095,0.394-11.614,1.077

-						c-4.59-4.587-8.5-8.959-11.823-13.108c21.936-22.85,58.15-43.498,89.533-51.092l-1.015-4.396

-						c-33.792,8.148-70.78,30.334-91.391,51.761c-9.565-12.91-13.36-23.504-14.487-31.532c-1.424-10.14,0.997-19.441,6.999-26.899

-						C47.15,44.099,60.502,43.277,74.23,45.586c-0.268,2.167,0.017,4.24,0.885,5.522c3.631,5.363,23.144,7.246,34.791,2.049

-						c-8.595-12.045-26.006-17.926-30.83-15.569c-1.598,0.781-2.804,2.214-3.63,3.886c-4.745-0.849-9.458-1.48-12.903-1.455

-						c-12.107,0.088-21.363,4.319-28.296,12.932c-6.802,8.451-9.551,18.944-7.95,30.347c1.516,10.8,6.863,22.286,15.825,34.198

-						c-1.489,1.597-2.928,3.174-4.312,4.723C15.967,146.661,0,172.87,0,177.213v2.25h28.816l-0.505-2.668

-						c-1.627-8.601,1.623-19.351,8.279-27.385c4.179-5.044,11.1-10.801,21.968-13.457c9.663,9.431,21.975,19.446,35.679,29.109

-						h21.414v-2.25c0-2.539-1.259-4.762-3.545-6.257c-3.383-2.212-8.605-2.517-13.402-0.881c-4.573-5.093-7.137-11.896-7.691-20.347

-						c46.474,4.115,90.927,22.883,141.085,49.085h27.598l0.361-1.809C260.572,180.029,259.169,176.579,256.305,173.375z

-						 M33.125,146.539c-6.816,8.227-10.429,19.094-9.601,28.424H5.372c3.647-7.894,18.176-30.712,39.644-53.76

-						c2.958,3.656,6.253,7.35,9.872,11.073C44.347,135.444,37.437,141.336,33.125,146.539z"/>

-				</g>

-			</g>

-		</switch>

-		<i:pgf  id="adobe_illustrator_pgf">

-			<![CDATA[

-			eJzdffle8sqy6H0B3gFUFGQwEyEBB2YHUEFwwJlJRJlkWGuv88d59lvVSUgICWmQ75x1716/7aed

+<cc:Work

+   rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type

+     rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></svg:metadata></x:xmpmeta>

+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <xpacket />

+            </svg:metadata>

+        <svg:switch

+   id="switch6">

+            <svg:foreignObject

+   requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/"

+   x="0"

+   y="0"

+   width="1"

+   height="1"

+   id="foreignObject8">

+                <i:pgfRef

+   xlink:href="#adobe_illustrator_pgf">

+                </i:pgfRef>

+            </svg:foreignObject>

+            <svg:g

+   i:extraneous="self"

+   id="g10">

+                <svg:g

+   id="colors"

+   i:layer="yes"

+   i:dimmedPercent="3"

+   i:rgbTrio="#4F00FFFF4F00">

+                    <svg:path

+   i:knockout="Off"

+   fill="#F8DC75"

+   d="M237.682,33.617c-0.019-5.071,0.402-24.5-2.5-30.4                         c-7.869,2.99-19.189,11.68-22.431,21.588c-15.532-2.32-35.042-2.045-50.381,0.608C159.808,14.753,147.946,7.596,138.243,3                         c-4.093,6.907-3.906,19.92-3.445,31.279c-0.018,0.013-0.037,0.024-0.054,0.037c1.8,47.7,22.2,74.399,52.799,92.399                         c31.481-17.988,50.972-49.057,50.101-93.12C237.656,33.603,237.67,33.609,237.682,33.617z M216.485,25.421                         c0.114,0.021,0.229,0.042,0.344,0.064C216.715,25.463,216.601,25.441,216.485,25.421z M214.527,25.083                         c0.275,0.044,0.554,0.094,0.83,0.141C215.081,25.177,214.805,25.129,214.527,25.083z"

+   id="path13" />

+                    <svg:path

+   i:knockout="Off"

+   fill="#D2A41F"

+   d="M91.013,133.328c46.474,4.115,90.927,22.883,141.085,49.085h25.598l0.361,0.191                         c0.516-2.575-1.888-6.025-4.752-9.229c-4.941-5.528-11.623-6.145-19.707-5.951c-5.738-6.83-41.004-43.861-41.004-43.861                         l-4.808,3.395c-38.75-21.75-49.155-62.513-49.155-62.513c-33.792,8.148-69.78,28.334-90.391,49.761l-3.118,3.292                         c-1.489,1.597-2.928,3.174-4.312,4.723C18.967,146.661,3,170.87,3,175.213v2.25h23.816l-0.505-0.668                         c-2.449-12.943,4.443-23.341,10.279-30.385c4.179-5.044,11.1-9.801,21.968-12.457L91.013,133.328z"

+   id="path15" />

+                </svg:g>

+                <svg:g

+   id="tomcat"

+   i:layer="yes"

+   i:dimmedPercent="3"

+   i:rgbTrio="#4F00FFFF4F00">

+                    <svg:path

+   i:knockout="Off"

+   d="M240.682,32.617c-0.019-5.071-1.598-26.5-4.5-32.4c-7.869,2.99-22.189,12.68-25.431,22.588                         c-15.532-2.32-33.042-2.045-48.381,0.608C159.808,12.753,146.946,4.596,137.243,0c-4.093,6.907-5.906,22.92-5.445,34.279                         c-0.018,0.013-0.037,0.024-0.054,0.037c1.8,47.7,25.2,77.399,55.799,95.399c31.481-17.988,53.972-53.057,53.101-97.12                         C240.656,32.603,240.67,32.609,240.682,32.617z M214.485,23.421c0.114,0.021,0.229,0.042,0.344,0.064                         C214.715,23.463,214.601,23.441,214.485,23.421z M212.527,23.083c0.275,0.044,0.554,0.094,0.83,0.141                         C213.081,23.177,212.805,23.129,212.527,23.083z M235.784,36.059c0.81,39.69-19.44,71.279-47.79,87.48                         c-48.118-23.977-57.183-84.71-48.977-117.289c2.283,12.454,6.424,20.266,15.394,24.098c19.533-5.591,46.423-6.033,66.231-0.57                         c8.255-6.001,11.456-15.169,13.204-23.18C236.029,15.921,235.777,36.055,235.784,36.059z"

+   id="path18" />

+                    <svg:g

+   id="g20">

+                        <svg:rect

+   x="133.209"

+   y="90.51"

+   i:knockout="Off"

+   width="26.245"

+   height="3.239"

+   id="rect22" />

+                        <svg:rect

+   x="133.209"

+   y="82.732"

+   i:knockout="Off"

+   width="26.245"

+   height="3.24"

+   id="rect24" />

+                        <svg:rect

+   x="213.35"

+   y="90.51"

+   i:knockout="Off"

+   width="26.244"

+   height="3.239"

+   id="rect26" />

+                        <svg:rect

+   x="213.35"

+   y="82.732"

+   i:knockout="Off"

+   width="26.244"

+   height="3.24"

+   id="rect28" />

+                        <svg:g

+   id="g30">

+                            <svg:path

+   i:knockout="Off"

+   d="M204.1,63.524h-27.188h-3.021h-12.561v-2.917h13.31c1.639-7.018,1.963-13.725-0.014-17.125                                 c-0.844-1.446-2.01-2.121-3.674-2.121c-7.609,0-10.753,8.046-10.884,8.389l0.002-0.003l-2.73-1.024                                 c0.156-0.42,3.965-10.278,13.612-10.278c2.692,0,4.834,1.235,6.191,3.57c2.41,4.141,2.127,11.305,0.494,18.592l23.354,0                                 c3.103-9.116,9.581-13.414,20.405-13.414v2.916c-11.732,0-15.019,4.973-17.366,10.498l12.743,0l-0.029,2.901L204.1,63.524z"

+   id="path32" />

+                            <svg:path

+   i:knockout="Off"

+   d="M206.017,77.925l0.019-0.003c-3.459-5.101-4.555-9.456-3.108-14.413l-2.971,0.015                                 c-1.035,3.3-0.62,8.273,1.929,12.54H172.21c1.806-3.616,3.479-8.025,4.702-12.54h-3.021                                 c-1.348,4.786-3.241,9.524-5.372,13.277l-0.689,1.213l16.652,10.482l-9.375,6.178l1.605,2.436l10.479-6.908l11.312,7.382                                 l1.554-2.468l-10.488-6.488c0,0,15.682-10.187,16.461-10.684C206.024,77.937,206.021,77.931,206.017,77.925z M187.156,86.733                                 l-12.317-7.755l24.071,0.006L187.156,86.733z"

+   id="path34" />

+                        </svg:g>

+                    </svg:g>

+                    <svg:polygon

+   i:knockout="Off"

+   points="114.745,73.635 122.087,95.391 99.788,80.434 "

+   id="polygon36" />

+                    <svg:polygon

+   i:knockout="Off"

+   points="93.261,83.153 101.147,96.75 84.559,88.32 "

+   id="polygon38" />

+                    <svg:polygon

+   i:knockout="Off"

+   points="75.313,93.759 79.12,107.356 67.699,99.47 "

+   id="polygon40" />

+                    <svg:polygon

+   i:knockout="Off"

+   points="196.871,130.199 189.801,141.077 202.31,135.366 "

+   id="polygon42" />

+                    <svg:polygon

+   i:knockout="Off"

+   points="208.021,142.709 196.6,151.411 212.372,147.332 "

+   id="polygon44" />

+                    <svg:polygon

+   i:knockout="Off"

+   points="180.282,24.686 188.713,43.178 194.151,24.414 "

+   id="polygon46" />

+                    <svg:polygon

+   i:knockout="Off"

+   points="137.588,51.608 150.913,58.678 138.947,59.494 "

+   id="polygon48" />

+                    <svg:polygon

+   i:knockout="Off"

+   points="140.851,66.021 149.009,69.284 142.211,71.188 "

+   id="polygon50" />

+                    <svg:polygon

+   i:knockout="Off"

+   points="236.031,56.775 225.153,61.398 234.127,62.757 "

+   id="polygon52" />

+                    <svg:polygon

+   i:knockout="Off"

+   points="231.68,70.1 223.25,72.548 230.048,74.995 "

+   id="polygon54" />

+                    <svg:path

+   i:knockout="Off"

+   d="M256.305,173.375c-4.941-5.528-14.623-8.145-22.707-7.951c-5.738-6.83-39.004-41.861-39.004-41.861                         l-2.306,2.903l40.162,43.238l1.743-0.149c10.912-0.935,17.115,4.983,18.757,6.819c1.204,1.347,1.931,2.575,2.326,3.539h-22.075                         c-50.624-26.416-95.078-45.044-142.297-49.112c0.104-6.571,1.273-14.01,3.518-22.299l-4.343-1.177                         c-2.308,8.521-3.523,16.236-3.661,23.133c-4.92-0.326-9.872-0.495-14.868-0.495c-4.237,0-8.095,0.394-11.614,1.077                         c-4.59-4.587-8.5-8.959-11.823-13.108c21.936-22.85,58.15-43.498,89.533-51.092l-1.015-4.396                         c-33.792,8.148-70.78,30.334-91.391,51.761c-9.565-12.91-13.36-23.504-14.487-31.532c-1.424-10.14,0.997-19.441,6.999-26.899                         C47.15,44.099,60.502,43.277,74.23,45.586c-0.268,2.167,0.017,4.24,0.885,5.522c3.631,5.363,23.144,7.246,34.791,2.049                         c-8.595-12.045-26.006-17.926-30.83-15.569c-1.598,0.781-2.804,2.214-3.63,3.886c-4.745-0.849-9.458-1.48-12.903-1.455                         c-12.107,0.088-21.363,4.319-28.296,12.932c-6.802,8.451-9.551,18.944-7.95,30.347c1.516,10.8,6.863,22.286,15.825,34.198                         c-1.489,1.597-2.928,3.174-4.312,4.723C15.967,146.661,0,172.87,0,177.213v2.25h28.816l-0.505-2.668                         c-1.627-8.601,1.623-19.351,8.279-27.385c4.179-5.044,11.1-10.801,21.968-13.457c9.663,9.431,21.975,19.446,35.679,29.109                         h21.414v-2.25c0-2.539-1.259-4.762-3.545-6.257c-3.383-2.212-8.605-2.517-13.402-0.881c-4.573-5.093-7.137-11.896-7.691-20.347                         c46.474,4.115,90.927,22.883,141.085,49.085h27.598l0.361-1.809C260.572,180.029,259.169,176.579,256.305,173.375z                          M33.125,146.539c-6.816,8.227-10.429,19.094-9.601,28.424H5.372c3.647-7.894,18.176-30.712,39.644-53.76                         c2.958,3.656,6.253,7.35,9.872,11.073C44.347,135.444,37.437,141.336,33.125,146.539z"

+   id="path56" />

+                </svg:g>

+            </svg:g>

+        </svg:switch>

+        <i:pgf

+   id="adobe_illustrator_pgf">

+

+            eJzdffle8sqy6H0B3gFUFGQwEyEBB2YHUEFwwJlJRJlkWGuv88d59lvVSUgICWmQ75x1716/7aed

 Tnd1dXXN1fF6iuVQsjmot0J8mHG7vN70qFWbDEYxN2l1n3e70/FkhE2+G7+bZcMMdEqeS29qx7vW

 aNwZ9GPkEXmYw7d951e565vTrN/t80NbpTPptqB1Mug1apPw+K+2X5sLXs7UJvAwciAfMKKbZWJ8

 1J28hOepwbTf7PTbqcF/YPyo6OYZzi3AU0GKwuOzzk1rbO4TjrK8jB3DnAy/CLwYluBNQYInDL6V

@@ -231,9 +597,9 @@
 wizatDXmNPh+Zz3pKZPca/miVUv0TraDJ+qk1ZDPhN6TK+Ho2aWcVTb7/J2bW+vjIVOIhlic9HBh

 0rPWQLyphTiYlAmZV1p4eqyZJiWzqGuNfjdzr3aTZpjL/RfZetLzn1jia3R1YzlpOb7Hw6m0Xqu4

 nW+VecZm0qcQU37zb1lPmj9rXT09+n36pC6vYdq7vX7bdtLyZ+m9bjfpKXOXHx5aTw==

-			]]>

-			<![CDATA[

-			WuC9Lu9tLnF4ZLnWu+HFlu2kd2+nWxO7Sa+Z+5N8Rp8U1mKY9vI4+/ZaenmxnPTl+vvcdtKvaqSZ

+

+

+            WuC9Lu9tLnF4ZLnWu+HFlu2kd2+nWxO7Sa+Z+5N8Rp8U1mKY9vI4+/ZaenmxnPTl+vvcdtKvaqSZ

 s5n0Gbgl8zLuhqzXevU17F3LEm856dt5qG876chbDnj0SVGKGc/qLZPt9C4sJ5WuQluexEsoC5Py

 YfOhmb5F39RJ67zfdGhcXv9jobZPpuX2jn1n82stMO/7sSROemyaFIb9+tGYvnhgnnQ82D1SJ52c

 BGBf5tfqea49+ZVJU1X2fJ4VBkfj22MPTppY5EnnIW2lh6xpUsBY/GxLVKY9YfMhEysMDoUrRdLw

@@ -305,9 +671,9 @@
 Z3nNCH3NqWNRhjqUGk2gKpSkUist9TbLvL5Tytt6qEs5qXXL+XNgX1tsWcA4x5NpzIu5fVmUPr/e

 F+dLgFbdFzqVdaV9obsJaJVqZXPYCj0kv7mcCauVnSuZXKsdQ0rl1YzK2W3zVoeG7k4gClSqOgwi

 0zH6uCoq9Zqm5TWJKxvmk+MfKzGo172aBeH6hvnk2CwG7Whsptpb00H7bCWTY3anyg==

-			]]>

-			<![CDATA[

-			wu6fUTK4oKJdvHOv77ZHU8OYhfm8tvE8OTGL+bUxRjK1N4IxOtaj62N2xDDGU7kop5dYjvYgrWwj

+

+

+            wu6fUTK4oKJdvHOv77ZHU8OYhfm8tvE8OTGL+bUxRjK1N4IxOtaj62N2xDDGU7kop5dYjvYgrWwj

 2wK1GBCkAsngUZwBRcVXKEDSbbblZ3/ewrYJUGKQaSFlxto/ZrKwna65GX7YX3PzMm6bkxhcXmcj

 fEkRNOU2uSjLZH/MVudKwJki71/ny1NNV1U/YTxUc2jvhXOq3+JeJj77GxbsfUpLarRXYS5OudZY

 tLyOB8jCulF48vlyBrH6ck1aiOXtQBZycUnJMoU8cy0e8SUIdDjitgi01GDPraozV0TgnO7h8qrV

@@ -379,9 +745,9 @@
 lpU0fzpduDCfgeuiuNOg+mu34sI9ilY5Sb9wK1Yt8y3Xvn2YlK7TS2S6z50fUKvXWi2PjdiyTC1a

 48KF+bNfpfHzr2JN6kIL8y0LQthebL2M2w7Xg6nLWPZdiHnr9TZ2YDsfRcTcdr7ZjTqqxxHxWKhk

 6weNXrLfCA2Ske700iQDyFSpbktkEoff18+5/d1rjbk0kruZj6GfTebvHwuzfQYrSQ==

-			]]>

-			<![CDATA[

-			r7xXT5G5+/uV3l3vrNRqqTgpXKe6kodNX92XWrnD7HMY1nfvy/lLXDLxk3r1YWWKYg7MWk8aORyx

+

+

+            r7xXT5G5+/uV3l3vrNRqqTgpXKe6kodNX92XWrnD7HMY1nfvy/lLXDLxk3r1YWWKYg7MWk8aORyx

 mIhXSlOsjz6TQp7dafY+de+ZP1zFTCNWa2Yb79niaMSNk5799qh0EPLGdvn7y0gyIgbGn+cHg2nN

 5d07a0ny/snTzuOW53zi9yRzNwdb1VcxtlO+3854v/vlwl7rcxgSy4Wft+h3s9BOfL9ffeZbZVm+

 ej77uSuzw/xH+bPU6d6eHlxO795O/b63t3TA/1WNfF33ioH4h8s7DDwmJiNv2bc3GvE7nq1Ba3Dg

@@ -453,9 +819,9 @@
 Lr62f8haovf8Yc04PYnHPo2F1PfeaU4z631eY6ArffyilmvNXmPzVZT775feLkasRMXi67xe9IHG

 RiLG6bbk72QW0ObnZzHTBw8cvvxohp2JEj0ddRp+DdZ7KfHA+MPan7tg7+d8ecaLzulLOHK1XYUY

 mrvBfG6fO+a0bXyU0Oru5N738i9wAo+2SWQE3ZgZA0sBGkqA/f3QS1Yus3l9c1xezQ==

-			]]>

-			<![CDATA[

-			/+uVsVMcWj1fydIVaJkY6tHRMYsgyXgOCkrwCO24+QfFRLx3nDYEfV74bBdsZOKA04JCxEFV1UJG

+

+

+            /+uVsVMcWj1fydIVaJkY6tHRMYsgyXgOCkrwCO24+QfFRLx3nDYEfV74bBdsZOKA04JCxEFV1UJG

 4ihRTudvQA/xn5MoHjpBJQw4PGldUl9JqfH4kDl4KEWVcNosGAXblPlIxJ+TF4Qnm4GKYrToKNmv

 196V84K35xzujVvtrG/rrp3JeT8u5gNKF+J9zz9IDobDekqYpkqmiJTCYT5zJ+Pnu8Dx9uE2vnMG

 mA/siNssc39wWf5GHfVkB/Sj/SfVEfJ+fgyc6mRsiFx2vZWSIZQzH4QBi6/16v8A7SqHmTPbEvqg

@@ -527,9 +893,9 @@
 QIYgSWRT+EhUIDsHC5ZwC8jOMazSxghKJwkXjNsr46YubHja9QETQn+YXMGxBLvWI22wgIjSJsJa

 sUXgcBBsEQSlJSLwSgP8z91wKZ0krRMfdSsDCbOBRPfidA0AggGiBsTBS6zyROQEAgduiCiSpoiE

 hAQtUVmQlRYetxGIjYmyCiCw3wIBZLEXjiSpI0UlZaS56RCO/Vvrw0pOoXb4wiyMzA==

-			]]>

-			<![CDATA[

-			IPBw1sNSVMLjx8Ay4fBxoFlGOaQlwDEflWRcBeCdY4AKeUEGJCBa4HiJER7pmwHqwpPCSHBSgKp5

+

+

+            IPBw1sNSVMLjx8Ay4fBxoFlGOaQlwDEflWRcBeCdY4AKeUEGJCBa4HiJER7pmwHqwpPCSHBSgKp5

 IBegdDwgAg/HgQFUzdoKpC0aZZR+oN5ESFtEwSTPiGExipvEc2FJ4pAykT/g8YWJGFw/0iXP424J

 XAQQF4XXWJhbJCQjKQTCs3Bco4h3eJ8nYEELJ/HaYQfCBrA4EagPVyHKYZ6JwuBwklgBtrvqQtqO

 EMKOIow8TAa/8BKLrUDRPJwVNxx2RAgH/Tl8EoFfkUphRs7NCZEwnGGBkIyMZMVxeKwFmCfKAb9D

@@ -584,6 +950,18 @@
 ukDeRCUHcSZE8HDAoMSYAP01wiiEg5FscoCA3eHZQk4gS0TWgcxB1zOHngMGhS0GDnji58eRMPSA

 yFdpGTkB8E0SH4oi3zGv1zHaaRX58RZr7VZlVOt0WyNXe1z7q+Wu9fuDSW3SGsITd3vUGk8Go5Z7

 /Dn4G1vgFa2715u9zrn+L1T7Dxc=

-			]]>

-		</i:pgf>

-	</svg>

+

+        </i:pgf>

+    <svg:text

+   xml:space="preserve"

+   style="font-size:13.03699398px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Nimbus Sans L;-inkscape-font-specification:Nimbus Sans L"

+   x="246.20877"

+   y="10.629581"

+   id="text2436"

+   sodipodi:linespacing="125%"

+   transform="scale(0.9830254,1.0172677)"><svg:tspan

+     sodipodi:role="line"

+     id="tspan2438"

+     x="246.20877"

+     y="10.629581">TM</svg:tspan></svg:text>

+</svg:svg>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/index.html b/tomcat-uid/webapps/docs/index.html
index 85bb6ac..ac9cf54 100644
--- a/tomcat-uid/webapps/docs/index.html
+++ b/tomcat-uid/webapps/docs/index.html
@@ -1,14 +1,89 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 6.0 (6.0.41) - Documentation Index</title><meta name="author" content="Craig R. McClanahan"><meta name="author" content="Remy Maucherat"><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - Documentation Index</title><meta name="author" content="Craig R. McClanahan"><meta name="author" content="Remy Maucherat"><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat 6.0</h1><h2>Documentation Index</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Documentation Index</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>This is the top-level entry point of the documentation bundle for the

-<strong>Apache Tomcat</strong> Servlet/JSP container.  Apache Tomcat version 6.0

-implements the

-Servlet 2.5 and JavaServer Pages 2.1 specifications from the

+<strong>Apache Tomcat</strong> Servlet/JSP container.  Apache Tomcat version 7.0

+implements the Servlet 3.0 and JavaServer Pages 2.2

+<a href="http://wiki.apache.org/tomcat/Specifications">specifications</a> from the

 <a href="http://www.jcp.org">Java Community Process</a>, and includes many

 additional features that make it a useful platform for developing and deploying

 web applications and web services.</p>

@@ -20,7 +95,7 @@
 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Apache Tomcat User Guide"><!--()--></a><a name="Apache_Tomcat_User_Guide"><strong>Apache Tomcat User Guide</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>The following documents will assist you in downloading, installing

-Apache Tomcat 6, and using many of the Apache Tomcat features.</p>

+Apache Tomcat 7, and using many of the Apache Tomcat features.</p>

 

 <ol>

 <li><a href="introduction.html"><strong>Introduction</strong></a> - A

@@ -29,8 +104,7 @@
     Apache Tomcat on a variety of platforms.</li>

 <li><a href="appdev/index.html"><strong>First web application</strong></a>

     - An introduction to the concepts of a <em>web application</em> as defined

-    in the <a href="http://wiki.apache.org/tomcat/Specifications">Servlet

-    2.5 Specification</a>.  Covers basic organization of your web application

+    in the Servlet Specification.  Covers basic organization of your web application

     source tree, the structure of a web application archive, and an

     introduction to the web application deployment descriptor

     (<code>/WEB-INF/web.xml</code>).</li>

@@ -53,26 +127,25 @@
     that is provided to each web application.</li>

 <li><a href="jndi-datasource-examples-howto.html">

     <strong>JDBC DataSource</strong></a>

-    - Configuring a JNDI DataSoure with a DB connection pool.

+    - Configuring a JNDI DataSource with a DB connection pool.

     Examples for many popular databases.</li>

 <li><a href="class-loader-howto.html"><strong>Classloading</strong></a>

-    - Information about class loading in Apache Tomcat 6, including where to place

+    - Information about class loading in Apache Tomcat, including where to place

     your application classes so that they are visible.</li>

 <li><a href="jasper-howto.html"><strong>JSPs</strong></a>

     - Information about Jasper configuration, as well as the JSP compiler

     usage.</li>

-<li><a href="ssl-howto.html"><strong>SSL</strong></a> -

-    Installing and

-    configuring SSL support so that your Apache Tomcat will serve requests using

-    the <code>https</code> protocol.</li>

+<li><a href="ssl-howto.html"><strong>SSL/TLS</strong></a> -

+    Installing and configuring SSL/TLS support so that your Apache Tomcat will

+    serve requests using the <code>https</code> protocol.</li>

 <li><a href="ssi-howto.html"><strong>SSI</strong></a> -

     Using Server Side Includes in Apache Tomcat.</li>

 <li><a href="cgi-howto.html"><strong>CGI</strong></a> -

     Using CGIs with Apache Tomcat.</li>

 <li><a href="proxy-howto.html"><strong>Proxy Support</strong></a> -

-    Configuring Apache Tomcat 6 to run behind a proxy server (or a web server

+    Configuring Apache Tomcat to run behind a proxy server (or a web server

     functioning as a proxy server).</li>

-<li><a href="mbeans-descriptor-howto.html"><strong>MBean Descriptor</strong></a> -

+<li><a href="mbeans-descriptors-howto.html"><strong>MBeans Descriptors</strong></a> -

     Configuring MBean descriptors files for custom components.</li>

 <li><a href="default-servlet.html"><strong>Default Servlet</strong></a> -

     Configuring the default servlet and customizing directory listings.</li>

@@ -95,13 +168,25 @@
     Extensions available over regular, blocking IO.</li>

 <li><a href="extras.html"><strong>Additional Components</strong></a> -

     Obtaining additional, optional components.</li>

+<li><a href="maven-jars.html"><strong>Using Tomcat libraries with Maven</strong></a> -

+    Obtaining Tomcat jars through Maven.</li>

+<li><a href="security-howto.html"><strong>Security Considerations</strong></a> -

+    Options to consider when securing an Apache Tomcat installation.</li>

+<li><a href="windows-service-howto.html"><strong>Windows Service</strong></a> -

+    Running Tomcat as a service on Microsoft Windows.</li>

+<li><a href="windows-auth-howto.html"><strong>Windows Authentication</strong></a> -

+    Configuring Tomcat to use integrated Windows authentication.</li>

+<li><a href="jdbc-pool.html"><strong>High Concurrency JDBC Pool</strong></a> -

+    Configuring Tomcat to use an alternative JDBC pool.</li>

+<li><a href="web-socket-howto.html"><strong>WebSocket support</strong></a> -

+    Developing WebSocket applications for Apache Tomcat.</li>

 

 </ol>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Reference"><strong>Reference</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>The following documents are aimed at <em>System Administrators</em> who

-are responsible for installing, configuring, and operating a Apache Tomcat 6 server.

+are responsible for installing, configuring, and operating an Apache Tomcat server.

 </p>

 <ul>

 <li><a href="RELEASE-NOTES.txt"><strong>Release notes</strong></a>

@@ -109,16 +194,32 @@
     </li>

 <li><a href="config/index.html"><strong>Apache Tomcat Server Configuration Reference</strong></a>

     - Reference manual that documents all available elements and attributes

-      that may be placed into a Apache Tomcat 6 <code>conf/server.xml</code> file.

+      that may be placed into the Apache Tomcat <code>conf/server.xml</code> file.

     </li>

 <li><a href="http://tomcat.apache.org/connectors-doc/index.html"><strong>JK Documentation</strong></a>

     - Complete documentation and HOWTOs on the JK native webserver connector,

       used to interface Apache Tomcat with servers like Apache HTTPd, IIS

       and others.</li>

-<li><a href="http://docs.oracle.com/cd/E17802_01/products/products/servlet/2.5/docs/servlet-2_5-mr2/">

-    <strong>Servlet API Javadocs</strong></a> - The Servlet 2.5 API Javadocs.</li>

-<li><a href="http://docs.oracle.com/cd/E17802_01/products/products/jsp/2.1/docs/jsp-2_1-pfd2/index.html">

-    <strong>JSP API Javadocs</strong></a> - The JSP 2.1 API Javadocs.</li>

+<li>Servlet 3.0

+    <a href="http://jcp.org/aboutJava/communityprocess/final/jsr315/index.html">

+    <strong>Specification</strong></a> and

+    <a href="http://docs.oracle.com/javaee/6/api/index.html?javax/servlet/package-summary.html">

+    <strong>Javadoc</strong></a>

+    </li>

+<li>JSP 2.2 and EL 2.2

+    <a href="http://jcp.org/aboutJava/communityprocess/mrel/jsr245/index.html">

+    <strong>Specifications</strong></a>, JSP 2.2

+    <a href="http://docs.oracle.com/javaee/6/api/index.html?javax/servlet/jsp/package-summary.html">

+    <strong>Javadoc (note it is labelled as JSP 2.1)</strong></a>, EL 2.2

+    <a href="http://docs.oracle.com/javaee/6/api/index.html?javax/el/package-summary.html">

+    <strong>Javadoc</strong></a>

+    </li>

+<li>WebSocket 1.1

+    <a href="https://jcp.org/aboutJava/communityprocess/mrel/jsr356/index.html">

+    <strong>Specification</strong></a> and

+    <a href="http://docs.oracle.com/javaee/7/api/javax/websocket/package-summary.html">

+    <strong>Javadoc</strong></a>

+    </li>

 </ul>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Apache Tomcat Developers"><!--()--></a><a name="Apache_Tomcat_Developers"><strong>Apache Tomcat Developers</strong></a></font></td></tr><tr><td><blockquote>

@@ -127,7 +228,7 @@
 the development of the <em>Apache Tomcat</em> project.</p>

 <ul>

 <li><a href="building.html"><strong>Building from Source</strong></a> -

-    Details the steps necessary to download Apache Tomcat 6 source code (and the

+    Details the steps necessary to download Apache Tomcat source code (and the

     other packages that it depends on), and build a binary distribution from

     those sources.

     </li>

@@ -142,13 +243,38 @@
     </li>

 <li><a href="funcspecs/index.html"><strong>Functional Specifications</strong></a>

     - Requirements specifications for features of the <em>Catalina</em> servlet

-    container portion of Apache Tomcat 6.</li>

+    container portion of Apache Tomcat.</li>

 <li><a href="api/index.html"><strong>Javadocs</strong></a>

     - Javadoc API documentation for Apache Tomcat's internals.</li>

 <li><a href="architecture/index.html"><strong>Apache Tomcat Architecture</strong></a>

     - Documentation of the Apache Tomcat Server Architecture.</li>

 </ul>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/index.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/introduction.html b/tomcat-uid/webapps/docs/introduction.html
index 361c2fa..5c1fe8f 100644
--- a/tomcat-uid/webapps/docs/introduction.html
+++ b/tomcat-uid/webapps/docs/introduction.html
@@ -1,9 +1,84 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 6.0 (6.0.41) - Introduction</title><meta name="author" content="Robert Slifka"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - Introduction</title><meta name="author" content="Robert Slifka"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat 6.0</h1><h2>Introduction</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Introduction</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Terminology">Terminology</a></li><li><a href="#Directories_and_Files">Directories and Files</a></li><li><a href="#Configuring_Tomcat">Configuring Tomcat</a></li><li><a href="#Where_to_Go_for_Help">Where to Go for Help</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -68,19 +143,19 @@
 written and easy to understand, we may have missed something.  Provided

 below are various web sites and mailing lists in case you get stuck.</p>

 

-<p>As Tomcat 6 is a new release of Tomcat, keep in mind that some of the

-issues and solutions vary between the major versions of Tomcat (4.x versus

-5).  As you search around the web, there will be some documentation that

-is not relevant to Tomcat 6, but 3.x, 4.x and 5.x.  Doing 3.x or 4.x things to 6

-will probably not work in most cases as the server.xml files are very

-different.</p>

+<p>As Tomcat 7 is a new release of Tomcat, keep in mind that some of the

+issues and solutions vary between the major versions of Tomcat (6.x versus

+7.x).  As you search around the web, there will be some documentation that

+is not relevant to Tomcat 7, but 6.x, 5.x or earlier versions.  Doing 3.x

+or 4.x things to 7 will probably not work in most cases as the server.xml

+files are very different.</p>

 

 <ul>

 <li>Current document - most documents will list potential hangups. Be sure

     to fully read the relevant documentation as it will save you much time

     and effort. There's nothing like scouring the web only to find out that

     the answer was right in front of you all along!</li>

-<li><a href="http://wiki.apache.org/tomcat/FAQ">Tomcat FAQ</a> as maintained by the developers.</li>

+<li><a href="http://wiki.apache.org/tomcat/FAQ">Tomcat FAQ</a></li>

 <li><a href="http://wiki.apache.org/tomcat/">Tomcat WIKI</a></li>

 <li>Tomcat FAQ at <a href="http://www.jguru.com/faq/home.jsp?topic=Tomcat">jGuru</a></li>

 <li>Tomcat mailing list archives - numerous sites archive the Tomcat mailing

@@ -102,8 +177,33 @@
 </ul>

 

 <p>And, if you think something should be in the docs, by all means let us know

-on the TOMCAT-DEV list, or send one of the doc authors email.</p>

+on the TOMCAT-DEV list.</p>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/introduction.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/jasper-howto.html b/tomcat-uid/webapps/docs/jasper-howto.html
index 451e692..8844dc5 100644
--- a/tomcat-uid/webapps/docs/jasper-howto.html
+++ b/tomcat-uid/webapps/docs/jasper-howto.html
@@ -1,19 +1,94 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 6.0 (6.0.41) - Jasper 2 JSP Engine How To</title><meta name="author" content="Glenn L. Nielsen"><meta name="author" content="Peter Rossbach"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - Jasper 2 JSP Engine How To</title><meta name="author" content="Glenn L. Nielsen"><meta name="author" content="Peter Rossbach"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat 6.0</h1><h2>Jasper 2 JSP Engine How To</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

-<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Configuration">Configuration</a></li><li><a href="#Known_issues">Known issues</a></li><li><a href="#Production_Configuration">Production Configuration</a></li><li><a href="#Web_Application_Compilation">Web Application Compilation</a></li><li><a href="#Using_Jikes">Using Jikes</a></li></ul>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Jasper 2 JSP Engine How To</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Configuration">Configuration</a></li><li><a href="#Known_issues">Known issues</a></li><li><a href="#Production_Configuration">Production Configuration</a></li><li><a href="#Web_Application_Compilation">Web Application Compilation</a></li><li><a href="#Optimisation">Optimisation</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

-<p>Tomcat 6.0 uses the Jasper 2 JSP Engine to implement

-the <a href="http://wiki.apache.org/tomcat/Specifications">JavaServer Pages 2.1</a>

+<p>Tomcat 7.0 uses the Jasper 2 JSP Engine to implement

+the <a href="http://wiki.apache.org/tomcat/Specifications">JavaServer Pages 2.2</a>

 specification.</p>

 

 <p>Jasper 2 has been redesigned to significantly improve performance over

 the original Jasper.  In addition to general code improvements the following

-changes were made:

+changes were made:</p>

 <ul>

 <li><strong>JSP Custom Tag Pooling</strong> - The java objects instantiated

 for JSP Custom Tags can now be pooled and reused.  This significantly boosts

@@ -32,7 +107,7 @@
 compilation. This compiler loads source dependencies from the container

 classloader. Ant and javac can still be used.</li>

 </ul>

-</p>

+

 

 <p>Jasper is implemented using the servlet class

 <code>org.apache.jasper.servlet.JspServlet</code>.</p>

@@ -40,13 +115,13 @@
 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Configuration"><strong>Configuration</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>By default Jasper is configured for use when doing web application

-development.  See the section <a href="#Production Configuration">

+development.  See the section <a href="#Production_Configuration">

 Production Configuration</a> for information on configuring Jasper

 for use on a production Tomcat server.</p>

 

 <p>The servlet which implements Jasper is configured using init parameters

 in your global <code>$CATALINA_BASE/conf/web.xml</code>.

-

+</p>

 <ul>

 <li><strong>checkInterval</strong> - If development is false and checkInterval

 is greater than zero, background compiles are enabled. checkInterval is the time

@@ -65,15 +140,20 @@
 classpath is created dynamically based on the current web application.</li>

 

 <li><strong>compiler</strong> - Which compiler Ant should use to compile JSP

-pages.  See the Ant documentation for more information. If the value is not set,

-then the default Eclipse JDT Java compiler will be used instead of using Ant. 

-No default value.</li>

+pages. The valid values for this are the same as for the compiler attribute of

+Ant's

+<a href="http://ant.apache.org/manual/Tasks/javac.html#compilervalues">javac</a>

+task. If the value is not set, then the default Eclipse JDT Java compiler will

+be used instead of using Ant. There is no default value. If this attribute is

+set then <code>setenv.[sh|bat]</code> should be used to add

+<code>ant.jar</code>, <code>ant-launcher.jar</code> and <code>tools.jar</code>

+to the <code>CLASSPATH</code> environment variable.</li>

 

 <li><strong>compilerSourceVM</strong> - What JDK version are the source files

-compatible with? (Default value: <code>1.5</code>)</li>

+compatible with? (Default value: <code>1.6</code>)</li>

 

 <li><strong>compilerTargetVM</strong> - What JDK version are the generated files

-compatible with? (Default value: <code>1.5</code>)</li>

+compatible with? (Default value: <code>1.6</code>)</li>

 

 <li><strong>development</strong> - Is Jasper used in development mode? If true,

 the frequency at which JSPs are checked for modification may be specified via

@@ -96,7 +176,7 @@
 

 <li><strong>engineOptionsClass</strong> - Allows specifying the Options class

 used to configure Jasper. If not present, the default EmbeddedServletOptions

-will be used.

+will be used. This option is ignored if running under a SecurityManager.

 </li>

 

 <li><strong>errorOnUseBeanInvalidClassAttribute</strong> - Should Jasper issue

@@ -108,10 +188,8 @@
 performed in a separate JVM from Tomcat? <code>true</code> or

 <code>false</code>, default <code>true</code>.</li>

 

-<li><strong>genStringAsCharArray</strong> - Should text strings be generated as

-char arrays, to improve performance in some cases? Default

-<code>false</code>. The alternative name of <strong>genStrAsCharArray</strong>

-for this initialisation parameter is also supported.</li>

+<li><strong>genStringAsCharArray</strong> - Should text strings be generated as char

+arrays, to improve performance in some cases? Default <code>false</code>.</li>

 

 <li><strong>ieClassId</strong> - The class-id value to be sent to Internet

 Explorer when using &lt;jsp:plugin&gt; tags.   Default

@@ -124,10 +202,20 @@
 code for each page instead of deleting it? <code>true</code> or

 <code>false</code>, default <code>true</code>.</li>

 

-<li><strong>mappedfile</strong> - Should we generate static content with one 

+<li><strong>mappedfile</strong> - Should we generate static content with one

 print statement per input line, to ease debugging?

 <code>true</code> or <code>false</code>, default <code>true</code>.</li>

 

+<li><strong>maxLoadedJsps</strong> - The maximum number of JSPs that will be

+loaded for a web application. If more than this number of JSPs are loaded, the

+least recently used JSPs will be unloaded so that the number of JSPs loaded at

+any one time does not exceed this limit. A value of zero or less indicates no

+limit. Default <code>-1</code></li>

+

+<li><strong>jspIdleTimeout</strong> - The amount of time in seconds a JSP can be

+idle before it is unloaded. A value of zero or less indicates never unload.

+Default <code>-1</code></li>

+

 <li><strong>modificationTestInterval</strong> - Causes a JSP (and its dependent

 files) to not be checked for modification during the specified time interval

 (in seconds) from the last time the JSP was checked for modification. A value of

@@ -141,20 +229,25 @@
 

 <li><strong>scratchdir</strong> - What scratch directory should we use when

 compiling JSP pages? Default is the work directory for the current web

-application.</li>

+application. This option is ignored if running under a SecurityManager.</li>

 

 <li><strong>suppressSmap</strong> - Should the generation of SMAP info for JSR45

 debugging be suppressed? <code>true</code> or <code>false</code>, default

 <code>false</code>.</li>

- 

+

 <li><strong>trimSpaces</strong> - Should white spaces in template text between

 actions or directives be trimmed ?, default <code>false</code>.</li>

 

 <li><strong>xpoweredBy</strong> - Determines whether X-Powered-By response

 header is added by generated servlet. <code>true</code> or <code>false</code>,

 default <code>false</code>.</li>

+

+<li><strong>quoteAttributeEL</strong> - When EL is used in an attribute value

+on a JSP page, should the rules for quoting of attributes described in JSP.1.6

+be applied to the expression? <code>true</code> or <code>false</code>, default

+<code>true</code>.</li>

 </ul>

-</p>

+

 

 <p>The Java compiler from Eclipse JDT in included as the default compiler. It is

 an advanced Java compiler which will load all dependencies from the Tomcat class

@@ -163,26 +256,25 @@
 for even large JSP  pages.</p>

 

 <p>Apache Ant, which was used in previous Tomcat releases, can be used instead

-of the new compiler by simply removing the <code>lib/ecj-*.jar</code> file, 

-and placing the <code>ant.jar</code> and <code>ant-launcher.jar</code> files

-from the latest Ant distribution in the <code>lib</code> folder.</p>

+of the new compiler by configuring the compiler attribute as explained above.

+</p>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Known issues"><!--()--></a><a name="Known_issues"><strong>Known issues</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>As described in

-<a href="https://issues.apache.org/bugzilla/show_bug.cgi?id=39089">

+<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=39089">

 bug 39089</a>, a known JVM issue,

 <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6294277">

 bug 6294277</a>, may cause a

 <code>java.lang.InternalError: name is too long to represent</code> exception

 when compiling very large JSPs. If this is observed then it may be worked around

 by using one of the following:

+</p>

 <ul>

 <li>reduce the size of the JSP</li>

 <li>disable SMAP generation and JSR-045 support by setting

 <code>suppressSmap</code> to <code>true</code>.</li>

 </ul>

-</p>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Production Configuration"><!--()--></a><a name="Production_Configuration"><strong>Production Configuration</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -192,11 +284,11 @@
 Jasper servlet becomes critical.</p>

 

 <p>When using Jasper 2 in a production Tomcat server you should consider making

-the following changes from the default configuration.

+the following changes from the default configuration.</p>

 <ul>

 <li><strong>development</strong> - To disable on access checks for JSP

 pages compilation set this to <code>false</code>.</li>

-<li><strong>genStringAsCharArray</strong> - To generate slightly more efficient 

+<li><strong>genStringAsCharArray</strong> - To generate slightly more efficient

 char arrays, set this to <code>true</code>.</li>

 <li><strong>modificationTestInterval</strong> - If development has to be set to

 <code>true</code> for any reason (such as dynamic generation of JSPs), setting

@@ -204,32 +296,29 @@
 <li><strong>trimSpaces</strong> - To remove useless bytes from the response,

 set this to <code>true</code>.</li>

 </ul>

-</p>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Web Application Compilation"><!--()--></a><a name="Web_Application_Compilation"><strong>Web Application Compilation</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>Using Ant is the preferred way to compile web applications using JSPC. Note

-that when pre-compiling JSPs, SMAP information only be included in the final

-classes if suppressSmap is false and compile is true. 

-Use the script given below (a similar script is included in the "deployer" 

+that when pre-compiling JSPs, SMAP information will only be included in the

+final classes if suppressSmap is false and compile is true.

+Use the script given below (a similar script is included in the "deployer"

 download) to precompile a webapp:

 </p>

 

-<p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;project name="Webapp Precompilation" default="all" basedir="."&gt; 

+<div class="codeBox"><pre><code>&lt;project name="Webapp Precompilation" default="all" basedir="."&gt;

 

    &lt;import file="${tomcat.home}/bin/catalina-tasks.xml"/&gt;

-  

-   &lt;target name="jspc"&gt; 

 

-    &lt;jasper 

-             validateXml="false" 

-             uriroot="${webapp.path}" 

-             webXmlFragment="${webapp.path}/WEB-INF/generated_web.xml" 

-             outputDir="${webapp.path}/WEB-INF/src" /&gt; 

+   &lt;target name="jspc"&gt;

 

-  &lt;/target&gt; 

+    &lt;jasper

+             validateXml="false"

+             uriroot="${webapp.path}"

+             webXmlFragment="${webapp.path}/WEB-INF/generated_web.xml"

+             outputDir="${webapp.path}/WEB-INF/src" /&gt;

+

+  &lt;/target&gt;

 

   &lt;target name="compile"&gt;

 

@@ -239,8 +328,8 @@
     &lt;javac destdir="${webapp.path}/WEB-INF/classes"

            optimize="off"

            debug="on" failonerror="false"

-           srcdir="${webapp.path}/WEB-INF/src" 

-	   excludes="**/*.smap"&gt;

+           srcdir="${webapp.path}/WEB-INF/src"

+           excludes="**/*.smap"&gt;

       &lt;classpath&gt;

         &lt;pathelement location="${webapp.path}/WEB-INF/classes"/&gt;

         &lt;fileset dir="${webapp.path}/WEB-INF/lib"&gt;

@@ -250,9 +339,9 @@
         &lt;fileset dir="${tomcat.home}/lib"&gt;

           &lt;include name="*.jar"/&gt;

         &lt;/fileset&gt;

-        &lt;fileset dir="${tomcat.home}/bin"&gt; 

-          &lt;include name="*.jar"/&gt; 

-        &lt;/fileset&gt; 

+        &lt;fileset dir="${tomcat.home}/bin"&gt;

+          &lt;include name="*.jar"/&gt;

+        &lt;/fileset&gt;

       &lt;/classpath&gt;

       &lt;include name="**" /&gt;

       &lt;exclude name="tags/**" /&gt;

@@ -264,35 +353,32 @@
   &lt;/target&gt;

 

   &lt;target name="cleanup"&gt;

-  	&lt;delete&gt;

+    &lt;delete&gt;

         &lt;fileset dir="${webapp.path}/WEB-INF/src"/&gt;

         &lt;fileset dir="${webapp.path}/WEB-INF/classes/org/apache/jsp"/&gt;

-  	&lt;/delete&gt;

+    &lt;/delete&gt;

   &lt;/target&gt;

 

-&lt;/project&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-</p>

+&lt;/project&gt;</code></pre></div>

 

 <p>

 The following command line can be used to run the script

-(replacing the tokens with the Tomcat base path and the path to the webapp 

-which should be precompiled):<br>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-$ANT_HOME/bin/ant -Dtomcat.home=&lt;$TOMCAT_HOME&gt; -Dwebapp.path=&lt;$WEBAPP_PATH&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+(replacing the tokens with the Tomcat base path and the path to the webapp

+which should be precompiled):

 </p>

+<div class="codeBox"><pre><code>$ANT_HOME/bin/ant -Dtomcat.home=&lt;$TOMCAT_HOME&gt; -Dwebapp.path=&lt;$WEBAPP_PATH&gt;</code></pre></div>

+

 

 <p>

-Then, the declarations and mappings for the servlets which were generated 

+Then, the declarations and mappings for the servlets which were generated

 during the precompilation must be added to the web application deployment

 descriptor. Insert the <code>${webapp.path}/WEB-INF/generated_web.xml</code>

 at the right place inside the <code>${webapp.path}/WEB-INF/web.xml</code> file.

-Restart the web application (using the manager) and test it to verify it is 

+Restart the web application (using the manager) and test it to verify it is

 running fine with precompiled servlets. An appropriate token placed in the

 web application deployment descriptor may also be used to automatically

-insert the generated servlet declarations and mappings using Ant filtering 

-capabilities. This is actually how all the webapps distributed with Tomcat 

+insert the generated servlet declarations and mappings using Ant filtering

+capabilities. This is actually how all the webapps distributed with Tomcat

 are automatically compiled as part of the build process.

 </p>

 

@@ -300,24 +386,24 @@
 At the jasper task you can use the option <code>addWebXmlMappings</code> for

 automatic merge the <code>${webapp.path}/WEB-INF/generated_web.xml</code>

 with the current web application deployment descriptor at

-<code>${webapp.path}/WEB-INF/web.xml</code>. When you want to use Java 5

+<code>${webapp.path}/WEB-INF/web.xml</code>. When you want to use Java 6

 features inside your jsp's, add the following javac compiler task attributes:

-<code>source="1.5" target="1.5"</code>. For live

+<code>source="1.6" target="1.6"</code>. For live

 applications you can also compile with <code>optimize="on"</code> and

 without debug info <code>debug="off"</code>.

 </p>

 

 <p>

-When you don't want to stop the jsp generation at first jsp syntax error, use   

+When you don't want to stop the jsp generation at first jsp syntax error, use

 <code>failOnError="false"</code>and with

-<code>showSuccess="true"</code> all successfull <i>jsp to java</i>

-generation are printed out. Sometimes it is very helpfull, when you cleanup the

+<code>showSuccess="true"</code> all successful <i>jsp to java</i>

+generation are printed out. Sometimes it is very helpful, when you cleanup the

 generate java source files at <code>${webapp.path}/WEB-INF/src</code>

 and the compile jsp servlet classes at

 <code>${webapp.path}/WEB-INF/classes/org/apache/jsp</code>.

 </p>

 

-<p><strong>Hints:</strong>

+<p><strong>Hints:</strong></p>

 <ul>

 <li> When you switch to another Tomcat release, then regenerate and recompile

 your jsp's with the new Tomcat version.</li>

@@ -328,30 +414,51 @@
 that changing from the defaults may affect performance, but it will vary

 depending on the application.</li>

 </ul>

-</p>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Using Jikes"><!--()--></a><a name="Using_Jikes"><strong>Using Jikes</strong></a></font></td></tr><tr><td><blockquote>

-

-<p>If you wish to use

-<a href="http://oss.software.ibm.com/developerworks/opensource/jikes/">

-Jikes</a> to compile JSP pages:

-<ul>

-<li>From your <a href="http://ant.apache.org">Ant</a> installation, copy ant.jar

-and (if it's available: Ant 1.5 and later) ant-launcher.jar to 

-<code>$CATALINA_HOME/lib</code>.</li>

-<li>Download and install jikes. jikes must support the -encoding option.

-Execute <code>jikes -help</code> to verify that it was built with support

-for <code>-encoding</code>.</li>

-<li>Set the init parameter <code>compiler</code> to <code>jikes</code>.</li>

-<li>Define the property <code>-Dbuild.compiler.emacs=true</code> when starting

-Tomcat by adding it to your <code>CATALINA_OPTS</code> environment variable.

-This changes how jikes outputs error messages so that it is compatible with

-Jasper.</li>

-<li>If you get an error reporting that jikes can't use UTF8 encoding, try

-setting the init parameter <code>javaEncoding</code> to

-<code>ISO-8859-1</code>.</li>

-</ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Optimisation"><strong>Optimisation</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+There are a number of extension points provided within Jasper that enable the

+user to optimise the behaviour for their environment.

 </p>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+<p>

+The first of these extension points is the tag plug-in mechanism. This allows

+alternative implementations of tag handlers to be provided for a web application

+to use. Tag plug-ins are registered via a <code>tagPlugins.xml</code> file

+located under <code>WEB-INF</code>. A sample plug-in for the JSTL is included

+with Jasper. 

+</p>

+

+<p>

+The second extension point is the Expression Language interpreter. Alternative

+interpreters may be configured through the <code>ServletContext</code>. See the

+<code>ELInterpreterFactory</code> javadoc for details of how to configure an

+alternative EL interpreter. 

+</p>

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/jasper-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/jdbc-pool.html b/tomcat-uid/webapps/docs/jdbc-pool.html
new file mode 100644
index 0000000..9d27445
--- /dev/null
+++ b/tomcat-uid/webapps/docs/jdbc-pool.html
@@ -0,0 +1,900 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - The Tomcat JDBC Connection Pool</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Tomcat JDBC Connection Pool</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#How_to_use">How to use</a><ol><li><a href="#Additional_features">Additional features</a></li><li><a href="#Inside_the_Apache_Tomcat_Container">Inside the Apache Tomcat Container</a></li><li><a href="#Standalone">Standalone</a></li><li><a href="#JMX">JMX</a></li></ol></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#JNDI_Factory_and_Type">JNDI Factory and Type</a></li><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#Tomcat_JDBC_Enhanced_Attributes">Tomcat JDBC Enhanced Attributes</a></li></ol></li><li><a href="#Advanced_usage">Advanced usage</a><ol><li><a href="#JDBC_interceptors">JDBC interceptors</a></li><li><a href="#Configuring_JDBC_interceptors">Configuring JDBC interceptors</a></li><li><a href="#org.apache.tomcat.jdbc.pool.JdbcInterceptor">org.apache.tomcat.jdbc.pool.JdbcInterceptor</a></li><li><a href="#org.apache.tomcat.jdbc.pool.interceptor.ConnectionState">org.apache.tomcat.jdbc.pool.interceptor.ConnectionState</a></li><li><a href="#org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer">org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer</a></li><li><a href="#org.apache.tomcat.jdbc.pool.interceptor.StatementCache">org.apache.tomcat.jdbc.pool.interceptor.StatementCache</a></li><li><a href="#org.apache.tomcat.jdbc.pool.interceptor.StatementDecoratorInterceptor">org.apache.tomcat.jdbc.pool.interceptor.StatementDecoratorInterceptor</a></li><li><a href="#org.apache.tomcat.jdbc.pool.interceptor.QueryTimeoutInterceptor">org.apache.tomcat.jdbc.pool.interceptor.QueryTimeoutInterceptor</a></li><li><a href="#org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReport">org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReport</a></li><li><a href="#org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReportJmx">org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReportJmx</a></li><li><a href="#org.apache.tomcat.jdbc.pool.interceptor.ResetAbandonedTimer">org.apache.tomcat.jdbc.pool.interceptor.ResetAbandonedTimer</a></li></ol></li><li><a href="#Code_Example">Code Example</a><ol><li><a href="#Plain_Ol'_Java">Plain Ol' Java</a></li><li><a href="#As_a_Resource">As a Resource</a></li><li><a href="#Asynchronous_Connection_Retrieval">Asynchronous Connection Retrieval</a></li><li><a href="#Interceptors">Interceptors</a></li><li><a href="#Getting_the_actual_JDBC_connection">Getting the actual JDBC connection</a></li></ol></li><li><a href="#Building">Building</a><ol><li><a href="#Building_from_source">Building from source</a></li></ol></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>The <strong>JDBC Connection Pool <code>org.apache.tomcat.jdbc.pool</code></strong>

+  is a replacement or an alternative to the <a href="http://commons.apache.org/dbcp/">Apache Commons DBCP</a>

+  connection pool.</p>

+

+  <p>So why do we need a new connection pool?</p>

+

+  <p>Here are a few of the reasons:</p>

+    <ol>

+      <li>Commons DBCP 1.x is single threaded. In order to be thread safe

+          Commons locks the entire pool for short periods during both object

+          allocation and object return. Note that this does not apply to

+          Commons DBCP 2.x.</li>

+      <li>Commons DBCP 1.x can be slow. As the number of logical CPUs grows and

+          the number of concurrent threads attempting to borrow or return

+          objects increases, the performance suffers. For highly concurrent

+          systems the impact can be significant. Note that this does not apply

+          to Commons DBCP 2.x.</li>

+      <li>Commons DBCP is over 60 classes. tomcat-jdbc-pool core is 8 classes,

+          hence modifications for future requirement will require much less

+          changes. This is all you need to run the connection pool itself, the

+          rest is gravy.</li>

+      <li>Commons DBCP uses static interfaces. This means you have to use the

+          right version for a given JRE version or you may see

+          <code>NoSuchMethodException</code> exceptions.</li>

+      <li>It's not worth rewriting over 60 classes, when a connection pool can

+          be accomplished with a much simpler implementation.</li>

+      <li>Tomcat jdbc pool implements the ability retrieve a connection

+          asynchronously, without adding additional threads to the library

+          itself.</li>

+      <li>Tomcat jdbc pool is a Tomcat module, it depends on Tomcat JULI, a

+          simplified logging framework used in Tomcat.</li>

+      <li>Retrieve the underlying connection using the

+          <code>javax.sql.PooledConnection</code> interface.</li>

+      <li>Starvation proof. If a pool is empty, and threads are waiting for a

+          connection, when a connection is returned, the pool will awake the

+          correct thread waiting. Most pools will simply starve.</li>

+    </ol>

+

+  <p>Features added over other connection pool implementations</p>

+    <ol>

+      <li>Support for highly concurrent environments and multi core/cpu systems.</li>

+      <li>Dynamic implementation of interface, will support <code>java.sql</code> and <code>javax.sql</code> interfaces for

+          your runtime environment (as long as your JDBC driver does the same), even when compiled with a lower version of the JDK.</li>

+      <li>Validation intervals - we don't have to validate every single time we use the connection, we can do this

+          when we borrow or return the connection, just not more frequent than an interval we can configure.</li>

+      <li>Run-Once query, a configurable query that will be run only once, when the connection to the database is established.

+          Very useful to setup session settings, that you want to exist during the entire time the connection is established.</li>

+      <li>Ability to configure custom interceptors.

+          This allows you to write custom interceptors to enhance the functionality. You can use interceptors to gather query stats,

+          cache session states, reconnect the connection upon failures, retry queries, cache query results, and so on.

+          Your options are endless and the interceptors are dynamic, not tied to a JDK version of a

+          <code>java.sql</code>/<code>javax.sql</code> interface.</li>

+      <li>High performance - we will show some differences in performance later on</li>

+      <li>Extremely simple, due to the very simplified implementation, the line count and source file count are very low, compare with c3p0

+          that has over 200 source files(last time we checked), Tomcat jdbc has a core of 8 files, the connection pool itself is about half

+          that. As bugs may occur, they will be faster to track down, and easier to fix. Complexity reduction has been a focus from inception.</li>

+      <li>Asynchronous connection retrieval - you can queue your request for a connection and receive a <code>Future&lt;Connection&gt;</code> back.</li>

+      <li>Better idle connection handling. Instead of closing connections directly, it can still pool connections and sizes the idle pool with a smarter algorithm.</li>

+      <li>You can decide at what moment connections are considered abandoned, is it when the pool is full, or directly at a timeout

+          by specifying a pool usage threshold.

+      </li>

+      <li>The abandon connection timer will reset upon a statement/query activity. Allowing a connections that is in use for a long time to not timeout.

+          This is achieved using the <code>ResetAbandonedTimer</code>

+      </li>

+      <li>Close connections after they have been connected for a certain time. Age based close upon return to the pool.

+      </li>

+      <li>Get JMX notifications and log entries when connections are suspected for being abandoned. This is similar to

+          the <code>removeAbandonedTimeout</code> but it doesn't take any action, only reports the information.

+          This is achieved using the <code>suspectTimeout</code> attribute.</li>

+      <li>Connections can be retrieved from a <code>java.sql.Driver</code>, <code>javax.sql.DataSource</code> or <code>javax.sql.XADataSource</code>

+          This is achieved using the <code>dataSource</code> and <code>dataSourceJNDI</code> attributes.</li>

+      <li>XA connection support</li>

+    </ol>

+

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="How to use"><!--()--></a><a name="How_to_use"><strong>How to use</strong></a></font></td></tr><tr><td><blockquote>

+  <p>

+    Usage of the Tomcat connection pool has been made to be as simple as possible, for those of you that are familiar with commons-dbcp, the

+    transition will be very simple. Moving from other connection pools is also fairly straight forward.

+  </p>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Additional features"><!--()--></a><a name="Additional_features"><strong>Additional features</strong></a></font></td></tr><tr><td><blockquote>

+    <p>The Tomcat connection pool offers a few additional features over what most other pools let you do:</p>

+    <ul>

+      <li><code>initSQL</code> - the ability to run a SQL statement exactly once, when the connection is created</li>

+      <li><code>validationInterval</code> - in addition to running validations on connections, avoid running them too frequently.</li>

+      <li><code>jdbcInterceptors</code> - flexible and pluggable interceptors to create any customizations around the pool,

+          the query execution and the result set handling. More on this in the advanced section.</li>

+      <li><code>fairQueue</code> - Set the fair flag to true to achieve thread fairness or to use asynchronous connection retrieval</li>

+    </ul>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Inside the Apache Tomcat Container"><!--()--></a><a name="Inside_the_Apache_Tomcat_Container"><strong>Inside the Apache Tomcat Container</strong></a></font></td></tr><tr><td><blockquote>

+    <p>

+      The Tomcat Connection pool is configured as a resource described in <a href="http://tomcat.apache.org/tomcat-7.0-doc/jndi-datasource-examples-howto.html" target="_blank">The Tomcat JDBC documentation</a>

+      With the only difference being that you have to specify the <code>factory</code> attribute and set the value to

+      <code>org.apache.tomcat.jdbc.pool.DataSourceFactory</code>

+    </p>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Standalone"><strong>Standalone</strong></a></font></td></tr><tr><td><blockquote>

+    <p>

+      The connection pool only has another dependency, and that is on tomcat-juli.jar.

+      To configure the pool in a stand alone project using bean instantiation, the bean to instantiate is

+      <code>org.apache.tomcat.jdbc.pool.DataSource</code>. The same attributes (documented below) as you use to configure a connection

+      pool as a JNDI resource, are used to configure a data source as a bean.

+    </p>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JMX"><strong>JMX</strong></a></font></td></tr><tr><td><blockquote>

+    <p>

+      The connection pool object exposes an MBean that can be registered.

+      In order for the connection pool object to create the MBean, the flag <code>jmxEnabled</code> has to be set to true.

+      This doesn't imply that the pool will be registered with an MBean server, merely that the MBean is created.

+      In a container like Tomcat, Tomcat itself registers the DataSource with the MBean server, the

+      <code>org.apache.tomcat.jdbc.pool.DataSource</code> object will then register the actual

+      connection pool MBean.

+      If you're running outside of a container, you can register the DataSource yourself under any object name you specify,

+      and it propagates the registration to the underlying pool. To do this you would call <code>mBeanServer.registerMBean(dataSource.getPool().getJmxPool(),objectname)</code>.

+      Prior to this call, ensure that the pool has been created by calling <code>dataSource.createPool()</code>.

+    </p>

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+  <p>To provide a very simple switch to and from commons-dbcp and tomcat-jdbc-pool,

+     Most attributes are the same and have the same meaning.</p>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JNDI Factory and Type"><!--()--></a><a name="JNDI_Factory_and_Type"><strong>JNDI Factory and Type</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">factory</code></strong></td><td align="left" valign="center">

+        <p>factory is required, and the value should be <code>org.apache.tomcat.jdbc.pool.DataSourceFactory</code></p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">type</code></strong></td><td align="left" valign="center">

+        <p>Type should always be <code>javax.sql.DataSource</code> or <code>javax.sql.XADataSource</code></p>

+        <p>Depending on the type a <code>org.apache.tomcat.jdbc.pool.DataSource</code> or a <code>org.apache.tomcat.jdbc.pool.XADataSource</code> will be created.</p>

+      </td></tr></table>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Attributes"><!--()--></a><a name="Common_Attributes"><strong>Common Attributes</strong></a></font></td></tr><tr><td><blockquote>

+  <p>These attributes are shared between commons-dbcp and tomcat-jdbc-pool, in some cases default values are different.</p>

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">defaultAutoCommit</code></td><td align="left" valign="center">

+      <p>(boolean) The default auto-commit state of connections created by this pool. If not set, default is JDBC driver default (If not set then the <code>setAutoCommit</code> method will not be called.)</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">defaultReadOnly</code></td><td align="left" valign="center">

+      <p>(boolean) The default read-only state of connections created by this pool. If not set then the <code>setReadOnly</code> method will not be called. (Some drivers don't support read only mode, ex: Informix)</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">defaultTransactionIsolation</code></td><td align="left" valign="center">

+      <p>(String) The default TransactionIsolation state of connections created by this pool. One of the following: (see javadoc )</p>

+         <ul>

+           <li><code>NONE</code></li>

+           <li><code>READ_COMMITTED</code></li>

+           <li><code>READ_UNCOMMITTED</code></li>

+           <li><code>REPEATABLE_READ</code></li>

+           <li><code>SERIALIZABLE</code></li>

+         </ul>

+         <p>If not set, the method will not be called and it defaults to the JDBC driver.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">defaultCatalog</code></td><td align="left" valign="center">

+      <p>(String) The default catalog of connections created by this pool.</p>

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">driverClassName</code></strong></td><td align="left" valign="center">

+      <p>(String) The fully qualified Java class name of the JDBC driver to be used. The driver has to be accessible

+         from the same classloader as tomcat-jdbc.jar

+      </p>

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">username</code></strong></td><td align="left" valign="center">

+      <p>(String) The connection username to be passed to our JDBC driver to establish a connection.

+         Note that method <code>DataSource.getConnection(username,password)</code>

+         by default will not use credentials passed into the method,

+         but will use the ones configured here. See <code>alternateUsernameAllowed</code>

+         property for more details.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">password</code></strong></td><td align="left" valign="center">

+      <p>(String) The connection password to be passed to our JDBC driver to establish a connection.

+         Note that method <code>DataSource.getConnection(username,password)</code>

+         by default will not use credentials passed into the method,

+         but will use the ones configured here. See <code>alternateUsernameAllowed</code>

+         property for more details.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxActive</code></td><td align="left" valign="center">

+      <p>(int) The maximum number of active connections that can be allocated from this pool at the same time.

+         The default value is <code>100</code></p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxIdle</code></td><td align="left" valign="center">

+      <p>(int) The maximum number of connections that should be kept in the pool at all times.

+         Default value is  <code>maxActive</code>:<code>100</code>

+         Idle connections are checked periodically (if enabled) and

+         connections that been idle for longer than <code>minEvictableIdleTimeMillis</code>

+         will be released. (also see <code>testWhileIdle</code>)</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">minIdle</code></td><td align="left" valign="center">

+      <p>

+        (int) The minimum number of established connections that should be kept in the pool at all times.

+        The connection pool can shrink below this number if validation queries fail.

+        Default value is derived from <code>initialSize</code>:<code>10</code> (also see <code>testWhileIdle</code>)

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">initialSize</code></td><td align="left" valign="center">

+      <p>(int)The initial number of connections that are created when the pool is started.

+         Default value is <code>10</code></p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxWait</code></td><td align="left" valign="center">

+      <p>(int) The maximum number of milliseconds that the pool will wait (when there are no available connections)

+         for a connection to be returned before throwing an exception.

+         Default value is <code>30000</code> (30 seconds)</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">testOnBorrow</code></td><td align="left" valign="center">

+      <p>(boolean) The indication of whether objects will be validated before being borrowed from the pool.

+         If the object fails to validate, it will be dropped from the pool, and we will attempt to borrow another.

+         In order to have a more efficient validation, see <code>validationInterval</code>.

+         Default value is <code>false</code>

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">testOnConnect</code></td><td align="left" valign="center">

+      <p>(boolean) The indication of whether objects will be validated when a connection is first created.

+         If an object fails to validate, it will be throw <code>SQLException</code>.

+         Default value is <code>false</code>

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">testOnReturn</code></td><td align="left" valign="center">

+      <p>(boolean) The indication of whether objects will be validated before being returned to the pool.

+         The default value is <code>false</code>.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">testWhileIdle</code></td><td align="left" valign="center">

+      <p>(boolean) The indication of whether objects will be validated by the idle object evictor (if any).

+         If an object fails to validate, it will be dropped from the pool.

+         The default value is <code>false</code> and this property has to be set in order for the

+         pool cleaner/test thread is to run (also see <code>timeBetweenEvictionRunsMillis</code>)

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">validationQuery</code></td><td align="left" valign="center">

+      <p>(String) The SQL query that will be used to validate connections from this pool before returning them to the caller.

+         If specified, this query does not have to return any data, it just can't throw a <code>SQLException</code>.

+         The default value is <code>null</code>.

+         If not specified, connections will be validation by the isValid() method.

+         Example values are <code>SELECT 1</code>(mysql), <code>select 1 from dual</code>(oracle), <code>SELECT 1</code>(MS Sql Server)

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">validationQueryTimeout</code></td><td align="left" valign="center">

+      <p>(int) The timeout in seconds before a connection validation queries fail.  This works by calling 

+         <code>java.sql.Statement.setQueryTimeout(seconds)</code> on the statement that executes the <code>validationQuery</code>.

+         The pool itself doesn't timeout the query, it is still up to the JDBC driver to enforce query timeouts. 

+         A value less than or equal to zero will disable this feature. 

+         The default value is <code>-1</code>.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">validatorClassName</code></td><td align="left" valign="center">

+      <p>(String) The name of a class which implements the

+         <code>org.apache.tomcat.jdbc.pool.Validator</code> interface and

+         provides a no-arg constructor (may be implicit). If specified, the

+         class will be used to create a Validator instance which is then used

+         instead of any validation query to validate connections. The default

+         value is <code>null</code>. An example value is

+         <code>com.mycompany.project.SimpleValidator</code>.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">timeBetweenEvictionRunsMillis</code></td><td align="left" valign="center">

+      <p>(int) The number of milliseconds to sleep between runs of the idle connection validation/cleaner thread.

+         This value should not be set under 1 second. It dictates how often we check for idle, abandoned connections, and how often

+         we validate idle connections.

+         The default value is <code>5000</code> (5 seconds). <br>

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">numTestsPerEvictionRun</code></td><td align="left" valign="center">

+      <p>(int) Property not used in tomcat-jdbc-pool.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">minEvictableIdleTimeMillis</code></td><td align="left" valign="center">

+      <p>(int) The minimum amount of time an object may sit idle in the pool before it is eligible for eviction.

+         The default value is <code>60000</code> (60 seconds).</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">accessToUnderlyingConnectionAllowed</code></td><td align="left" valign="center">

+      <p>(boolean) Property not used. Access can be achieved by calling <code>unwrap</code> on the pooled connection.

+         see <code>javax.sql.DataSource</code> interface, or call <code>getConnection</code> through reflection or

+         cast the object as <code>javax.sql.PooledConnection</code></p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">removeAbandoned</code></td><td align="left" valign="center">

+      <p>(boolean) Flag to remove abandoned connections if they exceed the <code>removeAbandonedTimeout</code>.

+         If set to true a connection is considered abandoned and eligible for removal if it has been in use

+         longer than the <code>removeAbandonedTimeout</code> Setting this to <code>true</code> can recover db connections from

+         applications that fail to close a connection. See also <code>logAbandoned</code>

+         The default value is <code>false</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">removeAbandonedTimeout</code></td><td align="left" valign="center">

+      <p>(int) Timeout in seconds before an abandoned(in use) connection can be removed.

+         The default value is <code>60</code> (60 seconds). The value should be set to the longest running query your applications

+         might have.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">logAbandoned</code></td><td align="left" valign="center">

+      <p>(boolean) Flag to log stack traces for application code which abandoned a Connection.

+         Logging of abandoned Connections adds overhead for every Connection borrow because a stack trace has to be generated.

+         The default value is <code>false</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">connectionProperties</code></td><td align="left" valign="center">

+      <p>(String) The connection properties that will be sent to our JDBC driver when establishing new connections.

+         Format of the string must be [propertyName=property;]*

+         NOTE - The "user" and "password" properties will be passed explicitly, so they do not need to be included here.

+         The default value is <code>null</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">poolPreparedStatements</code></td><td align="left" valign="center">

+      <p>(boolean) Property not used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxOpenPreparedStatements</code></td><td align="left" valign="center">

+      <p>(int) Property not used.</p>

+    </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat JDBC Enhanced Attributes"><!--()--></a><a name="Tomcat_JDBC_Enhanced_Attributes"><strong>Tomcat JDBC Enhanced Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">initSQL</code></td><td align="left" valign="center">

+      <p>(String) A custom query to be run when a connection is first created.

+         The default value is <code>null</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">jdbcInterceptors</code></td><td align="left" valign="center">

+      <p>(String) A semicolon separated list of classnames extending

+         <code>org.apache.tomcat.jdbc.pool.JdbcInterceptor</code> class.

+         See <a href="#Configuring_JDBC_interceptors">Configuring JDBC interceptors</a>

+         below for more detailed description of syntax and examples.

+      </p>

+      <p>

+         These interceptors will be inserted as an interceptor into the chain

+         of operations on a <code>java.sql.Connection</code> object.

+         The default value is <code>null</code>.

+      </p>

+      <p>

+         Predefined interceptors:<br>

+         <code>org.apache.tomcat.jdbc.pool.interceptor.<br>ConnectionState</code>

+          - keeps track of auto commit, read only, catalog and transaction isolation level.<br>

+         <code>org.apache.tomcat.jdbc.pool.interceptor.<br>StatementFinalizer</code>

+          - keeps track of opened statements, and closes them when the connection is returned to the pool.

+      </p>

+      <p>

+         More predefined interceptors are described in detail in the

+         <a href="#JDBC_interceptors">JDBC Interceptors section</a>.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">validationInterval</code></td><td align="left" valign="center">

+      <p>(long) avoid excess validation, only run validation at most at this frequency - time in milliseconds.

+         If a connection is due for validation, but has been validated previously within this interval, it will not be validated again.

+         The default value is <code>3000</code> (3 seconds).</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">jmxEnabled</code></td><td align="left" valign="center">

+      <p>(boolean) Register the pool with JMX or not.

+         The default value is <code>true</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">fairQueue</code></td><td align="left" valign="center">

+      <p>(boolean) Set to true if you wish that calls to getConnection should be treated

+         fairly in a true FIFO fashion. This uses the <code>org.apache.tomcat.jdbc.pool.FairBlockingQueue</code>

+         implementation for the list of the idle connections. The default value is <code>true</code>.

+         This flag is required when you want to use asynchronous connection retrieval.<br>

+         Setting this flag ensures that threads receive connections in the order they arrive.<br>

+         During performance tests, there is a very large difference in how locks

+         and lock waiting is implemented. When <code>fairQueue=true</code>

+         there is a decision making process based on what operating system the system is running.

+         If the system is running on Linux (property <code>os.name=Linux</code>.

+         To disable this Linux specific behavior and still use the fair queue, simply add the property

+         <code>org.apache.tomcat.jdbc.pool.FairBlockingQueue.ignoreOS=true</code> to your system properties

+         before the connection pool classes are loaded.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">abandonWhenPercentageFull</code></td><td align="left" valign="center">

+      <p>(int) Connections that have been abandoned (timed out) wont get closed and reported up unless

+         the number of connections in use are above the percentage defined by <code>abandonWhenPercentageFull</code>.

+         The value should be between 0-100.

+         The default value is <code>0</code>, which implies that connections are eligible for closure as soon

+         as <code>removeAbandonedTimeout</code> has been reached.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxAge</code></td><td align="left" valign="center">

+      <p>(long) Time in milliseconds to keep this connection. When a connection is returned to the pool,

+         the pool will check to see if the <code>now - time-when-connected &gt; maxAge</code> has been reached,

+         and if so, it closes the connection rather than returning it to the pool.

+         The default value is <code>0</code>, which implies that connections will be left open and no age check

+         will be done upon returning the connection to the pool.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">useEquals</code></td><td align="left" valign="center">

+      <p>(boolean) Set to true if you wish the <code>ProxyConnection</code> class to use <code>String.equals</code> and set to <code>false</code>

+         when you wish to use <code>==</code> when comparing method names. This property does not apply to added interceptors as those are configured individually.

+         The default value is <code>true</code>.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">suspectTimeout</code></td><td align="left" valign="center">

+      <p>(int) Timeout value in seconds. Default value is <code>0</code>.<br>

+           Similar to to the <code>removeAbandonedTimeout</code> value but instead of treating the connection

+           as abandoned, and potentially closing the connection, this simply logs the warning if

+           <code>logAbandoned</code> is set to true. If this value is equal or less than 0, no suspect

+           checking will be performed. Suspect checking only takes place if the timeout value is larger than 0 and

+           the connection was not abandoned or if abandon check is disabled. If a connection is suspect a WARN message gets

+           logged and a JMX notification gets sent once.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">rollbackOnReturn</code></td><td align="left" valign="center">

+      <p>(boolean) If <code>autoCommit==false</code> then the pool can terminate the transaction by calling rollback on the connection as it is returned to the pool

+          Default value is <code>false</code>.<br>

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">commitOnReturn</code></td><td align="left" valign="center">

+      <p>(boolean) If <code>autoCommit==false</code> then the pool can complete the transaction by calling commit on the connection as it is returned to the pool

+          If <code>rollbackOnReturn==true</code> then this attribute is ignored.

+          Default value is <code>false</code>.<br>

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">alternateUsernameAllowed</code></td><td align="left" valign="center">

+      <p>(boolean) By default, the jdbc-pool will ignore the

+         <a href="http://docs.oracle.com/javase/6/docs/api/javax/sql/DataSource.html#getConnection(java.lang.String,%20java.lang.String)"><code>DataSource.getConnection(username,password)</code></a>

+         call, and simply return a previously pooled connection under the globally configured properties <code>username</code> and <code>password</code>, for performance reasons.

+      </p>

+      <p>

+         The pool can however be configured to allow use of different credentials

+         each time a connection is requested.  To enable the functionality described in the

+         <a href="http://docs.oracle.com/javase/6/docs/api/javax/sql/DataSource.html#getConnection(java.lang.String,%20java.lang.String)"><code>DataSource.getConnection(username,password)</code></a>

+         call, simply set the property <code>alternateUsernameAllowed</code>

+         to <code>true</code>.<br>

+         Should you request a connection with the credentials user1/password1 and the connection

+         was previously connected using different user2/password2, the connection will be closed,

+         and reopened with the requested credentials. This way, the pool size is still managed

+         on a global level, and not on a per schema level. <br>

+         The default value is <code>false</code>.<br>

+         This property was added as an enhancement to <a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=50025">bug 50025</a>.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">dataSource</code></td><td align="left" valign="center">

+      <p>(javax.sql.DataSource) Inject a data source to the connection pool, and the pool will use the data source to retrieve connections instead of establishing them using the <code>java.sql.Driver</code> interface.

+         This is useful when you wish to pool XA connections or connections established using a data source instead of a connection string. Default value is <code>null</code>

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">dataSourceJNDI</code></td><td align="left" valign="center">

+      <p>(String) The JNDI name for a data source to be looked up in JNDI and then used to establish connections to the database. See the <code>dataSource</code> attribute. Default value is <code>null</code>

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">useDisposableConnectionFacade</code></td><td align="left" valign="center">

+      <p>(boolean) Set this to true if you wish to put a facade on your connection so that it cannot be reused after it has been closed. This prevents a thread holding on to a

+                   reference of a connection it has already called closed on, to execute queries on it. Default value is <code>true</code>.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">logValidationErrors</code></td><td align="left" valign="center">

+      <p>(boolean) Set this to true to log errors during the validation phase to the log file. If set to true, errors will be logged as SEVERE. Default value is <code>false</code> for backwards compatibility.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">propagateInterruptState</code></td><td align="left" valign="center">

+      <p>(boolean) Set this to true to propagate the interrupt state for a thread that has been interrupted (not clearing the interrupt state). Default value is <code>false</code> for backwards compatibility.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">ignoreExceptionOnPreLoad</code></td><td align="left" valign="center">

+      <p>(boolean) Flag whether ignore error of connection creation while initializing the pool.

+         Set to true if you want to ignore error of connection creation while initializing the pool.

+         Set to false if you want to fail the initialization of the pool by throwing exception.

+         The default value is <code>false</code>.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">useStatementFacade</code></td><td align="left" valign="center">

+      <p>(boolean) Set this to true if you wish to wrap statements in order to

+         enable <code>equals()</code> and <code>hashCode()</code> methods to be

+         called on the closed statements if any statement proxy is set.

+         Default value is <code>true</code>.

+      </p>

+    </td></tr></table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Advanced usage"><!--()--></a><a name="Advanced_usage"><strong>Advanced usage</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JDBC interceptors"><!--()--></a><a name="JDBC_interceptors"><strong>JDBC interceptors</strong></a></font></td></tr><tr><td><blockquote>

+    <p>To see an example of how to use an interceptor, take a look at

+    <code>org.apache.tomcat.jdbc.pool.interceptor.ConnectionState</code>.

+    This simple interceptor is a cache of three attributes, transaction isolation level, auto commit and read only state,

+    in order for the system to avoid not needed roundtrips to the database.

+    </p>

+    <p>Further interceptors will be added to the core of the pool as the need arises. Contributions are always welcome!</p>

+    <p>Interceptors are of course not limited to just <code>java.sql.Connection</code> but can be used to wrap any

+    of the results from a method invocation as well. You could build query performance analyzer that provides JMX notifications when a

+    query is running longer than the expected time.</p>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Configuring JDBC interceptors"><!--()--></a><a name="Configuring_JDBC_interceptors"><strong>Configuring JDBC interceptors</strong></a></font></td></tr><tr><td><blockquote>

+    <p>Configuring JDBC interceptors is done using the <b>jdbcInterceptors</b> property.

+    The property contains a list of semicolon separated class names. If the

+    classname is not fully qualified it will be prefixed with the

+    <code>org.apache.tomcat.jdbc.pool.interceptor.</code> prefix.

+    </p>

+    <p>Example:<br>

+      <code>

+      jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;

+        org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer"

+      </code>

+      <br>

+      is the same as

+      <br>

+      <code> jdbcInterceptors="ConnectionState;StatementFinalizer"</code>

+    </p>

+    <p>

+    Interceptors can have properties as well. Properties for an interceptor

+    are specified within parentheses after the class name. Several properties

+    are separated by commas.

+    </p>

+    <p>Example:<br>

+    <code>

+      jdbcInterceptors="ConnectionState;StatementFinalizer(useEquals=true)"

+    </code>

+    </p>

+    <p>

+    Extra whitespace characters around class names, property names and values

+    are ignored.

+    </p>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.tomcat.jdbc.pool.JdbcInterceptor"><strong>org.apache.tomcat.jdbc.pool.JdbcInterceptor</strong></a></font></td></tr><tr><td><blockquote>

+    <p>Abstract base class for all interceptors, can not be instantiated.</p>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">useEquals</code></td><td align="left" valign="center">

+        <p>(boolean) Set to true if you wish the <code>ProxyConnection</code> class to use <code>String.equals</code> and set to <code>false</code>

+         when you wish to use <code>==</code> when comparing method names.

+         The default value is <code>true</code>.

+        </p>

+      </td></tr></table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.tomcat.jdbc.pool.interceptor.ConnectionState"><strong>org.apache.tomcat.jdbc.pool.interceptor.ConnectionState</strong></a></font></td></tr><tr><td><blockquote>

+    <p>Caches the connection for the following attributes <code>autoCommit</code>, <code>readOnly</code>,

+       <code>transactionIsolation</code> and <code>catalog</code>.

+       It is a performance enhancement to avoid roundtrip to the database when getters are called or setters are called with an already set value.

+    </p>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr></table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer"><strong>org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer</strong></a></font></td></tr><tr><td><blockquote>

+    <p>Keeps track of all statements created using <code>createStatement</code>, <code>prepareStatement</code> or <code>prepareCall</code>

+       and closes these statements when the connection is returned to the pool.

+    </p>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr></table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.tomcat.jdbc.pool.interceptor.StatementCache"><strong>org.apache.tomcat.jdbc.pool.interceptor.StatementCache</strong></a></font></td></tr><tr><td><blockquote>

+    <p>Caches <code>PreparedStatement</code> and/or <code>CallableStatement</code>

+       instances on a connection.

+    </p>

+    <p>The statements are cached per connection.

+       The count limit is counted globally for all connections that belong to

+       the same pool. Once the count reaches <code>max</code>, subsequent

+       statements are not returned to the cache and are closed immediately.

+    </p>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">prepared</code></td><td align="left" valign="center">

+        <p>(boolean as String) Enable caching of <code>PreparedStatement</code>

+           instances created using <code>prepareStatement</code> calls.

+           The default value is <code>true</code>.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">callable</code></td><td align="left" valign="center">

+        <p>(boolean as String) Enable caching of <code>CallableStatement</code>

+           instances created using <code>prepareCall</code> calls.

+           The default value is <code>false</code>.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">max</code></td><td align="left" valign="center">

+        <p>(int as String) Limit on the count of cached statements across

+           the connection pool.

+           The default value is <code>50</code>.

+        </p>

+      </td></tr></table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.tomcat.jdbc.pool.interceptor.StatementDecoratorInterceptor"><strong>org.apache.tomcat.jdbc.pool.interceptor.StatementDecoratorInterceptor</strong></a></font></td></tr><tr><td><blockquote>

+    <p>See <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=48392">48392</a>. Interceptor to wrap statements and result sets in order to prevent access to the actual connection

+       using the methods <code>ResultSet.getStatement().getConnection()</code> and <code>Statement.getConnection()</code>

+    </p>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr></table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.tomcat.jdbc.pool.interceptor.QueryTimeoutInterceptor"><strong>org.apache.tomcat.jdbc.pool.interceptor.QueryTimeoutInterceptor</strong></a></font></td></tr><tr><td><blockquote>

+    <p>Automatically calls <code>java.sql.Statement.setQueryTimeout(seconds)</code> when a new statement is created.

+       The pool itself doesn't timeout the query, it is still up to the JDBC driver to enforce query timeouts.

+    </p>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">queryTimeout</code></strong></td><td align="left" valign="center">

+        <p>(int as String) The number of seconds to set for the query timeout.

+           A value less than or equal to zero will disable this feature.

+           The default value is <code>1</code> seconds.

+        </p>

+      </td></tr></table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReport"><strong>org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReport</strong></a></font></td></tr><tr><td><blockquote>

+    <p>Keeps track of query performance and issues log entries when queries exceed a time threshold of fail.

+       The log level used is <code>WARN</code>

+    </p>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">threshold</code></td><td align="left" valign="center">

+        <p>(int as String) The number of milliseconds a query has to exceed before issuing a log alert.

+           The default value is <code>1000</code> milliseconds.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxQueries</code></td><td align="left" valign="center">

+        <p>(int as String) The maximum number of queries to keep track of in order to preserve memory space.

+           A value less than or equal to 0 will disable this feature.

+           The default value is <code>1000</code>.

+        </p>

+      </td></tr></table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReportJmx"><strong>org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReportJmx</strong></a></font></td></tr><tr><td><blockquote>

+    <p>Extends the <code>SlowQueryReport</code> and in addition to log entries it issues JMX notification

+       for monitoring tools to react to. Inherits all the attributes from its parent class.

+       This class uses Tomcat's JMX engine so it wont work outside of the Tomcat container.

+       By default, JMX notifications are sent through the ConnectionPool mbean if it is enabled.

+       The <code>SlowQueryReportJmx</code> can also register an MBean if <code>notifyPool=false</code>

+    </p>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">notifyPool</code></td><td align="left" valign="center">

+        <p>(boolean as String) Set to false if you want JMX notifications to go to the <code>SlowQueryReportJmx</code> MBean

+           The default value is <code>true</code>.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">objectName</code></td><td align="left" valign="center">

+        <p>(String) Define a valid <code>javax.management.ObjectName</code> string that will be used to register this object with the platform mbean server

+           The default value is <code>null</code> and the object will be registered using

+           tomcat.jdbc:type=org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReportJmx,name=the-name-of-the-pool

+        </p>

+      </td></tr></table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.tomcat.jdbc.pool.interceptor.ResetAbandonedTimer"><strong>org.apache.tomcat.jdbc.pool.interceptor.ResetAbandonedTimer</strong></a></font></td></tr><tr><td><blockquote>

+    <p>

+        The abandoned timer starts when a connection is checked out from the pool.

+        This means if you have a 30second timeout and run 10x10second queries using the connection

+        it will be marked abandoned and potentially reclaimed depending on the <code>abandonWhenPercentageFull</code>

+        attribute.

+        Using this interceptor it will reset the checkout timer every time you perform an operation on the connection or execute a

+        query successfully.

+    </p>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr></table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Code Example"><!--()--></a><a name="Code_Example"><strong>Code Example</strong></a></font></td></tr><tr><td><blockquote>

+  <p>Other examples of Tomcat configuration for JDBC usage can be found <a href="http://tomcat.apache.org/tomcat-7.0-doc/jndi-datasource-examples-howto.html">in the Tomcat documentation</a>. </p>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Plain Ol' Java"><!--()--></a><a name="Plain_Ol'_Java"><strong>Plain Ol' Java</strong></a></font></td></tr><tr><td><blockquote>

+    <p>Here is a simple example of how to create and use a data source.</p>

+<div class="codeBox"><pre><code>  import java.sql.Connection;

+  import java.sql.ResultSet;

+  import java.sql.Statement;

+

+  import org.apache.tomcat.jdbc.pool.DataSource;

+  import org.apache.tomcat.jdbc.pool.PoolProperties;

+

+  public class SimplePOJOExample {

+

+      public static void main(String[] args) throws Exception {

+          PoolProperties p = new PoolProperties();

+          p.setUrl("jdbc:mysql://localhost:3306/mysql");

+          p.setDriverClassName("com.mysql.jdbc.Driver");

+          p.setUsername("root");

+          p.setPassword("password");

+          p.setJmxEnabled(true);

+          p.setTestWhileIdle(false);

+          p.setTestOnBorrow(true);

+          p.setValidationQuery("SELECT 1");

+          p.setTestOnReturn(false);

+          p.setValidationInterval(30000);

+          p.setTimeBetweenEvictionRunsMillis(30000);

+          p.setMaxActive(100);

+          p.setInitialSize(10);

+          p.setMaxWait(10000);

+          p.setRemoveAbandonedTimeout(60);

+          p.setMinEvictableIdleTimeMillis(30000);

+          p.setMinIdle(10);

+          p.setLogAbandoned(true);

+          p.setRemoveAbandoned(true);

+          p.setJdbcInterceptors(

+            "org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;"+

+            "org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer");

+          DataSource datasource = new DataSource();

+          datasource.setPoolProperties(p);

+

+          Connection con = null;

+          try {

+            con = datasource.getConnection();

+            Statement st = con.createStatement();

+            ResultSet rs = st.executeQuery("select * from user");

+            int cnt = 1;

+            while (rs.next()) {

+                System.out.println((cnt++)+". Host:" +rs.getString("Host")+

+                  " User:"+rs.getString("User")+" Password:"+rs.getString("Password"));

+            }

+            rs.close();

+            st.close();

+          } finally {

+            if (con!=null) try {con.close();}catch (Exception ignore) {}

+          }

+      }

+

+  }</code></pre></div>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="As a Resource"><!--()--></a><a name="As_a_Resource"><strong>As a Resource</strong></a></font></td></tr><tr><td><blockquote>

+    <p>And here is an example on how to configure a resource for JNDI lookups</p>

+<div class="codeBox"><pre><code>&lt;Resource name="jdbc/TestDB"

+          auth="Container"

+          type="javax.sql.DataSource"

+          factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"

+          testWhileIdle="true"

+          testOnBorrow="true"

+          testOnReturn="false"

+          validationQuery="SELECT 1"

+          validationInterval="30000"

+          timeBetweenEvictionRunsMillis="30000"

+          maxActive="100"

+          minIdle="10"

+          maxWait="10000"

+          initialSize="10"

+          removeAbandonedTimeout="60"

+          removeAbandoned="true"

+          logAbandoned="true"

+          minEvictableIdleTimeMillis="30000"

+          jmxEnabled="true"

+          jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;

+            org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer"

+          username="root"

+          password="password"

+          driverClassName="com.mysql.jdbc.Driver"

+          url="jdbc:mysql://localhost:3306/mysql"/&gt;</code></pre></div>

+

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Asynchronous Connection Retrieval"><!--()--></a><a name="Asynchronous_Connection_Retrieval"><strong>Asynchronous Connection Retrieval</strong></a></font></td></tr><tr><td><blockquote>

+    <p> The Tomcat JDBC connection pool supports asynchronous connection retrieval without adding additional threads to the

+        pool library. It does this by adding a method to the data source called <code>Future&lt;Connection&gt; getConnectionAsync()</code>.

+        In order to use the async retrieval, two conditions must be met:

+    </p>

+        <ol>

+          <li>You must configure the <code>fairQueue</code> property to be <code>true</code>.</li>

+          <li>You will have to cast the data source to <code>org.apache.tomcat.jdbc.pool.DataSource</code></li>

+        </ol>

+        An example of using the async feature is show below.

+<div class="codeBox"><pre><code>  Connection con = null;

+  try {

+    Future&lt;Connection&gt; future = datasource.getConnectionAsync();

+    while (!future.isDone()) {

+      System.out.println("Connection is not yet available. Do some background work");

+      try {

+        Thread.sleep(100); //simulate work

+      }catch (InterruptedException x) {

+        Thread.currentThread().interrupt();

+      }

+    }

+    con = future.get(); //should return instantly

+    Statement st = con.createStatement();

+    ResultSet rs = st.executeQuery("select * from user");</code></pre></div>

+

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Interceptors"><strong>Interceptors</strong></a></font></td></tr><tr><td><blockquote>

+    <p>Interceptors are a powerful way to enable, disable or modify functionality on a specific connection or its sub components.

+       There are many different use cases for when interceptors are useful. By default, and for performance reasons, the connection pool is stateless.

+       The only state the pool itself inserts are <code>defaultAutoCommit</code>, <code>defaultReadOnly</code>, <code>defaultTransactionIsolation</code>, <code>defaultCatalog</code> if

+       these are set. These 4 properties are only set upon connection creation. Should these properties be modified during the usage of the connection,

+       the pool itself will not reset them.</p>

+    <p>An interceptor has to extend the <code>org.apache.tomcat.jdbc.pool.JdbcInterceptor</code> class. This class is fairly simple,

+       You will need to have a no arg constructor</p>

+<div class="codeBox"><pre><code>  public JdbcInterceptor() {

+  }</code></pre></div>

+    <p>

+       When a connection is borrowed from the pool, the interceptor can initialize or in some other way react to the event by implementing the

+    </p>

+<div class="codeBox"><pre><code>  public abstract void reset(ConnectionPool parent, PooledConnection con);</code></pre></div>

+    <p>

+       method. This method gets called with two parameters, a reference to the connection pool itself <code>ConnectionPool parent</code>

+       and a reference to the underlying connection <code>PooledConnection con</code>.

+    </p>

+    <p>

+       When a method on the <code>java.sql.Connection</code> object is invoked, it will cause the

+    </p>

+<div class="codeBox"><pre><code>  public Object invoke(Object proxy, Method method, Object[] args) throws Throwable</code></pre></div>

+    <p>

+       method to get invoked. The <code>Method method</code> is the actual method invoked, and <code>Object[] args</code> are the arguments.

+       To look at a very simple example, where we demonstrate how to make the invocation to <code>java.sql.Connection.close()</code> a noop

+       if the connection has been closed

+    </p>

+<div class="codeBox"><pre><code>  if (CLOSE_VAL==method.getName()) {

+      if (isClosed()) return null; //noop for already closed.

+  }

+  return super.invoke(proxy,method,args);</code></pre></div>

+    <p>

+        There is an observation being made. It is the comparison of the method name. One way to do this would be to do

+        <code>"close".equals(method.getName())</code>.

+        Above we see a direct reference comparison between the method name and <code>static final String</code> reference.

+        According to the JVM spec, method names and static final String end up in a shared constant pool, so the reference comparison should work.

+        One could of course do this as well:

+    </p>

+<div class="codeBox"><pre><code>  if (compare(CLOSE_VAL,method)) {

+      if (isClosed()) return null; //noop for already closed.

+  }

+  return super.invoke(proxy,method,args);</code></pre></div>

+    <p>

+        The <code>compare(String,Method)</code> will use the <code>useEquals</code> flag on an interceptor and do either reference comparison or

+        a string value comparison when the <code>useEquals=true</code> flag is set.

+    </p>

+    <p>Pool start/stop<br>

+       When the connection pool is started or closed, you can be notifed. You will only be notified once per interceptor class

+       even though it is an instance method. and you will be notified using an interceptor currently not attached to a pool.

+    </p>

+<div class="codeBox"><pre><code>  public void poolStarted(ConnectionPool pool) {

+  }

+

+  public void poolClosed(ConnectionPool pool) {

+  }</code></pre></div>

+    <p>

+       When overriding these methods, don't forget to call super if you are extending a class other than <code>JdbcInterceptor</code>

+    </p>

+    <p>Configuring interceptors<br>

+       Interceptors are configured using the <code>jdbcInterceptors</code> property or the <code>setJdbcInterceptors</code> method.

+       An interceptor can have properties, and would be configured like this

+    </p>

+<div class="codeBox"><pre><code>  String jdbcInterceptors=

+    "org.apache.tomcat.jdbc.pool.interceptor.ConnectionState(useEquals=true,fast=yes)"</code></pre></div>

+

+    <p>Interceptor properties<br>

+       Since interceptors can have properties, you need to be able to read the values of these properties within your

+       interceptor. Taking an example like the one above, you can override the <code>setProperties</code> method.

+    </p>

+<div class="codeBox"><pre><code>  public void setProperties(Map&lt;String, InterceptorProperty&gt; properties) {

+     super.setProperties(properties);

+     final String myprop = "myprop";

+     InterceptorProperty p1 = properties.get(myprop);

+     if (p1!=null) {

+         setMyprop(Long.parseLong(p1.getValue()));

+     }

+  }</code></pre></div>

+

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Getting the actual JDBC connection"><!--()--></a><a name="Getting_the_actual_JDBC_connection"><strong>Getting the actual JDBC connection</strong></a></font></td></tr><tr><td><blockquote>

+    <p>Connection pools create wrappers around the actual connection in order to properly pool them.

+       We also create interceptors in these wrappers to be able to perform certain functions.

+       If there is a need to retrieve the actual connection, one can do so using the <code>javax.sql.PooledConnection</code>

+       interface.

+    </p>

+<div class="codeBox"><pre><code>  Connection con = datasource.getConnection();

+  Connection actual = ((javax.sql.PooledConnection)con).getConnection();</code></pre></div>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Building"><strong>Building</strong></a></font></td></tr><tr><td><blockquote>

+  <p>We build the JDBC pool code with 1.6, but it is backwards compatible down to 1.5 for runtime environment. For unit test, we use 1.6 and higher</p>

+  <p>Other examples of Tomcat configuration for JDBC usage can be found <a href="http://tomcat.apache.org/tomcat-7.0-doc/jndi-datasource-examples-howto.html">in the Tomcat documentation</a>. </p>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Building from source"><!--()--></a><a name="Building_from_source"><strong>Building from source</strong></a></font></td></tr><tr><td><blockquote>

+    <p>Building is pretty simple. The pool has a dependency on <code>tomcat-juli.jar</code> and in case you want the <code>SlowQueryReportJmx</code></p>

+<div class="codeBox"><pre><code>  javac -classpath tomcat-juli.jar \

+        -d . \

+        org/apache/tomcat/jdbc/pool/*.java \

+        org/apache/tomcat/jdbc/pool/interceptor/*.java \

+        org/apache/tomcat/jdbc/pool/jmx/*.java</code></pre></div>

+    <p>

+       A build file can be found in the Tomcat <a href="http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/">source repository</a>.

+    </p>

+    <p>

+      As a convenience, a build file is also included where a simple build command will generate all files needed.

+    </p>

+<div class="codeBox"><pre><code>  ant download  (downloads dependencies)

+  ant build     (compiles and generates .jar files)

+  ant dist      (creates a release package)

+  ant test      (runs tests, expects a test database to be setup)</code></pre></div>

+

+    <p>

+      The system is structured for a Maven build, but does generate release artifacts. Just the library itself.

+    </p>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/jndi-datasource-examples-howto.html b/tomcat-uid/webapps/docs/jndi-datasource-examples-howto.html
index 6b375a4..620277c 100644
--- a/tomcat-uid/webapps/docs/jndi-datasource-examples-howto.html
+++ b/tomcat-uid/webapps/docs/jndi-datasource-examples-howto.html
@@ -1,10 +1,85 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 6.0 (6.0.41) - JNDI Datasource HOW-TO</title><meta name="author" content="Les Hughes"><meta name="author" content="David Haraburda"><meta name="author" content="Glenn Nielsen"><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - JNDI Datasource HOW-TO</title><meta name="author" content="Les Hughes"><meta name="author" content="David Haraburda"><meta name="author" content="Glenn Nielsen"><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat 6.0</h1><h2>JNDI Datasource HOW-TO</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

-<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#DriverManager,_the_service_provider_mechanism_and_memory_leaks">DriverManager, the service provider mechanism and memory leaks</a></li><li><a href="#Database_Connection_Pool_(DBCP)_Configurations">Database Connection Pool (DBCP) Configurations</a><ol><li><a href="#Installation">Installation</a></li><li><a href="#Preventing_database_connection_pool_leaks">Preventing database connection pool leaks</a></li><li><a href="#MySQL_DBCP_Example">MySQL DBCP Example</a></li><li><a href="#Oracle_8i,_9i_&_10g">Oracle 8i, 9i &amp; 10g</a></li><li><a href="#PostgreSQL">PostgreSQL</a></li></ol></li><li><a href="#Non-DBCP_Solutions">Non-DBCP Solutions</a></li><li><a href="#Oracle_8i_with_OCI_client">Oracle 8i with OCI client</a><ol><li><a href="#Oracle_8i_with_OCI_client/Introduction">Introduction</a></li><li><a href="#Putting_it_all_together">Putting it all together</a></li></ol></li><li><a href="#Common_Problems">Common Problems</a><ol><li><a href="#Intermittent_Database_Connection_Failures">Intermittent Database Connection Failures</a></li><li><a href="#Random_Connection_Closed_Exceptions">Random Connection Closed Exceptions</a></li><li><a href="#Context_versus_GlobalNamingResources">Context versus GlobalNamingResources</a></li><li><a href="#JNDI_Resource_Naming_and_Realm_Interaction">JNDI Resource Naming and Realm Interaction</a></li></ol></li></ul>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>JNDI Datasource HOW-TO</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#DriverManager,_the_service_provider_mechanism_and_memory_leaks">DriverManager, the service provider mechanism and memory leaks</a></li><li><a href="#Database_Connection_Pool_(DBCP)_Configurations">Database Connection Pool (DBCP) Configurations</a><ol><li><a href="#Installation">Installation</a></li><li><a href="#Preventing_database_connection_pool_leaks">Preventing database connection pool leaks</a></li><li><a href="#MySQL_DBCP_Example">MySQL DBCP Example</a></li><li><a href="#Oracle_8i,_9i_&amp;_10g">Oracle 8i, 9i &amp; 10g</a></li><li><a href="#PostgreSQL">PostgreSQL</a></li></ol></li><li><a href="#Non-DBCP_Solutions">Non-DBCP Solutions</a></li><li><a href="#Oracle_8i_with_OCI_client">Oracle 8i with OCI client</a><ol><li><a href="#Oracle_8i_with_OCI_client/Introduction">Introduction</a></li><li><a href="#Putting_it_all_together">Putting it all together</a></li></ol></li><li><a href="#Common_Problems">Common Problems</a><ol><li><a href="#Intermittent_Database_Connection_Failures">Intermittent Database Connection Failures</a></li><li><a href="#Random_Connection_Closed_Exceptions">Random Connection Closed Exceptions</a></li><li><a href="#Context_versus_GlobalNamingResources">Context versus GlobalNamingResources</a></li><li><a href="#JNDI_Resource_Naming_and_Realm_Interaction">JNDI Resource Naming and Realm Interaction</a></li></ol></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>JNDI Datasource configuration is covered extensively in the

@@ -23,13 +98,13 @@
 <b>Please note that JNDI resource configuration changed somewhat between

 Tomcat 5.0.x and Tomcat 5.5.x.</b>  You will most likely need to modify older

 JNDI resource configurations to match the syntax in the example below in order

-to make them work in Tomcat 6.x.x.

+to make them work in Tomcat 7.x.x.

 </p>

 

 <p>

-Also, please note that JNDI DataSource configuration in general, and this 

-tutorial in particular, assumes that you have read and understood the 

-<a href="config/context.html">Context</a> and 

+Also, please note that JNDI DataSource configuration in general, and this

+tutorial in particular, assumes that you have read and understood the

+<a href="config/context.html">Context</a> and

 <a href="config/host.html">Host</a> configuration references, including

 the section about Automatic Application Deployment in the latter reference.

 </p>

@@ -85,13 +160,13 @@
 </ul>

 

 <p>

-These libraries are located in a single JAR at 

+These libraries are located in a single JAR at

 <code>$CATALINA_HOME/lib/tomcat-dbcp.jar</code>. However,

 only the classes needed for connection pooling have been included, and the

 packages have been renamed to avoid interfering with applications.

 </p>

 

-<p>DBCP 1.3 provides support for JDBC 3.0.</p>

+<p>DBCP 1.4 provides support for JDBC 4.0.</p>

 

 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Installation"><strong>Installation</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -129,7 +204,7 @@
 <code>Resource</code> configuration for your DBCP DataSource:

 </p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>removeAbandoned="true"</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>removeAbandoned="true"</code></pre></div>

 

 <p>

 When available database connections run low DBCP will recover and recycle

@@ -141,7 +216,7 @@
 of seconds a database connection has been idle before it is considered abandoned.

 </p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>removeAbandonedTimeout="60"</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>removeAbandonedTimeout="60"</code></pre></div>

 

 <p>

 The default timeout for removing abandoned connections is 300 seconds.

@@ -152,7 +227,7 @@
 if you want DBCP to log a stack trace of the code which abandoned the

 database connection resources.

 </p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>logAbandoned="true"</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>logAbandoned="true"</code></pre></div>

 <p>

 The default is <code>false</code>.

 </p>

@@ -161,7 +236,7 @@
 

 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="MySQL DBCP Example"><!--()--></a><a name="MySQL_DBCP_Example"><strong>MySQL DBCP Example</strong></a></font></td></tr><tr><td><blockquote>

 

-<h3>0. Introduction</h3>

+<h5>0. Introduction</h5>

 <p>Versions of <a href="http://www.mysql.com/products/mysql/index.html">MySQL</a> and JDBC

 drivers that have been reported to work:

 </p>

@@ -173,7 +248,7 @@
 

 <p>Before you proceed, don't forget to copy the JDBC Driver's jar into <code>$CATALINA_HOME/lib</code>.</p>

 

-<h3>1. MySQL configuration</h3>

+<h5>1. MySQL configuration</h5>

 <p>

 Ensure that you follow these instructions as variations can cause problems.

 </p>

@@ -182,16 +257,14 @@
 Your MySQL user <strong>must</strong> have a password assigned. The driver

 will fail if you try to connect with an empty password.

 </p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-mysql&gt; GRANT ALL PRIVILEGES ON *.* TO javauser@localhost 

+<div class="codeBox"><pre><code>mysql&gt; GRANT ALL PRIVILEGES ON *.* TO javauser@localhost

     -&gt;   IDENTIFIED BY 'javadude' WITH GRANT OPTION;

 mysql&gt; create database javatest;

 mysql&gt; use javatest;

 mysql&gt; create table testdata (

     -&gt;   id int not null auto_increment primary key,

-    -&gt;   foo varchar(25), 

-    -&gt;   bar int);

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    -&gt;   foo varchar(25),

+    -&gt;   bar int);</code></pre></div>

 <blockquote>

 <strong>Note:</strong> the above user should be removed once testing is

 complete!

@@ -199,8 +272,7 @@
 

 <p>Next insert some test data into the testdata table.

 </p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-mysql&gt; insert into testdata values(null, 'hello', 12345);

+<div class="codeBox"><pre><code>mysql&gt; insert into testdata values(null, 'hello', 12345);

 Query OK, 1 row affected (0.00 sec)

 

 mysql&gt; select * from testdata;

@@ -211,15 +283,13 @@
 +----+-------+-------+

 1 row in set (0.00 sec)

 

-mysql&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+mysql&gt;</code></pre></div>

 

-<h3>2. Context configuration</h3>

+<h5>2. Context configuration</h5>

 <p>Configure the JNDI DataSource in Tomcat by adding a declaration for your

 resource to your <a href="config/context.html">Context</a>.</p>

 <p>For example:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;Context&gt;

+<div class="codeBox"><pre><code>&lt;Context&gt;

 

     &lt;!-- maxActive: Maximum number of database connections in pool. Make sure you

          configure your mysqld max_connections large enough to handle

@@ -242,7 +312,7 @@
          org.gjt.mm.mysql.Driver - we recommend using Connector/J though.

          Class name for the official MySQL Connector/J driver is com.mysql.jdbc.Driver.

          --&gt;

-    

+

     &lt;!-- url: The JDBC connection url for connecting to your MySQL database.

          --&gt;

 

@@ -251,14 +321,12 @@
                username="javauser" password="javadude" driverClassName="com.mysql.jdbc.Driver"

                url="jdbc:mysql://localhost:3306/javatest"/&gt;

 

-&lt;/Context&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/Context&gt;</code></pre></div>

 

-<h3>3. web.xml configuration</h3>

+<h5>3. web.xml configuration</h5>

 

 <p>Now create a <code>WEB-INF/web.xml</code> for this test application.</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;web-app xmlns="http://java.sun.com/xml/ns/j2ee"

+<div class="codeBox"><pre><code>&lt;web-app xmlns="http://java.sun.com/xml/ns/j2ee"

     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"

@@ -270,13 +338,11 @@
       &lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt;

       &lt;res-auth&gt;Container&lt;/res-auth&gt;

   &lt;/resource-ref&gt;

-&lt;/web-app&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/web-app&gt;</code></pre></div>

 

-<h3>4. Test code</h3>

-<p>Now create a simple <code>test.jsp</code> page for use later.

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %&gt;

+<h5>4. Test code</h5>

+<p>Now create a simple <code>test.jsp</code> page for use later.</p>

+<div class="codeBox"><pre><code>&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %&gt;

 &lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %&gt;

 

 &lt;sql:query var="rs" dataSource="jdbc/TestDB"&gt;

@@ -290,22 +356,21 @@
   &lt;body&gt;

 

   &lt;h2&gt;Results&lt;/h2&gt;

-  

+

 &lt;c:forEach var="row" items="${rs.rows}"&gt;

     Foo ${row.foo}&lt;br/&gt;

     Bar ${row.bar}&lt;br/&gt;

 &lt;/c:forEach&gt;

 

   &lt;/body&gt;

-&lt;/html&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-</p>

+&lt;/html&gt;</code></pre></div>

 

-<p>That JSP page makes use of <a href="http://java.sun.com/products/jsp/jstl">JSTL</a>'s

+<p>That JSP page makes use of

+<a href="http://www.oracle.com/technetwork/java/index-jsp-135995.html">JSTL</a>'s

 SQL and Core taglibs. You can get it from

 <a href="http://tomcat.apache.org/taglibs/standard/">Apache Tomcat Taglibs - Standard Tag Library</a>

-project &mdash; just make sure you get a 1.1.x release. Once you have JSTL,

-copy <code>jstl.jar</code> and <code>standard.jar</code> to your web app's

+project &mdash; just make sure you get a 1.1.x or later release. Once you have

+JSTL, copy <code>jstl.jar</code> and <code>standard.jar</code> to your web app's

 <code>WEB-INF/lib</code> directory.

 

 </p>

@@ -319,8 +384,8 @@
 

 </blockquote></td></tr></table>

 

-<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Oracle 8i, 9i & 10g"><!--()--></a><a name="Oracle_8i,_9i_&_10g"><strong>Oracle 8i, 9i &amp; 10g</strong></a></font></td></tr><tr><td><blockquote>

-<h3>0.    Introduction</h3>

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Oracle 8i, 9i &amp; 10g"><!--()--></a><a name="Oracle_8i,_9i_&amp;_10g"><strong>Oracle 8i, 9i &amp; 10g</strong></a></font></td></tr><tr><td><blockquote>

+<h5>0.    Introduction</h5>

 

 <p>Oracle requires minimal changes from the MySQL configuration except for the

 usual gotchas :-)</p>

@@ -337,7 +402,7 @@
 for this driver class will be discontinued in the next major release.

 </p>

 

-<h3>1. Context configuration</h3>

+<h5>1. Context configuration</h5>

 <p>In a similar manner to the mysql config above, you will need to define your

 Datasource in your <a href="config/context.html">Context</a>. Here we define a

 Datasource called myoracle using the thin driver to connect as user scott,

@@ -347,57 +412,51 @@
 

 <p>Use of the OCI driver should simply involve a changing thin to oci in the URL string.

 </p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;Resource name="jdbc/myoracle" auth="Container"

+<div class="codeBox"><pre><code>&lt;Resource name="jdbc/myoracle" auth="Container"

               type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"

               url="jdbc:oracle:thin:@127.0.0.1:1521:mysid"

               username="scott" password="tiger" maxActive="20" maxIdle="10"

-              maxWait="-1"/&gt; 

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+              maxWait="-1"/&gt;</code></pre></div>

 

-<h3>2.    web.xml configuration</h3>

+<h5>2.    web.xml configuration</h5>

 <p>You should ensure that you respect the element ordering defined by the DTD when you

 create you applications web.xml file.</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;resource-ref&gt;

+<div class="codeBox"><pre><code>&lt;resource-ref&gt;

  &lt;description&gt;Oracle Datasource example&lt;/description&gt;

  &lt;res-ref-name&gt;jdbc/myoracle&lt;/res-ref-name&gt;

  &lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt;

  &lt;res-auth&gt;Container&lt;/res-auth&gt;

-&lt;/resource-ref&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-<h3>3.   Code example</h3>

-<p>You can use the same example application as above (asuming you create the required DB

+&lt;/resource-ref&gt;</code></pre></div>

+<h5>3.   Code example</h5>

+<p>You can use the same example application as above (assuming you create the required DB

 instance, tables etc.) replacing the Datasource code with something like</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-Context initContext = new InitialContext();

+<div class="codeBox"><pre><code>Context initContext = new InitialContext();

 Context envContext  = (Context)initContext.lookup("java:/comp/env");

 DataSource ds = (DataSource)envContext.lookup("jdbc/myoracle");

 Connection conn = ds.getConnection();

-//etc.

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+//etc.</code></pre></div>

 </blockquote></td></tr></table>

 

 

 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="PostgreSQL"><strong>PostgreSQL</strong></a></font></td></tr><tr><td><blockquote>

-<h3>0.    Introduction</h3>

+<h5>0.    Introduction</h5>

 <p>PostgreSQL is configured in a similar manner to Oracle.</p>

 

-<h3>1. Required files </h3>

+<h5>1. Required files </h5>

 <p>

 Copy the Postgres JDBC jar to $CATALINA_HOME/lib. As with Oracle, the

 jars need to be in this directory in order for DBCP's Classloader to find

 them. This has to be done regardless of which configuration step you take next.

 </p>

 

-<h3>2. Resource configuration</h3>

+<h5>2. Resource configuration</h5>

 

 <p>

 You have two choices here: define a datasource that is shared across all Tomcat

 applications, or define a datasource specifically for one application.

 </p>

 

-<h4>2a. Shared resource configuration</h4>

+<h6>2a. Shared resource configuration</h6>

 <p>

 Use this option if you wish to define a datasource that is shared across

 multiple Tomcat applications, or if you just prefer defining your datasource

@@ -406,13 +465,11 @@
 <p><i>This author has not had success here, although others have reported so.

 Clarification would be appreciated here.</i></p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;Resource name="jdbc/postgres" auth="Container"

+<div class="codeBox"><pre><code>&lt;Resource name="jdbc/postgres" auth="Container"

           type="javax.sql.DataSource" driverClassName="org.postgresql.Driver"

           url="jdbc:postgresql://127.0.0.1:5432/mydb"

-          username="myuser" password="mypasswd" maxActive="20" maxIdle="10" maxWait="-1"/&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-<h4>2b. Application-specific resource configuration</h4>

+          username="myuser" password="mypasswd" maxActive="20" maxIdle="10" maxWait="-1"/&gt;</code></pre></div>

+<h6>2b. Application-specific resource configuration</h6>

 

 <p>

 Use this option if you wish to define a datasource specific to your application,

@@ -425,28 +482,24 @@
 The Context element should look something like the following.

 </p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;Context&gt;

+<div class="codeBox"><pre><code>&lt;Context&gt;

 

 &lt;Resource name="jdbc/postgres" auth="Container"

           type="javax.sql.DataSource" driverClassName="org.postgresql.Driver"

           url="jdbc:postgresql://127.0.0.1:5432/mydb"

           username="myuser" password="mypasswd" maxActive="20" maxIdle="10"

 maxWait="-1"/&gt;

-&lt;/Context&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/Context&gt;</code></pre></div>

 

-<h3>3. web.xml configuration</h3>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;resource-ref&gt;

+<h5>3. web.xml configuration</h5>

+<div class="codeBox"><pre><code>&lt;resource-ref&gt;

  &lt;description&gt;postgreSQL Datasource example&lt;/description&gt;

  &lt;res-ref-name&gt;jdbc/postgres&lt;/res-ref-name&gt;

  &lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt;

  &lt;res-auth&gt;Container&lt;/res-auth&gt;

-&lt;/resource-ref&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/resource-ref&gt;</code></pre></div>

 

-<h4>4. Accessing the datasource</h4>

+<h5>4. Accessing the datasource</h5>

 <p>

 When accessing the datasource programmatically, remember to prepend

 <code>java:/comp/env</code> to your JNDI lookup, as in the following snippet of

@@ -454,8 +507,7 @@
 you change it in the above resource definition file as well.

 </p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-InitialContext cxt = new InitialContext();

+<div class="codeBox"><pre><code>InitialContext cxt = new InitialContext();

 if ( cxt == null ) {

    throw new Exception("Uh oh -- no context!");

 }

@@ -464,8 +516,7 @@
 

 if ( ds == null ) {

    throw new Exception("Data source not found!");

-}

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+}</code></pre></div>

 

 </blockquote></td></tr></table>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Non-DBCP Solutions"><!--()--></a><a name="Non-DBCP_Solutions"><strong>Non-DBCP Solutions</strong></a></font></td></tr><tr><td><blockquote>

@@ -480,11 +531,11 @@
 <p>

 In order to use OCI driver, you should have an Oracle client installed. You should have installed

 Oracle8i(8.1.7) client from cd,  and download the suitable JDBC/OCI

-driver(Oracle8i 8.1.7.1 JDBC/OCI Driver) from <a href="http://otn.oracle.com/">otn.oracle.com</a>. 

+driver(Oracle8i 8.1.7.1 JDBC/OCI Driver) from <a href="http://otn.oracle.com/">otn.oracle.com</a>.

 </p>

 <p>

 After renaming <code>classes12.zip</code> file to <code>classes12.jar</code>

-for Tomcat, copy it into <code>$CATALINA_HOME/lib</code>. 

+for Tomcat, copy it into <code>$CATALINA_HOME/lib</code>.

 You may also have to remove the <code>javax.sql.*</code> classes

 from this file depending upon the version of Tomcat and JDK you are using.

 </p>

@@ -493,38 +544,36 @@
 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Putting it all together"><!--()--></a><a name="Putting_it_all_together"><strong>Putting it all together</strong></a></font></td></tr><tr><td><blockquote>

 <p>

 Ensure that you have the <code>ocijdbc8.dll</code> or <code>.so</code> in your <code>$PATH</code> or <code>LD_LIBRARY_PATH</code>

- (possibly in <code>$ORAHOME\bin</code>) and also confirm that the native library can be loaded by a simple test program 

+ (possibly in <code>$ORAHOME\bin</code>) and also confirm that the native library can be loaded by a simple test program

 using <code>System.loadLibrary("ocijdbc8");</code>

 </p>

 <p>

 You should next create a simple test servlet or jsp that has these

 <strong>critical lines</strong>:

 </p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-DriverManager.registerDriver(new

+<div class="codeBox"><pre><code>DriverManager.registerDriver(new

 oracle.jdbc.driver.OracleDriver());

 conn =

-DriverManager.getConnection("jdbc:oracle:oci8:@database","username","password");

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+DriverManager.getConnection("jdbc:oracle:oci8:@database","username","password");</code></pre></div>

 <p>

-where database is of the form <code>host:port:SID</code> Now if you try to access the URL of your 

-test servlet/jsp and what you get is a 

+where database is of the form <code>host:port:SID</code> Now if you try to access the URL of your

+test servlet/jsp and what you get is a

 <code>ServletException</code> with a root cause of <code>java.lang.UnsatisfiedLinkError:get_env_handle</code>.

 </p>

 <p>

-First, the <code>UnsatisfiedLinkError</code> indicates that you have 

+First, the <code>UnsatisfiedLinkError</code> indicates that you have

+</p>

 <ul>

 <li>a mismatch between your JDBC classes file and

 your Oracle client version. The giveaway here is the message stating that a needed library file cannot be

 found. For example, you may be using a classes12.zip file from Oracle Version 8.1.6 with a Version 8.1.5

-Oracle client. The classeXXXs.zip file and Oracle client software versions must match.

+Oracle client. The classesXXX.zip file and Oracle client software versions must match.

 </li>

 <li>A <code>$PATH</code>, <code>LD_LIBRARY_PATH</code> problem.</li>

-<li>It has been reported that ignoring the driver you have downloded from otn and using 

+<li>It has been reported that ignoring the driver you have downloaded from otn and using

 the classes12.zip file from the directory <code>$ORAHOME\jdbc\lib</code> will also work.

 </li>

 </ul>

-</p>

 <p>

 Next you may experience the error <code>ORA-06401 NETCMN: invalid driver designator</code>

 </p>

@@ -599,8 +648,7 @@
 Here is an example of properly written code to use a database connection

 obtained from a connection pool:

 </p>

-<pre>

-  Connection conn = null;

+<div class="codeBox"><pre><code>  Connection conn = null;

   Statement stmt = null;  // Or PreparedStatement if needed

   ResultSet rs = null;

   try {

@@ -631,15 +679,14 @@
       try { conn.close(); } catch (SQLException e) { ; }

       conn = null;

     }

-  }

-</pre>

+  }</code></pre></div>

 

 </blockquote></td></tr></table>

 

 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Context versus GlobalNamingResources"><!--()--></a><a name="Context_versus_GlobalNamingResources"><strong>Context versus GlobalNamingResources</strong></a></font></td></tr><tr><td><blockquote>

 <p>

   Please note that although the above instructions place the JNDI declarations in a Context

-  element, it is possible and sometimes desirable to place these declarations in the 

+  element, it is possible and sometimes desirable to place these declarations in the

   <a href="config/globalresources.html">GlobalNamingResources</a> section of the server

   configuration file.  A resource placed in the GlobalNamingResources section will be shared

   among the Contexts of the server.

@@ -652,8 +699,33 @@
   defined in the &lt;GlobalNamingResources&gt; or &lt;Context&gt; section, not a datasource as renamed

   using &lt;ResourceLink&gt;.

 </p>

-</blockquote></td></tr></table> 

+</blockquote></td></tr></table>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/jndi-datasource-examples-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/jndi-resources-howto.html b/tomcat-uid/webapps/docs/jndi-resources-howto.html
index 0cb10ea..5783e79 100644
--- a/tomcat-uid/webapps/docs/jndi-resources-howto.html
+++ b/tomcat-uid/webapps/docs/jndi-resources-howto.html
@@ -1,27 +1,103 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 6.0 (6.0.41) - JNDI Resources HOW-TO</title><meta name="author" content="Craig R. McClanahan"><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - JNDI Resources HOW-TO</title><meta name="author" content="Craig R. McClanahan"><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat 6.0</h1><h2>JNDI Resources HOW-TO</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>JNDI Resources HOW-TO</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Introduction">Introduction</a></li><li><a href="#web.xml_configuration">web.xml configuration</a></li><li><a href="#context.xml_configuration">context.xml configuration</a></li><li><a href="#Global_configuration">Global configuration</a></li><li><a href="#Using_resources">Using resources</a></li><li><a href="#Tomcat_Standard_Resource_Factories">Tomcat Standard Resource Factories</a><ol><li><a href="#Generic_JavaBean_Resources">Generic JavaBean Resources</a></li><li><a href="#UserDatabase_Resources">UserDatabase Resources</a></li><li><a href="#JavaMail_Sessions">JavaMail Sessions</a></li><li><a href="#JDBC_Data_Sources">JDBC Data Sources</a></li></ol></li><li><a href="#Adding_Custom_Resource_Factories">Adding Custom Resource Factories</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

-<p>Tomcat 6 provides a JNDI <strong>InitialContext</strong> implementation

-instance for each web application running under it, in a manner that is 

-compatible with those provided by a 

-<a href="http://java.sun.com/j2ee">Java2 Enterprise Edition</a> application 

-server. The J2EE standard provides a standard set of elements in the

-<code>/WEB-INF/web.xml</code> file to reference/define resources.</p>

+<p>Tomcat provides a JNDI <strong>InitialContext</strong> implementation

+instance for each web application running under it, in a manner that is

+compatible with those provided by a

+<a href="http://www.oracle.com/technetwork/java/javaee/overview/index.html">

+Java Enterprise Edition</a> application server. The Java EE standard provides

+a standard set of elements in the <code>/WEB-INF/web.xml</code> file to

+reference/define resources.</p>

 

 <p>See the following Specifications for more information about programming APIs

-for JNDI, and for the features supported by Java2 Enterprise Edition (J2EE)

+for JNDI, and for the features supported by Java Enterprise Edition (Java EE)

 servers, which Tomcat emulates for the services that it provides:</p>

 <ul>

-<li><a href="http://java.sun.com/products/jndi">Java Naming and Directory

-    Interface</a> (included in JDK 1.4 onwards)</li>

-<li><a href="http://java.sun.com/j2ee/download.html">J2EE Platform

-    Specification</a> (in particular, see Chapter 5 on <em>Naming</em>)</li>

+<li><a href="http://docs.oracle.com/javase/7/docs/technotes/guides/jndi/index.html">

+    Java Naming and Directory Interface</a> (included in JDK 1.4 onwards)</li>

+<li><a href="http://www.oracle.com/technetwork/java/javaee/documentation/index.html">

+    Java EE Platform Specification</a> (in particular, see Chapter 5 on <em>Naming</em>)</li>

 </ul>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="web.xml configuration"><!--()--></a><a name="web.xml_configuration"><strong>web.xml configuration</strong></a></font></td></tr><tr><td><blockquote>

@@ -36,7 +112,7 @@
 <li><code><strong>&lt;resource-ref&gt;</strong></code> - Resource reference,

     which is typically to an object factory for resources such as a JDBC

     <code>DataSource</code>, a JavaMail <code>Session</code>, or custom

-    object factories configured into Tomcat 6.</li>

+    object factories configured into Tomcat.</li>

 <li><code><strong>&lt;resource-env-ref&gt;</strong></code> - Resource

     environment reference, a new variation of <code>resource-ref</code>

     added in Servlet 2.4 that is simpler to configure for resources

@@ -47,6 +123,18 @@
 use to create the resource and that no further configuration information is

 required, Tomcat will use the information in <code>/WEB-INF/web.xml</code> to

 create the resource.</p>

+

+<p>Tomcat provides a number of Tomcat specific options for JNDI resources that

+cannot be specified in web.xml. These include <code>closeMethod</code> that

+enables faster cleaning-up of JNDI resources when a web application stops and

+<code>singleton</code> that controls whether or not a new instance of the

+resource is created for every JNDI lookup. To use these configuration options

+the resource must be specified in a web application's

+<a href="config/context.html"><code>&lt;Context&gt;</code></a> element or in the

+<a href="config/globalresources.html">

+<code><strong>&lt;GlobalNamingResources&gt;</strong></code></a> element of

+<code>$CATALINA_BASE/conf/server.xml</code>.</p>

+

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="context.xml configuration"><!--()--></a><a name="context.xml_configuration"><strong>context.xml configuration</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>If Tomcat is unable to identify the appropriate resource factory and/or

@@ -63,25 +151,25 @@
 element:</p>

 

 <ul>

-<li><a href="config/context.html#Environment Entries">&lt;Environment&gt;</a> -

+<li><a href="config/context.html#Environment_Entries">&lt;Environment&gt;</a> -

     Configure names and values for scalar environment entries that will be

     exposed to the web application through the JNDI

     <code>InitialContext</code> (equivalent to the inclusion of an

     <code>&lt;env-entry&gt;</code> element in the web application

     deployment descriptor).</li>

-<li><a href="config/context.html#Resource Definitions">&lt;Resource&gt;</a> -

+<li><a href="config/context.html#Resource_Definitions">&lt;Resource&gt;</a> -

     Configure the name and data type of a resource made available to the

     application (equivalent to the inclusion of a

     <code>&lt;resource-ref&gt;</code> element in the web application

     deployment descriptor).</li>

-<li><a href="config/context.html#Resource Links">&lt;ResourceLink&gt;</a> -

-    Add a link to a resource defined in the global JNDI context. Use resource 

-    links to give a web application access to a resource defined in 

+<li><a href="config/context.html#Resource_Links">&lt;ResourceLink&gt;</a> -

+    Add a link to a resource defined in the global JNDI context. Use resource

+    links to give a web application access to a resource defined in

     the <a href="config/globalresources.html">&lt;GlobalNamingResources&gt;</a>

     child element of the <a href="config/server.html">&lt;Server&gt;</a>

     element.</li>

 <li><a href="config/context.html#Transaction">&lt;Transaction&gt;</a> -

-    Add a resource factory for instantiating the UserTransaction object 

+    Add a resource factory for instantiating the UserTransaction object

     instance that is available at <code>java:comp/UserTransaction</code>.</li>

 

 </ul>

@@ -108,17 +196,17 @@
 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Global configuration"><!--()--></a><a name="Global_configuration"><strong>Global configuration</strong></a></font></td></tr><tr><td><blockquote>

 

-<p>Tomcat 6 maintains a separate namespace of global resources for the 

-entire server.  These are configured in the 

+<p>Tomcat maintains a separate namespace of global resources for the

+entire server.  These are configured in the

 <a href="config/globalresources.html">

-<code><strong>&lt;GlobalNamingResources&gt;</strong></code></a> element of 

-<code>$CATALINA_BASE/conf/server.xml</code>. You may expose these resources to 

-web applications by using a 

-<a href="config/context.html#Resource Links">&lt;ResourceLink&gt;</a> to

+<code><strong>&lt;GlobalNamingResources&gt;</strong></code></a> element of

+<code>$CATALINA_BASE/conf/server.xml</code>. You may expose these resources to

+web applications by using a

+<a href="config/context.html#Resource_Links">&lt;ResourceLink&gt;</a> to

 include it in the per-web-application context.</p>

 

-<p>If a resource has been defined using a 

-<a href="config/context.html#Resource Links">&lt;ResourceLink&gt;</a>, it is not

+<p>If a resource has been defined using a

+<a href="config/context.html#Resource_Links">&lt;ResourceLink&gt;</a>, it is not

 necessary for that resource to be defined in <code>/WEB-INF/web.xml</code>.

 However, it is recommended to keep the entry in <code>/WEB-INF/web.xml</code>

 to document the resource requirements for the web application.</p>

@@ -132,8 +220,7 @@
 access to a resource - in this case, to a JDBC <code>DataSource</code> -

 would look something like this:</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-// Obtain our environment naming context

+<div class="codeBox"><pre><code>// Obtain our environment naming context

 Context initCtx = new InitialContext();

 Context envCtx = (Context) initCtx.lookup("java:comp/env");

 

@@ -144,12 +231,11 @@
 // Allocate and use a connection from the pool

 Connection conn = ds.getConnection();

 ... use this connection to access the database ...

-conn.close();

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+conn.close();</code></pre></div>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat Standard Resource Factories"><!--()--></a><a name="Tomcat_Standard_Resource_Factories"><strong>Tomcat Standard Resource Factories</strong></a></font></td></tr><tr><td><blockquote>

 

-  <p>Tomcat 6 includes a series of standard resource factories that can

+  <p>Tomcat includes a series of standard resource factories that can

   provide services to your web applications, but give you configuration

   flexibility (via the

   <a href="config/context.html"><code>&lt;Context&gt;</code></a> element)

@@ -157,41 +243,41 @@
   subsection below details the configuration and usage of the standard resource

   factories.</p>

 

-  <p>See <a href="#Adding Custom Resource Factories">Adding Custom

+  <p>See <a href="#Adding_Custom_Resource_Factories">Adding Custom

   Resource Factories</a> for information about how to create, install,

   configure, and use your own custom resource factory classes with

-  Tomcat 6.</p>

+  Tomcat.</p>

 

   <p><em>NOTE</em> - Of the standard resource factories, only the

   "JDBC Data Source" and "User Transaction" factories are mandated to

   be available on other platforms, and then they are required only if

-  the platform implements the Java2 Enterprise Edition (J2EE) specs.

+  the platform implements the Java Enterprise Edition (Java EE) specs.

   All other standard resource factories, plus custom resource factories

   that you write yourself, are specific to Tomcat and cannot be assumed

   to be available on other containers.</p>

 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Generic JavaBean Resources"><!--()--></a><a name="Generic_JavaBean_Resources"><strong>Generic JavaBean Resources</strong></a></font></td></tr><tr><td><blockquote>

 

-    <h3>0.  Introduction</h3>

+    <h5>0.  Introduction</h5>

 

     <p>This resource factory can be used to create objects of <em>any</em>

     Java class that conforms to standard JavaBeans naming conventions (i.e.

     it has a zero-arguments constructor, and has property setters that

     conform to the setFoo() naming pattern.  The resource factory will

-    create a new instance of the appropriate bean class every time a

-    <code>lookup()</code> for this entry is made.</p>

+    only create a new instance of the appropriate bean class every time a

+    <code>lookup()</code> for this entry is made if the <code>singleton</code>

+    attribute of the factory is set to <code>false</code>.</p>

 

     <p>The steps required to use this facility are described below.</p>

 

-    <h3>1.  Create Your JavaBean Class</h3>

+    <h5>1.  Create Your JavaBean Class</h5>

 

     <p>Create the JavaBean class which will be instantiated each time

     that the resource factory is looked up.  For this example, assume

     you create a class <code>com.mycompany.MyBean</code>, which looks

     like this:</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-package com.mycompany;

+<div class="codeBox"><pre><code>package com.mycompany;

 

 public class MyBean {

 

@@ -216,18 +302,16 @@
   }

 

 

-}

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+}</code></pre></div>

 

-  <h3>2.  Declare Your Resource Requirements</h3>

+  <h5>2.  Declare Your Resource Requirements</h5>

 

   <p>Next, modify your web application deployment descriptor

   (<code>/WEB-INF/web.xml</code>) to declare the JNDI name under which

   you will request new instances of this bean.  The simplest approach is

   to use a <code>&lt;resource-env-ref&gt;</code> element, like this:</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;resource-env-ref&gt;

+<div class="codeBox"><pre><code>&lt;resource-env-ref&gt;

   &lt;description&gt;

     Object factory for MyBean instances.

   &lt;/description&gt;

@@ -237,8 +321,7 @@
   &lt;resource-env-ref-type&gt;

     com.mycompany.MyBean

   &lt;/resource-env-ref-type&gt;

-&lt;/resource-env-ref&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/resource-env-ref&gt;</code></pre></div>

 

     <p><strong>WARNING</strong> - Be sure you respect the element ordering

     that is required by the DTD for web application deployment descriptors!

@@ -246,36 +329,32 @@
     <a href="http://wiki.apache.org/tomcat/Specifications">Servlet

     Specification</a> for details.</p>

 

-  <h3>3.  Code Your Application's Use Of This Resource</h3>

+  <h5>3.  Code Your Application's Use Of This Resource</h5>

 

   <p>A typical use of this resource environment reference might look

   like this:</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-Context initCtx = new InitialContext();

+<div class="codeBox"><pre><code>Context initCtx = new InitialContext();

 Context envCtx = (Context) initCtx.lookup("java:comp/env");

 MyBean bean = (MyBean) envCtx.lookup("bean/MyBeanFactory");

 

 writer.println("foo = " + bean.getFoo() + ", bar = " +

-               bean.getBar());

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+               bean.getBar());</code></pre></div>

 

-    <h3>4.  Configure Tomcat's Resource Factory</h3>

+    <h5>4.  Configure Tomcat's Resource Factory</h5>

 

     <p>To configure Tomcat's resource factory, add an element like this to the

     <a href="config/context.html"><code>&lt;Context&gt;</code></a> element for

     this web application.</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;Context ...&gt;

+<div class="codeBox"><pre><code>&lt;Context ...&gt;

   ...

   &lt;Resource name="bean/MyBeanFactory" auth="Container"

             type="com.mycompany.MyBean"

             factory="org.apache.naming.factory.BeanFactory"

             bar="23"/&gt;

   ...

-&lt;/Context&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/Context&gt;</code></pre></div>

 

     <p>Note that the resource name (here, <code>bean/MyBeanFactory</code>

     must match the value specified in the web application deployment

@@ -285,59 +364,153 @@
     <code>foo</code> property (although we could have), the bean will

     contain whatever default value is set up by its constructor.</p>

 

+    <p>Some beans have properties with types that can not automatically be

+    converted from a string value. Setting such properties using the Tomcat

+    BeanFactory will fail with a NamingException. In cases were those beans

+    provide methods to set the properties from a string value, the Tomcat

+    BeanFactory can be configured to use these methods. The configuration is

+    done with the <code>forceString</code> attribute.</p>

+

+    <p>Assume our bean looks like this:</p>

+

+<div class="codeBox"><pre><code>package com.mycompany;

+

+import java.net.InetAddress;

+import java.net.UnknownHostException;

+

+public class MyBean2 {

+

+  private InetAddress local = null;

+

+  public InetAddress getLocal() {

+    return local;

+  }

+

+  public void setLocal(InetAddress ip) {

+    local = ip;

+  }

+

+  public void setLocal(String localHost) {

+    try {

+      local = InetAddress.getByName(localHost);

+    } catch (UnknownHostException ex) {

+    }

+  }

+

+  private InetAddress remote = null;

+

+  public InetAddress getRemote() {

+    return remote;

+  }

+

+  public void setRemote(InetAddress ip) {

+    remote = ip;

+  }

+

+  public void host(String remoteHost) {

+    try {

+      remote = InetAddress.getByName(remoteHost);

+    } catch (UnknownHostException ex) {

+    }

+  }

+

+}</code></pre></div>

+

+    <p>The bean has two properties, both are of type <code>InetAddress</code>.

+    The first property <code>local</code> has an additional setter taking a

+    string argument. By default the Tomcat BeanFactory would try to use the

+    automatically detected setter with the same argument type as the property

+    type and then throw a NamingException, because it is not prepared to convert

+    the given string attribute value to <code>InetAddress</code>.

+    We can tell the Tomcat BeanFactory to use the other setter like that:</p>

+

+<div class="codeBox"><pre><code>&lt;Context ...&gt;

+  ...

+  &lt;Resource name="bean/MyBeanFactory" auth="Container"

+            type="com.mycompany.MyBean2"

+            factory="org.apache.naming.factory.BeanFactory"

+            forceString="local"

+            local="localhost"/&gt;

+  ...

+&lt;/Context&gt;</code></pre></div>

+

+    <p>The bean property <code>remote</code> can also be set from a string,

+    but one has to use the non-standard method name <code>host</code>.

+    To set <code>local</code> and <code>remote</code> use the following

+    configuration:</p>

+

+<div class="codeBox"><pre><code>&lt;Context ...&gt;

+  ...

+  &lt;Resource name="bean/MyBeanFactory" auth="Container"

+            type="com.mycompany.MyBean2"

+            factory="org.apache.naming.factory.BeanFactory"

+            forceString="local,remote=host"

+            local="localhost"

+            remote="tomcat.apache.org"/&gt;

+  ...

+&lt;/Context&gt;</code></pre></div>

+

+    <p>Multiple property descriptions can be combined in

+    <code>forceString</code> by concatenation with comma as a separator.

+    Each property description consists of either only the property name

+    in which case the BeanFactory calls the setter method. Or it consist

+    of <code>name=method</code> in which case the property named

+    <code>name</code> is set by calling method <code>method</code>.

+    For properties of types <code>String</code> or of primitive type

+    or of their associated primitive wrapper classes using

+    <code>forceString</code> is not needed. The correct setter will be

+    automatically detected and argument conversion will be applied.</p>

+

   </blockquote></td></tr></table>

 

 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="UserDatabase Resources"><!--()--></a><a name="UserDatabase_Resources"><strong>UserDatabase Resources</strong></a></font></td></tr><tr><td><blockquote>

 

-    <h3>0.  Introduction</h3>

+    <h5>0.  Introduction</h5>

 

     <p>UserDatabase resources are typically configured as global resources for

-    use by a UserDatabase realm. Tomcat includes a UserDatabaseFactoory that

+    use by a UserDatabase realm. Tomcat includes a UserDatabaseFactory that

     creates UserDatabase resources backed by an XML file - usually

     <code>tomcat-users.xml</code></p>

 

     <p>The steps required to set up a global UserDatabase resource are described

     below.</p>

 

-    <h3>1. Create/edit the XML file</h3>

+    <h5>1. Create/edit the XML file</h5>

 

-    <p>The XMl file is typically located at

+    <p>The XML file is typically located at

     <code>$CATALINA_BASE/conf/tomcat-users.xml</code> however, you are free to

     locate the file anywhere on the file system. It is recommended that the XML

     files are placed in <code>$CATALINA_BASE/conf</code>. A typical XML would

     look like:</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;?xml version='1.0' encoding='utf-8'?&gt;

+<div class="codeBox"><pre><code>&lt;?xml version='1.0' encoding='utf-8'?&gt;

 &lt;tomcat-users&gt;

   &lt;role rolename="tomcat"/&gt;

   &lt;role rolename="role1"/&gt;

   &lt;user username="tomcat" password="tomcat" roles="tomcat"/&gt;

   &lt;user username="both" password="tomcat" roles="tomcat,role1"/&gt;

   &lt;user username="role1" password="tomcat" roles="role1"/&gt;

-&lt;/tomcat-users&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/tomcat-users&gt;</code></pre></div>

 

-    <h3>2.  Declare Your Resource</h3>

+    <h5>2.  Declare Your Resource</h5>

 

     <p>Next, modify <code>$CATALINA_BASE/conf/server.xml</code> to create the

-    UserDatabase resource based on your XMl file. It should look something like

+    UserDatabase resource based on your XML file. It should look something like

     this:</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;Resource name="UserDatabase"

+<div class="codeBox"><pre><code>&lt;Resource name="UserDatabase"

           auth="Container"

           type="org.apache.catalina.UserDatabase"

           description="User database that can be updated and saved"

           factory="org.apache.catalina.users.MemoryUserDatabaseFactory"

           pathname="conf/tomcat-users.xml"

-          readonly="false" /&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+          readonly="false" /&gt;</code></pre></div>

 

-    <p>The <code>pathname</code> attribute can be absolute or relative. If

-    relative, it is relative to <code>$CATALINA_BASE</code>.</p>

-    

+    <p>The <code>pathname</code> attribute can be a URL, an absolute path or a

+    relative path. If relative, it is relative to <code>$CATALINA_BASE</code>.

+    </p>

+

     <p>The <code>readonly</code> attribute is optional and defaults to

     <code>true</code> if not supplied. If the XML is writeable then it will be

     written to when Tomcat starts. <strong>WARNING:</strong> When the file is

@@ -345,7 +518,7 @@
     is running as. Ensure that these are appropriate to maintain the security

     of your installation.</p>

 

-    <h3>3.  Configure the Realm</h3>

+    <h5>3.  Configure the Realm</h5>

 

     <p>Configure a UserDatabase Realm to use this resource as described in the

     <a href="config/realm.html">Realm configuration documentation</a>.</p>

@@ -355,16 +528,16 @@
 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JavaMail Sessions"><!--()--></a><a name="JavaMail_Sessions"><strong>JavaMail Sessions</strong></a></font></td></tr><tr><td><blockquote>

 

-    <h3>0.  Introduction</h3>

+    <h5>0.  Introduction</h5>

 

     <p>In many web applications, sending electronic mail messages is a

     required part of the system's functionality.  The

-    <a href="http://java.sun.com/products/javamail">Java Mail</a> API

+    <a href="http://www.oracle.com/technetwork/java/javamail/index.html">Java Mail</a> API

     makes this process relatively straightforward, but requires many

     configuration details that the client application must be aware of

     (including the name of the SMTP host to be used for message sending).</p>

 

-    <p>Tomcat 6 includes a standard resource factory that will create

+    <p>Tomcat includes a standard resource factory that will create

     <code>javax.mail.Session</code> session instances for you, already

     configured to connect to an SMTP server.

     In this way, the application is totally insulated from changes in the

@@ -373,7 +546,7 @@
 

     <p>The steps required for this are outlined below.</p>

 

-    <h3>1.  Declare Your Resource Requirements</h3>

+    <h5>1.  Declare Your Resource Requirements</h5>

 

     <p>The first thing you should do is modify the web application deployment

     descriptor (<code>/WEB-INF/web.xml</code>) to declare the JNDI name under

@@ -382,8 +555,7 @@
     standard <code>java:comp/env</code> naming context that is the root of

     all provided resource factories.  A typical <code>web.xml</code> entry

     might look like this:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;resource-ref&gt;

+<div class="codeBox"><pre><code>&lt;resource-ref&gt;

   &lt;description&gt;

     Resource reference to a factory for javax.mail.Session

     instances that may be used for sending electronic mail

@@ -399,8 +571,7 @@
   &lt;res-auth&gt;

     Container

   &lt;/res-auth&gt;

-&lt;/resource-ref&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/resource-ref&gt;</code></pre></div>

 

     <p><strong>WARNING</strong> - Be sure you respect the element ordering

     that is required by the DTD for web application deployment descriptors!

@@ -408,11 +579,10 @@
     <a href="http://wiki.apache.org/tomcat/Specifications">Servlet

     Specification</a> for details.</p>

 

-    <h3>2.  Code Your Application's Use Of This Resource</h3>

+    <h5>2.  Code Your Application's Use Of This Resource</h5>

 

     <p>A typical use of this resource reference might look like this:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-Context initCtx = new InitialContext();

+<div class="codeBox"><pre><code>Context initCtx = new InitialContext();

 Context envCtx = (Context) initCtx.lookup("java:comp/env");

 Session session = (Session) envCtx.lookup("mail/Session");

 

@@ -423,8 +593,7 @@
 message.setRecipients(Message.RecipientType.TO, to);

 message.setSubject(request.getParameter("subject"));

 message.setContent(request.getParameter("content"), "text/plain");

-Transport.send(message);

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+Transport.send(message);</code></pre></div>

 

     <p>Note that the application uses the same resource reference name

     that was declared in the web application deployment descriptor.  This

@@ -432,21 +601,19 @@
     <a href="config/context.html"><code>&lt;Context&gt;</code></a> element

     for the web application as described below.</p>

 

-    <h3>3.  Configure Tomcat's Resource Factory</h3>

+    <h5>3.  Configure Tomcat's Resource Factory</h5>

 

     <p>To configure Tomcat's resource factory, add an elements like this to the

     <a href="config/context.html"><code>&lt;Context&gt;</code></a> element for

     this web application.</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;Context ...&gt;

+<div class="codeBox"><pre><code>&lt;Context ...&gt;

   ...

   &lt;Resource name="mail/Session" auth="Container"

             type="javax.mail.Session"

             mail.smtp.host="localhost"/&gt;

   ...

-&lt;/Context&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/Context&gt;</code></pre></div>

 

     <p>Note that the resource name (here, <code>mail/Session</code>) must

     match the value specified in the web application deployment descriptor.

@@ -458,31 +625,33 @@
     <code>javax.mail.Session.getInstance(java.util.Properties)</code> as part of

     the <code>java.util.Properties</code> collection. In addition to the

     properties defined in Annex A of the JavaMail specification, individual

-    providers may also support additional properties.</p>

+    providers may also support additional properties.

+    </p>

     

-    <p>Tomcat's resource factory provides a <code>password</code> property

-    which can be configured by adding <code>password="yourpassword"</code>

-    to the Resource definition.</p>

+    <p>If the resource is configured with a <code>password</code> attribute and

+    either a <code>mail.smtp.user</code> or <code>mail.user</code> attribute

+    then Tomcat's resource factory will configure and add a

+    <code>javax.mail.Authenticator</code> to the mail session.</p>

 

-    <h3>4.  Install the JavaMail libraries</h3>

+    <h5>4.  Install the JavaMail libraries</h5>

 

-    <p><a href="http://www.oracle.com/technetwork/java/index-138643.html">

-    Download the JavaMail API</a>.  The JavaMail API requires the Java Activation

-    Framework (JAF) API as well.  The Java Activation Framework is included in

-    Java SE 6 onwards. Java SE 5 users can download the latest version, 

-    <a href="http://www.oracle.com/technetwork/java/javase/downloads/index-135046.html">

-    JAF 1.1.1</a>.

+    <p><a href="http://javamail.java.net/">

+    Download the JavaMail API</a>.</p>

+

+    <p>Unpackage the distribution and place mail.jar  into $CATALINA_HOME/lib so

+    that it is available to Tomcat during the initialization of the mail Session

+    Resource. <strong>Note:</strong> placing this jar in both $CATALINA_HOME/lib

+    and a  web application's lib folder will cause an error, so ensure you have

+    it in the $CATALINA_HOME/lib location only.

     </p>

 

-    <p>Unpackage the distribution(s) and place mail.jar (and activation.jar if

-    required) into $CATALINA_HOME/lib so the JAR(s) is(are) available to Tomcat

-    during the initialization of the mail Session Resource.

-    <strong>Note:</strong> placing jars in both $CATALINA_HOME/lib and a web

-    application's lib folder will cause an error, so ensure mail.jar (and

-    activation.jar) is(are) placed only the $CATALINA_HOME/lib location.

-    </p>

+    <h5>5.  Restart Tomcat</h5>

 

-    <h3>Example Application</h3>

+    <p>For the additional JAR to be visible to Tomcat, it is necessary for the

+    Tomcat instance to be restarted.</p>

+

+

+    <h5>Example Application</h5>

 

     <p>The <code>/examples</code> application included with Tomcat contains

     an example of utilizing this resource factory.  It is accessed via the

@@ -502,29 +671,31 @@
 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JDBC Data Sources"><!--()--></a><a name="JDBC_Data_Sources"><strong>JDBC Data Sources</strong></a></font></td></tr><tr><td><blockquote>

 

-    <h3>0.  Introduction</h3>

+    <h5>0.  Introduction</h5>

 

     <p>Many web applications need to access a database via a JDBC driver,

-    to support the functionality required by that application.  The J2EE

-    Platform Specification requires J2EE Application Servers to make

+    to support the functionality required by that application.  The Java EE

+    Platform Specification requires Java EE Application Servers to make

     available a <em>DataSource</em> implementation (that is, a connection

-    pool for JDBC connections) for this purpose.  Tomcat 6 offers exactly

+    pool for JDBC connections) for this purpose.  Tomcat offers exactly

     the same support, so that database-based applications you develop on

-    Tomcat using this service will run unchanged on any J2EE server.</p>

+    Tomcat using this service will run unchanged on any Java EE server.</p>

 

     <p>For information about JDBC, you should consult the following:</p>

     <ul>

-    <li><a href="http://java.sun.com/products/jdbc/">http://java.sun.com/products/jdbc/</a> -

+    <li><a href="http://www.oracle.com/technetwork/java/javase/jdbc/index.html">

+        http://www.oracle.com/technetwork/java/javase/jdbc/index.html</a> -

         Home page for information about Java Database Connectivity.</li>

-    <li><a href="http://docs.oracle.com/javase/1.3/docs/guide/jdbc/spec2/jdbc2.1.frame.html">http://docs.oracle.com/javase/1.3/docs/guide/jdbc/spec2/jdbc2.1.frame.html</a> -

+    <li><a href="http://java.sun.com/j2se/1.3/docs/guide/jdbc/spec2/jdbc2.1.frame.html">http://java.sun.com/j2se/1.3/docs/guide/jdbc/spec2/jdbc2.1.frame.html</a> -

         The JDBC 2.1 API Specification.</li>

     <li><a href="http://java.sun.com/products/jdbc/jdbc20.stdext.pdf">http://java.sun.com/products/jdbc/jdbc20.stdext.pdf</a> -

         The JDBC 2.0 Standard Extension API (including the

         <code>javax.sql.DataSource</code> API).  This package is now known

         as the "JDBC Optional Package".</li>

-    <li><a href="http://java.sun.com/j2ee/download.html">http://java.sun.com/j2ee/download.html</a> -

-        The J2EE Platform Specification (covers the JDBC facilities that

-        all J2EE platforms must provide to applications).</li>

+    <li><a href="http://www.oracle.com/technetwork/java/javaee/overview/index.htm">

+        http://www.oracle.com/technetwork/java/javaee/overview/index.htm</a> -

+        The Java EE Platform Specification (covers the JDBC facilities that

+        all Java EE platforms must provide to applications).</li>

     </ul>

 

     <p><strong>NOTE</strong> - The default data source support in Tomcat

@@ -533,9 +704,9 @@
     project.  However, it is possible to use any other connection pool

     that implements <code>javax.sql.DataSource</code>, by writing your

     own custom resource factory, as described

-    <a href="#Adding Custom Resource Factories">below</a>.</p>

+    <a href="#Adding_Custom_Resource_Factories">below</a>.</p>

 

-    <h3>1.  Install Your JDBC Driver</h3>

+    <h5>1.  Install Your JDBC Driver</h5>

 

     <p>Use of the <em>JDBC Data Sources</em> JNDI Resource Factory requires

     that you make an appropriate JDBC driver available to both Tomcat internal

@@ -544,7 +715,7 @@
     <code>$CATALINA_HOME/lib</code> directory, which makes the driver

     available both to the resource factory and to your application.</p>

 

-    <h3>2.  Declare Your Resource Requirements</h3>

+    <h5>2.  Declare Your Resource Requirements</h5>

 

     <p>Next, modify the web application deployment descriptor

     (<code>/WEB-INF/web.xml</code>) to declare the JNDI name under

@@ -553,13 +724,12 @@
     standard <code>java:comp/env</code> naming context that is the root of

     all provided resource factories.  A typical <code>web.xml</code> entry

     might look like this:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;resource-ref&gt;

+<div class="codeBox"><pre><code>&lt;resource-ref&gt;

   &lt;description&gt;

     Resource reference to a factory for java.sql.Connection

     instances that may be used for talking to a particular

     database that is configured in the &lt;Context&gt;

-    configurartion for the web application.

+    configuration for the web application.

   &lt;/description&gt;

   &lt;res-ref-name&gt;

     jdbc/EmployeeDB

@@ -570,8 +740,7 @@
   &lt;res-auth&gt;

     Container

   &lt;/res-auth&gt;

-&lt;/resource-ref&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/resource-ref&gt;</code></pre></div>

 

     <p><strong>WARNING</strong> - Be sure you respect the element ordering

     that is required by the DTD for web application deployment descriptors!

@@ -579,19 +748,17 @@
     <a href="http://wiki.apache.org/tomcat/Specifications">Servlet

     Specification</a> for details.</p>

 

-    <h3>3.  Code Your Application's Use Of This Resource</h3>

+    <h5>3.  Code Your Application's Use Of This Resource</h5>

 

     <p>A typical use of this resource reference might look like this:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-Context initCtx = new InitialContext();

+<div class="codeBox"><pre><code>Context initCtx = new InitialContext();

 Context envCtx = (Context) initCtx.lookup("java:comp/env");

 DataSource ds = (DataSource)

   envCtx.lookup("jdbc/EmployeeDB");

 

 Connection conn = ds.getConnection();

 ... use this connection to access the database ...

-conn.close();

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+conn.close();</code></pre></div>

 

     <p>Note that the application uses the same resource reference name that was

     declared in the web application deployment descriptor. This is matched up

@@ -599,14 +766,13 @@
     <a href="config/context.html"><code>&lt;Context&gt;</code></a> element for

     the web application as described below.</p>

 

-    <h3>4.  Configure Tomcat's Resource Factory</h3>

+    <h5>4.  Configure Tomcat's Resource Factory</h5>

 

     <p>To configure Tomcat's resource factory, add an element like this to the

     <a href="config/context.html"><code>&lt;Context&gt;</code></a> element for

     the web application.</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;Context ...&gt;

+<div class="codeBox"><pre><code>&lt;Context ...&gt;

   ...

   &lt;Resource name="jdbc/EmployeeDB"

             auth="Container"

@@ -618,8 +784,7 @@
             maxActive="8"

             maxIdle="4"/&gt;

   ...

-&lt;/Context&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/Context&gt;</code></pre></div>

 

     <p>Note that the resource name (here, <code>jdbc/EmployeeDB</code>) must

     match the value specified in the web application deployment descriptor.</p>

@@ -671,7 +836,7 @@
         returned to the pool. Default: false</li>

     </ul>

     <p>The optional evictor thread is responsible for shrinking the pool

-    by removing any conections which are idle for a long time. The evictor

+    by removing any connections which are idle for a long time. The evictor

     does not respect <code>minIdle</code>. Note that you do not need to

     activate the evictor thread if you only want the pool to shrink according

     to the configured <code>maxIdle</code> property.</p>

@@ -682,7 +847,7 @@
         milliseconds between consecutive runs of the evictor.

         Default: -1 (disabled)</li>

     <li><strong>numTestsPerEvictionRun</strong> - The number of connections

-        that will be checked for idleness by the evitor during each

+        that will be checked for idleness by the evictor during each

         run of the evictor. Default: 3</li>

     <li><strong>minEvictableIdleTimeMillis</strong> - The idle time in

         milliseconds after which a connection can be removed from the pool

@@ -746,21 +911,23 @@
 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Adding Custom Resource Factories"><!--()--></a><a name="Adding_Custom_Resource_Factories"><strong>Adding Custom Resource Factories</strong></a></font></td></tr><tr><td><blockquote>

 

   <p>If none of the standard resource factories meet your needs, you can write

-  your own factory and integrate it into Tomcat 6, and then configure the use

+  your own factory and integrate it into Tomcat, and then configure the use

   of this factory in the

   <a href="config/context.html"><code>&lt;Context&gt;</code></a> element for

   the web application. In the example below, we will create a factory that only

   knows how to create <code>com.mycompany.MyBean</code> beans from the

-  <a href="#Generic JavaBean Resources">Generic JavaBean Resources</a> example

+  <a href="#Generic_JavaBean_Resources">Generic JavaBean Resources</a> example

   above.</p>

 

-  <h3>1.  Write A Resource Factory Class</h3>

+  <h4>1.  Write A Resource Factory Class</h4>

 

   <p>You must write a class that implements the JNDI service provider

-  <code>javax.naming.spi.ObjectFactory</code> inteface.  Every time your

+  <code>javax.naming.spi.ObjectFactory</code> interface.  Every time your

   web application calls <code>lookup()</code> on a context entry that is

-  bound to this factory, the <code>getObjectInstance()</code> method is

-  called, with the following arguments:</p>

+  bound to this factory (assuming that the factory is configured with

+  <code>singleton="false"</code>), the

+  <code>getObjectInstance()</code> method is called, with the following

+  arguments:</p>

   <ul>

   <li><strong>Object obj</strong> - The (possibly null) object containing

       location or reference information that can be used in creating an object.

@@ -783,8 +950,7 @@
   <p>To create a resource factory that knows how to produce <code>MyBean</code>

   instances, you might create a class like this:</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-package com.mycompany;

+<div class="codeBox"><pre><code>package com.mycompany;

 

 import java.util.Enumeration;

 import java.util.Hashtable;

@@ -798,7 +964,7 @@
 public class MyBeanFactory implements ObjectFactory {

 

   public Object getObjectInstance(Object obj,

-      Name name, Context nameCtx, Hashtable environment)

+      Name name2, Context nameCtx, Hashtable environment)

       throws NamingException {

 

       // Acquire an instance of our specified bean class

@@ -827,8 +993,7 @@
 

   }

 

-}

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+}</code></pre></div>

 

   <p>In this example, we are unconditionally creating a new instance of

   the <code>com.mycompany.MyBean</code> class, and populating its properties

@@ -840,8 +1005,8 @@
   bean being configured.</p>

 

   <p>For more information about <code>ObjectFactory</code>, see the

-  <a href="http://java.sun.com/products/jndi/docs.html">JNDI 1.2 Service

-  Provider Interface (SPI) Specification</a>.</p>

+  <a href="http://docs.oracle.com/javase/7/docs/technotes/guides/jndi/index.html">

+  JNDI Service Provider Interface (SPI) Specification</a>.</p>

 

   <p>You will need to compile this class against a class path that includes

   all of the JAR files in the <code>$CATALINA_HOME/lib</code> directory.  When you are through,

@@ -851,15 +1016,14 @@
   files are visible to both Catalina internal resources and your web

   application.</p>

 

-  <h3>2.  Declare Your Resource Requirements</h3>

+  <h4>2.  Declare Your Resource Requirements</h4>

 

   <p>Next, modify your web application deployment descriptor

   (<code>/WEB-INF/web.xml</code>) to declare the JNDI name under which

   you will request new instances of this bean.  The simplest approach is

   to use a <code>&lt;resource-env-ref&gt;</code> element, like this:</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;resource-env-ref&gt;

+<div class="codeBox"><pre><code>&lt;resource-env-ref&gt;

   &lt;description&gt;

     Object factory for MyBean instances.

   &lt;/description&gt;

@@ -869,8 +1033,7 @@
   &lt;resource-env-ref-type&gt;

     com.mycompany.MyBean

   &lt;/resource-env-ref-type&gt;

-&lt;resource-env-ref&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/resource-env-ref&gt;</code></pre></div>

 

     <p><strong>WARNING</strong> - Be sure you respect the element ordering

     that is required by the DTD for web application deployment descriptors!

@@ -878,36 +1041,33 @@
     <a href="http://wiki.apache.org/tomcat/Specifications">Servlet

     Specification</a> for details.</p>

 

-  <h3>3.  Code Your Application's Use Of This Resource</h3>

+  <h4>3.  Code Your Application's Use Of This Resource</h4>

 

   <p>A typical use of this resource environment reference might look

   like this:</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-Context initCtx = new InitialContext();

+<div class="codeBox"><pre><code>Context initCtx = new InitialContext();

 Context envCtx = (Context) initCtx.lookup("java:comp/env");

 MyBean bean = (MyBean) envCtx.lookup("bean/MyBeanFactory");

 

 writer.println("foo = " + bean.getFoo() + ", bar = " +

-               bean.getBar());

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+               bean.getBar());</code></pre></div>

 

-    <h3>4.  Configure Tomcat's Resource Factory</h3>

+    <h4>4.  Configure Tomcat's Resource Factory</h4>

 

     <p>To configure Tomcat's resource factory, add an elements like this to the

     <a href="config/context.html"><code>&lt;Context&gt;</code></a> element for

     this web application.</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;Context ...&gt;

+<div class="codeBox"><pre><code>&lt;Context ...&gt;

   ...

   &lt;Resource name="bean/MyBeanFactory" auth="Container"

             type="com.mycompany.MyBean"

             factory="com.mycompany.MyBeanFactory"

+            singleton="false"

             bar="23"/&gt;

   ...

-&lt;/Context&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;/Context&gt;</code></pre></div>

 

     <p>Note that the resource name (here, <code>bean/MyBeanFactory</code>

     must match the value specified in the web application deployment

@@ -926,6 +1086,31 @@
     modify applications using the resources, as long as you maintain

     compatible APIs.</p>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/jndi-resources-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/jspapi/index.html b/tomcat-uid/webapps/docs/jspapi/index.html
new file mode 100644
index 0000000..4a73392
--- /dev/null
+++ b/tomcat-uid/webapps/docs/jspapi/index.html
@@ -0,0 +1,34 @@
+<!--

+  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.

+-->

+<!doctype html public "-//w3c//dtd html 4.0 transitional//en" "http://www.w3.org/TR/REC-html40/strict.dtd">

+<html>

+    <head>

+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+    <title>API docs</title>

+</head>

+

+<body>

+

+The JSP Javadoc is not installed by default. Download and install

+the "fulldocs" package to get it.

+

+You can also access the javadoc online in the Tomcat

+<a href="http://tomcat.apache.org/tomcat-7.0-doc/">

+documentation bundle</a>.

+

+</body>

+</html>

diff --git a/tomcat-uid/webapps/docs/logging.html b/tomcat-uid/webapps/docs/logging.html
index 9f2352c..c65ca2b 100644
--- a/tomcat-uid/webapps/docs/logging.html
+++ b/tomcat-uid/webapps/docs/logging.html
@@ -1,9 +1,84 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 6.0 (6.0.41) - Logging in Tomcat</title><meta name="author" content="Allistair Crossley"><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - Logging in Tomcat</title><meta name="author" content="Allistair Crossley"><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat 6.0</h1><h2>Logging in Tomcat</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Logging in Tomcat</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Introduction">Introduction</a><ol><li><a href="#Java_logging_API_%E2%80%94_java.util.logging">Java logging API &mdash; java.util.logging</a></li><li><a href="#Servlets_logging_API">Servlets logging API</a></li><li><a href="#Console">Console</a></li><li><a href="#Access_logging">Access logging</a></li></ol></li><li><a href="#Using_java.util.logging_(default)">Using java.util.logging (default)</a><ol><li><a href="#Documentation_references">Documentation references</a></li><li><a href="#Considerations_for_productive_usage">Considerations for productive usage</a></li></ol></li><li><a href="#Using_Log4j">Using Log4j</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

     <p>

@@ -28,7 +103,7 @@
       logging, one has to replace the logging library with the one that is built

       with the full implementation. Such library is provided as an <a href="extras.html">extras</a>

       component. Instructions on how to configure Tomcat to use Log4j framework

-      for its internal logging may be found below.

+      for its internal logging may be found <a href="#Using_Log4j">below</a>.

     </p>

 

     <p>

@@ -39,7 +114,7 @@
         Use system logging API, <code>java.util.logging</code>.

       </li>

       <li>

-        Use logging API provided by the Java Servlets specification,

+        Use the logging API provided by the Java Servlets specification,

         <code>javax.servlet.ServletContext.log(...)</code>

       </li>

       <li>

@@ -96,7 +171,7 @@
       log messages are handled by internal Tomcat logging. Such messages are

       logged to the category named

     </p>

-      <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>org.apache.catalina.core.ContainerBase.[${engine}].[${host}].[${context}]</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+      <div class="codeBox"><pre><code>org.apache.catalina.core.ContainerBase.[${engine}].[${host}].[${context}]</code></pre></div>

     <p>

       This logging is performed according to the Tomcat logging configuration. You

       cannot overwrite it in a web application.

@@ -110,7 +185,7 @@
       or <code>GenericServlet.log(String)</code> are logged at the INFO level.

       The calls to <code>ServletContext.log(String, Throwable)</code> or

       <code>GenericServlet.log(String, Throwable)</code>

-      are logged at the ERROR level.

+      are logged at the SEVERE level.

     </p>

 

     </blockquote></td></tr></table>

@@ -164,9 +239,16 @@
     <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Access logging"><!--()--></a><a name="Access_logging"><strong>Access logging</strong></a></font></td></tr><tr><td><blockquote>

 

     <p>

-      A related, but different feature is access logging. It can be configured

-      as a valve at the Context, or Host, or Engine. See <a href="config/valve.html">Valves</a>

-      documentation for more details.

+      Access logging is a related but different feature, which is

+      implemented as a <code>Valve</code>. It uses self-contained

+      logic to write its log files. The essential requirement for

+      access logging is to handle a large continuous stream of data

+      with low overhead, so it only uses Apache Commons Logging for

+      its own debug messages. This implementation approach avoids

+      additional overhead and potentially complex configuration.

+      Please refer to the <a href="config/valve.html#Access_Logging">Valves</a>

+      documentation for more details on its configuration, including

+      the various report formats.

     </p>

 

     </blockquote></td></tr></table>

@@ -191,6 +273,7 @@
     JULI is enabled by default, and supports per classloader configuration, in

     addition to the regular global java.util.logging configuration. This means

     that logging can be configured at the following layers:

+  </p>

     <ul>

       <li>Globally. That is usually done in the

         <code>${catalina.base}/conf/logging.properties</code> file.

@@ -203,7 +286,6 @@
         <code>WEB-INF/classes/logging.properties</code>

       </li>

     </ul>

-  </p>

   <p>

     The default <code>logging.properties</code> in the JRE specifies a

     <code>ConsoleHandler</code> that routes logging to System.err.

@@ -222,9 +304,7 @@
     so FINEST or ALL should be set. Please refer to <code>java.util.logging</code>

     documentation in the JDK for the complete details:

   </p>

-  <p>

-    <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>org.apache.catalina.level=FINEST</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-  </p>

+  <div class="codeBox"><pre><code>org.apache.catalina.level=FINEST</code></pre></div>

   <p>

     The configuration used by JULI is extremely similar to the one supported by

     plain <code>java.util.logging</code>, but uses a few

@@ -238,7 +318,7 @@
       prefix.</li>

       <li>System property replacement is performed for property values which

       contain ${systemPropertyName}.</li>

-      <li>As in Java 6.0, loggers can define a list of handlers using the

+      <li>As in Java 6, loggers can define a list of handlers using the

       <code>loggerName.handlers</code> property.</li>

       <li>By default, loggers will not delegate to their parent if they have

       associated handlers. This may be changed per logger using the

@@ -255,7 +335,7 @@
   <p>

     <code>org.apache.juli.FileHandler</code> supports buffering of the

       logs. The buffering is not enabled by default. To configure it, use the

-      <code>bufferSize</code> property of a handler. A value of <code>0</code>

+      <code>bufferSize</code> property of a handler. The value of <code>0</code>

       uses system default buffering (typically an 8K buffer will be used). A

       value of <code>&lt;0</code> forces a writer flush upon each log write. A

       value <code>&gt;0</code> uses a BufferedOutputStream with the defined

@@ -264,8 +344,8 @@
   </p>

   <p>

     Example logging.properties file to be placed in $CATALINA_BASE/conf:

-    <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-handlers = 1catalina.org.apache.juli.FileHandler, \

+  </p>

+  <div class="codeBox"><pre><code>handlers = 1catalina.org.apache.juli.FileHandler, \

            2localhost.org.apache.juli.FileHandler, \

            3manager.org.apache.juli.FileHandler, \

            java.util.logging.ConsoleHandler

@@ -307,20 +387,15 @@
 org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = \

    3manager.org.apache.juli.FileHandler

 

-# For example, to log debug messages in ContextConfig and HostConfig

-# classes and to log only warnings and errors in other

-# org.apache.catalina.** classes, uncomment these lines:

-#org.apache.catalina.startup.ContextConfig.level = FINE

-#org.apache.catalina.startup.HostConfig.level = FINE

-#org.apache.catalina.level = WARNING

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-    </p>

-    

+# For example, set the org.apache.catalina.util.LifecycleBase logger to log

+# each component that extends LifecycleBase changing state:

+#org.apache.catalina.util.LifecycleBase.level = FINE</code></pre></div>

+

     <p>

       Example logging.properties for the servlet-examples web application to be

       placed in WEB-INF/classes inside the web application:

-      <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-handlers = org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

+    </p>

+    <div class="codeBox"><pre><code>handlers = org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

 

 ############################################################

 # Handler specific properties.

@@ -332,9 +407,8 @@
 org.apache.juli.FileHandler.prefix = servlet-examples.

 

 java.util.logging.ConsoleHandler.level = FINE

-java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-    </p>

+java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter</code></pre></div>

+

 

     <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Documentation references"><!--()--></a><a name="Documentation_references"><strong>Documentation references</strong></a></font></td></tr><tr><td><blockquote>

       <p>See the following resources for additional information:</p>

@@ -365,8 +439,8 @@
         <li><p>The handlers by default use the system default encoding to write

         the log files. It can be configured with <code>encoding</code> property.

         See Javadoc for details.</p></li>

-        <li><p>Consider configuring an <a href="config/valve.html">Access

-        log</a>.</p></li>

+        <li><p>Consider configuring an

+        <a href="config/valve.html#Access_Logging">Access log</a>.</p></li>

       </ul>

     </blockquote></td></tr></table>

 

@@ -390,61 +464,60 @@
     </p>

 

     <ol>

-        <li>Create a file called <code>log4j.properties</code> with the 

+        <li>Create a file called <code>log4j.properties</code> with the

         following content and save it into <code>$CATALINA_BASE/lib</code></li>

     </ol>

-    <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-log4j.rootLogger=INFO, CATALINA

+    <div class="codeBox"><pre><code>

+log4j.rootLogger = INFO, CATALINA

 

 # Define all the appenders

-log4j.appender.CATALINA=org.apache.log4j.DailyRollingFileAppender

-log4j.appender.CATALINA.File=${catalina.base}/logs/catalina.

-log4j.appender.CATALINA.Append=true

-log4j.appender.CATALINA.Encoding=UTF-8

+log4j.appender.CATALINA = org.apache.log4j.DailyRollingFileAppender

+log4j.appender.CATALINA.File = ${catalina.base}/logs/catalina

+log4j.appender.CATALINA.Append = true

+log4j.appender.CATALINA.Encoding = UTF-8

 # Roll-over the log once per day

-log4j.appender.CATALINA.DatePattern='.'yyyy-MM-dd'.log'

+log4j.appender.CATALINA.DatePattern = '.'yyyy-MM-dd'.log'

 log4j.appender.CATALINA.layout = org.apache.log4j.PatternLayout

 log4j.appender.CATALINA.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

 

-log4j.appender.LOCALHOST=org.apache.log4j.DailyRollingFileAppender

-log4j.appender.LOCALHOST.File=${catalina.base}/logs/localhost.

-log4j.appender.LOCALHOST.Append=true

-log4j.appender.LOCALHOST.Encoding=UTF-8

-log4j.appender.LOCALHOST.DatePattern='.'yyyy-MM-dd'.log'

+log4j.appender.LOCALHOST = org.apache.log4j.DailyRollingFileAppender

+log4j.appender.LOCALHOST.File = ${catalina.base}/logs/localhost

+log4j.appender.LOCALHOST.Append = true

+log4j.appender.LOCALHOST.Encoding = UTF-8

+log4j.appender.LOCALHOST.DatePattern = '.'yyyy-MM-dd'.log'

 log4j.appender.LOCALHOST.layout = org.apache.log4j.PatternLayout

 log4j.appender.LOCALHOST.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

 

-log4j.appender.MANAGER=org.apache.log4j.DailyRollingFileAppender

-log4j.appender.MANAGER.File=${catalina.base}/logs/manager.

-log4j.appender.MANAGER.Append=true

-log4j.appender.MANAGER.Encoding=UTF-8

-log4j.appender.MANAGER.DatePattern='.'yyyy-MM-dd'.log'

+log4j.appender.MANAGER = org.apache.log4j.DailyRollingFileAppender

+log4j.appender.MANAGER.File = ${catalina.base}/logs/manager

+log4j.appender.MANAGER.Append = true

+log4j.appender.MANAGER.Encoding = UTF-8

+log4j.appender.MANAGER.DatePattern = '.'yyyy-MM-dd'.log'

 log4j.appender.MANAGER.layout = org.apache.log4j.PatternLayout

 log4j.appender.MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

 

-log4j.appender.HOST-MANAGER=org.apache.log4j.DailyRollingFileAppender

-log4j.appender.HOST-MANAGER.File=${catalina.base}/logs/host-manager.

-log4j.appender.HOST-MANAGER.Append=true

-log4j.appender.HOST-MANAGER.Encoding=UTF-8

-log4j.appender.HOST-MANAGER.DatePattern='.'yyyy-MM-dd'.log'

+log4j.appender.HOST-MANAGER = org.apache.log4j.DailyRollingFileAppender

+log4j.appender.HOST-MANAGER.File = ${catalina.base}/logs/host-manager

+log4j.appender.HOST-MANAGER.Append = true

+log4j.appender.HOST-MANAGER.Encoding = UTF-8

+log4j.appender.HOST-MANAGER.DatePattern = '.'yyyy-MM-dd'.log'

 log4j.appender.HOST-MANAGER.layout = org.apache.log4j.PatternLayout

 log4j.appender.HOST-MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

 

-log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender

-log4j.appender.CONSOLE.Encoding=UTF-8

+log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender

+log4j.appender.CONSOLE.Encoding = UTF-8

 log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout

 log4j.appender.CONSOLE.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

 

 # Configure which loggers log to which appenders

-log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=INFO, LOCALHOST

-log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager]=\

+log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost] = INFO, LOCALHOST

+log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager] =\

   INFO, MANAGER

-log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager]=\

-  INFO, HOST-MANAGER

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager] =\

+  INFO, HOST-MANAGER</code></pre></div>

     <ol start="2">

-        <li><a href="http://logging.apache.org/log4j">Download Log4J</a> 

-        (v1.2 or later).</li>

+        <li><a href="http://logging.apache.org/log4j">Download Log4J</a>

+        (Tomcat requires v1.2.x).</li>

 

         <li><p>Download or build <code>tomcat-juli.jar</code> and

         <code>tomcat-juli-adapters.jar</code> that are available as an "extras"

@@ -452,7 +525,7 @@
         documentation</a> for details.</p>

         <p>This <code>tomcat-juli.jar</code> differs from the default one. It

         contains the full Apache Commons Logging implementation and thus is

-        able to discover the presense of log4j and configure itself.</p>

+        able to discover the presence of log4j and configure itself.</p>

         </li>

 

         <li><p>If you want to configure Tomcat to use log4j globally:</p>

@@ -482,16 +555,6 @@
           would need to edit the

           <code>$CATALINA_BASE/conf/catalina.policy</code> file to adjust

           it to using a different copy of tomcat-juli.jar.</li>

-          <li>The old <code>tomcat-juli.jar</code> in

-          <code>$CATALINA_HOME/bin</code> is still referenced by manifest of

-          <code>bootstrap.jar</code> and thus will be implicitly present

-          on Tomcat's classpath. The startup scripts configure

-          <code>$CATALINA_BASE/bin/tomcat-juli.jar</code> to be earlier on the

-          classpath than <code>bootstrap.jar</code>, and so it should have

-          higher priority. Thus it should be OK, but

-          consider removing the unneeded copy of <code>tomcat-juli.jar</code>

-          (copy it into all other $CATALINA_BASEs that do not use log4j).

-          Tomcat 7 does not have this issue.</li>

         </ul>

         </li>

 

@@ -509,19 +572,17 @@
     </p>

 

     <p>

-      You can (and should) be more picky about which packages to include 

+      You can (and should) be more picky about which packages to include

       in the logging. Tomcat defines loggers by Engine and Host names.

       For example, for a more detailed Catalina localhost log, add this to the

-      end of the log4j.properties above. Note that there are known issues with 

+      end of the log4j.properties above. Note that there are known issues with

       using this naming convention (with square brackets) in log4j XML based

       configuration files, so we recommend you use a properties file as

       described until a future version of log4j allows this convention.

     </p>

-      <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=DEBUG

+      <div class="codeBox"><pre><code>log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=DEBUG

 log4j.logger.org.apache.catalina.core=DEBUG

-log4j.logger.org.apache.catalina.session=DEBUG

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+log4j.logger.org.apache.catalina.session=DEBUG</code></pre></div>

 

     <p>

       Be warned: a level of DEBUG will produce megabytes of logging and slow

@@ -530,12 +591,12 @@
     </p>

 

     <p>

-      Your web applications should certainly use their own log4j configuration. 

+      Your web applications should certainly use their own log4j configuration.

       This is valid <i>with</i> the above configuration.  You would place a

       similar log4j.properties file in your web application's WEB-INF/classes

       directory, and log4jx.y.z.jar into WEB-INF/lib. Then specify your package

       level logging. This is a basic setup of log4j which does *not* require

-      Commons-Logging, and you should consult the 

+      Commons-Logging, and you should consult the

       <a href="http://logging.apache.org/log4j/docs/documentation.html">log4j

       documentation</a> for more options. This page is intended only as a

       bootstrapping guide.

@@ -551,16 +612,52 @@
         library are likely to automatically choose log4j as the underlying

         logging implementation.</p></li>

 

-        <li><p>The <code>java.util.logging</code> API is still available, for

-        those web applications that use it directly. The

+        <li><p>The <code>java.util.logging</code> API is still available for

+        those web applications that use it directly.  The

         <code>${catalina.base}/conf/logging.properties</code> file is still

-        referenced by Tomcat startup scripts.</p>

+        referenced by Tomcat startup scripts.  For more information, see the

+        subsections of the <a href="#Introduction">Introduction</a> to

+        this page.</p>

         <p> Removal of <code>${catalina.base}/conf/logging.properties</code>

-        file, mentioned as one of the steps, just causes

-        <code>java.util.logging</code> to fallback to the default configuration

-        as configured in JRE, which is to use a ConsoleHandler and do not

-        create any files.</p></li>

+        file, mentioned as one of the steps above, causes

+        <code>java.util.logging</code> to fallback to the default

+        configuration for the JRE, which is to use a ConsoleHandler

+        and therefore not create any standard log files.  You should

+        confirm that all your log files are being created by log4j

+        <i>before</i> disabling the standard mechanism.</p></li>

+

+        <li><p>The <strong>Access Log Valve</strong> and

+        <strong>ExtendedAccessLogValve</strong> use their own self-contained

+        logging implementation, so they

+        <strong><i>cannot be configured to use log4j</i></strong>.

+        Refer to <a href="config/valve.html#Access_Logging">Valves</a>

+        for specific configuration details.</p></li>

     </ul>

-  </blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+  </blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/logging.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/manager-howto.html b/tomcat-uid/webapps/docs/manager-howto.html
index a6bf30a..d28230a 100644
--- a/tomcat-uid/webapps/docs/manager-howto.html
+++ b/tomcat-uid/webapps/docs/manager-howto.html
@@ -1,20 +1,95 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 6.0 (6.0.41) - Manager App HOW-TO</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - Manager App HOW-TO</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat 6.0</h1><h2>Manager App HOW-TO</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

-<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Configuring_Manager_Application_Access">Configuring Manager Application Access</a></li><li><a href="#Supported_Manager_Commands">Supported Manager Commands</a><ol><li><a href="#Deploy_A_New_Application_Remotely">Deploy A New Application Remotely</a></li><li><a href="#Deploy_A_New_Application_from_a_Local_Path">Deploy A New Application from a Local Path</a></li><li><a href="#List_Currently_Deployed_Applications">List Currently Deployed Applications</a></li><li><a href="#Reload_An_Existing_Application">Reload An Existing Application</a></li><li><a href="#List_OS_and_JVM_Properties">List OS and JVM Properties</a></li><li><a href="#List_Available_Global_JNDI_Resources">List Available Global JNDI Resources</a></li><li><a href="#List_Available_Security_Roles">List Available Security Roles</a></li><li><a href="#Session_Statistics">Session Statistics</a></li><li><a href="#Start_an_Existing_Application">Start an Existing Application</a></li><li><a href="#Stop_an_Existing_Application">Stop an Existing Application</a></li><li><a href="#Undeploy_an_Existing_Application">Undeploy an Existing Application</a></li><li><a href="#Finding_memory_leaks">Finding memory leaks</a></li><li><a href="#Server_Status">Server Status</a></li></ol></li><li><a href="#Executing_Manager_Commands_With_Ant">Executing Manager Commands With Ant</a><ol><li><a href="#Tasks_output_capture">Tasks output capture</a></li></ol></li><li><a href="#Using_the_JMX_Proxy_Servlet">Using the JMX Proxy Servlet</a><ol><li><a href="#What_is_JMX_Proxy_Servlet">What is JMX Proxy Servlet</a></li><li><a href="#JMX_Query_command">JMX Query command</a></li><li><a href="#JMX_Set_command">JMX Set command</a></li></ol></li></ul>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Manager App HOW-TO</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Configuring_Manager_Application_Access">Configuring Manager Application Access</a></li><li><a href="#HTML_User-friendly_Interface">HTML User-friendly Interface</a></li><li><a href="#Supported_Manager_Commands">Supported Manager Commands</a><ol><li><a href="#Common_Parameters">Common Parameters</a></li><li><a href="#Deploy_A_New_Application_Archive_(WAR)_Remotely">Deploy A New Application Archive (WAR) Remotely</a></li><li><a href="#Deploy_A_New_Application_from_a_Local_Path">Deploy A New Application from a Local Path</a><ol><li><a href="#Deploy_a_previously_deployed_webapp">Deploy a previously deployed webapp</a></li><li><a href="#Deploy_a_Directory_or_WAR_by_URL">Deploy a Directory or WAR by URL</a></li><li><a href="#Deploy_a_Directory_or_War_from_the_Host_appBase">Deploy a Directory or War from the Host appBase</a></li><li><a href="#Deploy_using_a_Context_configuration_%22.xml%22_file">Deploy using a Context configuration ".xml" file</a></li><li><a href="#Deployment_Notes">Deployment Notes</a></li><li><a href="#Deploy_Response">Deploy Response</a></li></ol></li><li><a href="#List_Currently_Deployed_Applications">List Currently Deployed Applications</a></li><li><a href="#Reload_An_Existing_Application">Reload An Existing Application</a></li><li><a href="#List_OS_and_JVM_Properties">List OS and JVM Properties</a></li><li><a href="#List_Available_Global_JNDI_Resources">List Available Global JNDI Resources</a></li><li><a href="#Session_Statistics">Session Statistics</a></li><li><a href="#Expire_Sessions">Expire Sessions</a></li><li><a href="#Start_an_Existing_Application">Start an Existing Application</a></li><li><a href="#Stop_an_Existing_Application">Stop an Existing Application</a></li><li><a href="#Undeploy_an_Existing_Application">Undeploy an Existing Application</a></li><li><a href="#Finding_memory_leaks">Finding memory leaks</a></li><li><a href="#Thread_Dump">Thread Dump</a></li><li><a href="#VM_Info">VM Info</a></li></ol></li><li><a href="#Server_Status">Server Status</a></li><li><a href="#Using_the_JMX_Proxy_Servlet">Using the JMX Proxy Servlet</a><ol><li><a href="#What_is_JMX_Proxy_Servlet">What is JMX Proxy Servlet</a></li><li><a href="#JMX_Query_command">JMX Query command</a></li><li><a href="#JMX_Get_command">JMX Get command</a></li><li><a href="#JMX_Set_command">JMX Set command</a></li><li><a href="#JMX_Invoke_command">JMX Invoke command</a></li></ol></li><li><a href="#Executing_Manager_Commands_With_Ant">Executing Manager Commands With Ant</a><ol><li><a href="#Tasks_output_capture">Tasks output capture</a></li></ol></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>In many production environments, it is very useful to have the capability

 to deploy a new web application, or undeploy an existing one, without having

 to shut down and restart the entire container.  In addition, you can request

 an existing application to reload itself, even if you have not declared it

-to be <code>reloadable</code> in the Tomcat 6 server

+to be <code>reloadable</code> in the Tomcat server

 configuration file.</p>

 

-<p>To support these capabilities, Tomcat 6 includes a web application

+<p>To support these capabilities, Tomcat includes a web application

 (installed by default on context path <code>/manager</code>) that supports

 the following functions:</p>

 <ul>

@@ -30,7 +105,6 @@
 <li>List the available global JNDI resources, for use in deployment

     tools that are preparing <code>&lt;ResourceLink&gt;</code> elements

     nested in a <code>&lt;Context&gt;</code> deployment description.</li>

-<li>List the available security roles defined in the user database.</li>

 <li>Start a stopped application (thus making it available again).</li>

 <li>Stop an existing application (so that it becomes unavailable), but

     do not undeploy it.</li>

@@ -38,19 +112,16 @@
     directory (unless it was deployed from file system).</li>

 </ul>

 

-<p>A default Tomcat installation includes the manager. To add an instance of the

+<p>A default Tomcat installation includes the Manager. To add an instance of the

 Manager web application <code>Context</code> to a new host install the

 <code>manager.xml</code> context configuration file in the

 <code>$CATALINA_BASE/conf/[enginename]/[hostname]</code> folder. Here is an

 example:</p>

-<pre>

-&lt;Context

-    docBase="/usr/local/tomcat6/webapps/manager"

-    antiResourceLocking="false" privileged="true" useHttpOnly="true"&gt;

+<div class="codeBox"><pre><code>&lt;Context privileged="true" antiResourceLocking="false"

+         docBase="${catalina.home}/webapps/manager"&gt;

   &lt;Valve className="org.apache.catalina.valves.RemoteAddrValve"

-       allow="127\.0\.0\.1" /&gt;

-&lt;/Context&gt;

-</pre>

+         allow="127\.0\.0\.1" /&gt;

+&lt;/Context&gt;</code></pre></div>

 

 <p>If you have Tomcat configured to support multiple virtual hosts

 (websites) you would need to configure a Manager for each.</p>

@@ -59,106 +130,158 @@
 <ul>

 <li>As an application with a user interface you use in your browser.

 Here is an example URL where you can replace <code>localhost</code> with

-your website host name:  <code>http://localhost/manager/html/</code> .</li>

+your website host name:  <code>http://localhost:8080/manager/html</code> .</li>

 <li>A minimal version using HTTP requests only which is suitable for use

 by scripts setup by system administrators.  Commands are given as part of the

 request URI, and responses are in the form of simple text that can be easily

-parsed and processed.  See <a href="#Supported Manager Commands">

+parsed and processed.  See <a href="#Supported_Manager_Commands">

 Supported Manager Commands</a> for more information.</li>

 <li>A convenient set of task definitions for the <em>Ant</em>

 (version 1.4 or later) build tool.  See

-<a href="#Executing Manager Commands With Ant">Executing Manager Commands

+<a href="#Executing_Manager_Commands_With_Ant">Executing Manager Commands

 With Ant</a> for more information.</li>

 </ul>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Configuring Manager Application Access"><!--()--></a><a name="Configuring_Manager_Application_Access"><strong>Configuring Manager Application Access</strong></a></font></td></tr><tr><td><blockquote>

 

-    <blockquote>

+

     <p><em>The description below uses the variable name $CATALINA_BASE to refer the

     base directory against which most relative paths are resolved. If you have

-    not configured Tomcat 6 for multiple instances by setting a CATALINA_BASE

+    not configured Tomcat for multiple instances by setting a CATALINA_BASE

     directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME,

-    the directory into which you have installed Tomcat 6.</em></p>

-    </blockquote>

+    the directory into which you have installed Tomcat.</em></p>

+

 

 <p>It would be quite unsafe to ship Tomcat with default settings that allowed

 anyone on the Internet to execute the Manager application on your server.

 Therefore, the Manager application is shipped with the requirement that anyone

 who attempts to use it must authenticate themselves, using a username and

-password that have the appropriate role associated with them.

+password that have one of <strong>manager-xxx</strong> roles associated with

+them (the role name depends on what functionality is required).

 Further, there is no username in the default users file

-(<code>$CATALINA_BASE/conf/tomcat-users.xml</code>) that is assigned an

-appropriate role.  Therefore, access to the Manager application is completely

-disabled by default.</p>

+(<code>$CATALINA_BASE/conf/tomcat-users.xml</code>) that is assigned to those

+roles.  Therefore, access to the Manager application is completely disabled

+by default.</p>

+

+<p>You can find the role names in the <code>web.xml</code> file of the Manager

+web application. The available roles are:</p>

+

+<ul>

+  <li><strong>manager-gui</strong> &mdash; Access to the HTML interface.</li>

+  <li><strong>manager-status</strong> &mdash; Access to the "Server Status"

+    page only.</li>

+  <li><strong>manager-script</strong> &mdash; Access to the tools-friendly

+    plain text interface that is described in this document,

+    and to the "Server Status" page.</li>

+  <li><strong>manager-jmx</strong> &mdash; Access to JMX proxy interface

+    and to the "Server Status" page.</li>

+</ul>

+

+<p>The HTML interface is protected against CSRF (Cross-Site Request Forgery)

+attacks, but the text and JMX interfaces cannot be protected. It means that

+users who are allowed access to the text and JMX interfaces have to be cautious

+when accessing the Manager application with a web browser.

+To maintain the CSRF protection:</p>

+

+<ul>

+  <li>If you use web browser to access the Manager application using

+      a user that has either <strong>manager-script</strong> or

+      <strong>manager-jmx</strong> roles (for example for testing

+      the plain text or JMX interfaces), you MUST close all windows

+      of the browser afterwards to terminate the session.

+      If you do not close the browser and visit other sites, you may become

+      victim of a CSRF attack.</li>

+  <li>It is recommended to never grant

+      the <strong>manager-script</strong> or <strong>manager-jmx</strong>

+      roles to users that have the <strong>manager-gui</strong> role.</li>

+</ul>

+

+<p><strong>Note</strong> that JMX proxy interface is effectively low-level root-like

+administrative interface of Tomcat. One can do a lot, if he knows

+what commands to call. You should be cautious when enabling the

+<strong>manager-jmx</strong> role.</p>

 

 <p>To enable access to the Manager web application, you must either create

-a new username/password combination and associate one of the manager roles with

-it, or add a manager role to some existing username/password combination. There

-are four roles defined by the manager application:</p>

+a new username/password combination and associate one of the

+<strong>manager-xxx</strong> roles with it, or add a

+<strong>manager-xxx</strong> role

+to some existing username/password combination.

+As the majority of this document describes the using the text interface, this

+example will use the role name <strong>manager-script</strong>.

+Exactly how the usernames/passwords are configured depends on which

+<a href="config/realm.html">Realm implementation</a> you are using:</p>

 <ul>

-<li><em>manager-gui</em> - Allows access to the html interface</li>

-<li><em>manager-script</em> - Allows access to the plain text interface</li>

-<li><em>manager-jmx</em> - Allows access to the JMX proxy interface</li>

-<li><em>manager-status</em> - Allows access to the read-only status pages</li>

-</ul>

-<p>The manager application is configured to use the CSRF prevention filter. For

-this filter to be effective, any user assigned the <code>manager-gui</code> role

-must not be assigned the <code>manager-script</code> nor the

-<code>manager-jmx</code> roles.</p>

-

-<p>Exactly where roles are associated to users depends on which

-<code>Realm</code> implementation you are using:</p>

-<ul>

-<li><em>MemoryRealm</em> - If you have not customized your

-    <code>$CATALINA_BASE/conf/server.xml</code> to select a different one,

-    Tomcat 6 defaults to an XML-format file stored at

+<li><em>UserDatabaseRealm</em> plus <em>MemoryUserDatabase</em>, or <em>MemoryRealm</em>

+    &mdash; The <em>UserDatabaseRealm</em> and <em>MemoryUserDatabase</em> are

+    configured in the default <code>$CATALINA_BASE/conf/server.xml</code>.

+    Both <em>MemoryUserDatabase</em> and <em>MemoryRealm</em> read an

+    XML-format file by default stored at

     <code>$CATALINA_BASE/conf/tomcat-users.xml</code>, which can be

     edited with any text editor.  This file contains an XML

     <code>&lt;user&gt;</code> for each individual user, which might

     look something like this:

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;user name="craigmcc" password="secret" roles="standard,manager-gui" /&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>&lt;user username="craigmcc" password="secret" roles="standard,manager-script" /&gt;</code></pre></div>

     which defines the username and password used by this individual to

     log on, and the role names he or she is associated with.  You can

-    add a role, e.g. <strong>manager-gui</strong>, to the comma-delimited

+    add the <strong>manager-script</strong> role to the comma-delimited

     <code>roles</code> attribute for one or more existing users, and/or

     create new users with that assigned role.</li>

-<li><em>JDBCRealm</em> - Your user and role information is stored in

-    a database accessed via JDBC.  Add the required role(s) to one or more

-    existing users, and/or create one or more new users with the required

-    role(s) assigned, following the standard procedures for your

+<li><em>DataSourceRealm</em> or <em>JDBCRealm</em>

+    &mdash; Your user and role information is stored in

+    a database accessed via JDBC.  Add the <strong>manager-script</strong> role

+    to one or more existing users, and/or create one or more new users

+    with this role assigned, following the standard procedures for your

     environment.</li>

-<li><em>JNDIRealm</em> - Your user and role information is stored in

-    a directory server accessed via LDAP.  Add the required role(s) to one or

-    more existing users, and/or create one or more new users with the required

-    role(s) assigned, following the standard procedures for your

-    environment.</li>

+<li><em>JNDIRealm</em> &mdash; Your user and role information is stored in

+    a directory server accessed via LDAP.  Add the

+    <strong>manager-script</strong> role to one or more existing users,

+    and/or create one or more new users with this role assigned, following

+    the standard procedures for your environment.</li>

 </ul>

 

 <p>The first time you attempt to issue one of the Manager commands

 described in the next section, you will be challenged to log on using

 BASIC authentication.  The username and password you enter do not matter,

 as long as they identify a valid user in the users database who possesses

-the appropriate role.</p>

+the role <strong>manager-script</strong>.</p>

 

-<p>In addition to the password restrictions the manager web application

-could be restricted by the remote IP address or host by adding a

-<code>RemoteAddrValve</code> or <code>RemoteHostValve</code>.  Here is

+<p>In addition to the password restrictions, access to the Manager web

+application can be restricted by the <strong>remote IP address</strong> or host

+by adding a <code>RemoteAddrValve</code> or <code>RemoteHostValve</code>.

+See <a href="config/valve.html#Remote_Address_Filter">valves documentation</a>

+for details. Here is

 an example of restricting access to the localhost by IP address:</p>

-<pre>

-&lt;Context antiResourceLocking="false" privileged="true" useHttpOnly="true"&gt;

-  &lt;Valve className="org.apache.catalina.valves.RemoteAddrValve"

-         allow="127\.0\.0\.1"/&gt;

-&lt;/Context&gt;

-</pre>

+<div class="codeBox"><pre><code>&lt;Context privileged="true"&gt;

+         &lt;Valve className="org.apache.catalina.valves.RemoteAddrValve"

+                allow="127\.0\.0\.1"/&gt;

+&lt;/Context&gt;</code></pre></div>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="HTML User-friendly Interface"><!--()--></a><a name="HTML_User-friendly_Interface"><strong>HTML User-friendly Interface</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>The user-friendly HTML interface of Manager web application is located at</p>

+

+<div class="codeBox"><pre><code>http://{host}:{port}/manager/html</code></pre></div>

+

+<p>As has already been mentioned above, you need <strong>manager-gui</strong>

+role to be allowed to access it. There is a separate document that provides

+help on this interface. See:</p>

+

+<ul>

+  <li><a href="html-manager-howto.html">HTML Manager documentation</a></li>

+</ul>

+

+<p>The HTML interface is protected against CSRF (Cross-Site Request Forgery)

+attacks. Each access to the HTML pages generates a random token, which is

+stored in your session and is included in all links on the page. If your next

+action does not have correct value of the token, the action will be denied.

+If the token has expired you can start again from the main page or

+<em>List Applications</em> page of Manager.</p>

+

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Supported Manager Commands"><!--()--></a><a name="Supported_Manager_Commands"><strong>Supported Manager Commands</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>All commands that the Manager application knows how to process are

 specified in a single request URI like this:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-http://{host}:{port}/manager/{command}?{parameters}

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>http://{host}:{port}/manager/text/{command}?{parameters}</code></pre></div>

 <p>where <code>{host}</code> and <code>{port}</code> represent the hostname

 and port number on which Tomcat is running, <code>{command}</code>

 represents the Manager command you wish to execute, and

@@ -166,14 +289,24 @@
 that are specific to that command.  In the illustrations below, customize

 the host and port appropriately for your installation.</p>

 

+<p>The commands are usually executed by HTTP GET requests. The

+<code>/deploy</code> command has a form that is executed by an HTTP PUT request.</p>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Parameters"><!--()--></a><a name="Common_Parameters"><strong>Common Parameters</strong></a></font></td></tr><tr><td><blockquote>

+

 <p>Most commands accept one or more of the following query parameters:</p>

 <ul>

 <li><strong>path</strong> - The context path (including the leading slash)

     of the web application you are dealing with.  To select the ROOT web

-    application, specify "/".  <strong>NOTE</strong> -

+    application, specify "/".  <strong>NOTE</strong>:

     It is not possible to perform administrative commands on the

     Manager application itself.</li>

-<li><strong>war</strong> - URL of a web application archive (WAR) file,

+<li><strong>version</strong> - The version of this web application as used by

+    the <a href="config/context.html">parallel deployment</a> feature. If you

+    use parallel deployment wherever a path is required you must specify a

+    version in addition to the path and it is the combination of path and

+    version that must be unique rather than just the path.</li>

+<li><strong>war</strong> - URL of a web application archive (WAR) file, or

     pathname of a directory which contains the web application, or a

     Context configuration ".xml" file.  You can use URLs in any of the

     following formats:

@@ -186,10 +319,6 @@
         path of a web application archive (WAR) file.  This is valid

         <strong>only</strong> for the <code>/deploy</code> command, and is

         the only acceptable format to that command.</li>

-    <li><strong>jar:file:/absolute/path/to/a/warfile.war!/</strong> - The

-        URL to a local web application archive (WAR) file.  You can use any

-        syntax that is valid for the <code>JarURLConnection</code> class

-        for reference to an entire JAR file.</li>

     <li><strong>file:/absolute/path/to/a/context.xml</strong> - The

         absolute path of a web application Context configuration ".xml"

         file which contains the Context configuration element.</li>

@@ -213,28 +342,23 @@
 have been translated for your platform.  The examples below show the English

 version of the messages.</p>

 

-<blockquote>

-<p><em><strong>WARNING:</strong>  the legacy commands <code>/install</code> and 

-<code>/remove</code> are deprecated.

-They are presently equivalent to <code>/deploy</code> and <code>/undeploy</code>,

-but could be removed in a future release.</em></p>

-</blockquote>

+</blockquote></td></tr></table>

 

-<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deploy A New Application Remotely"><!--()--></a><a name="Deploy_A_New_Application_Remotely"><strong>Deploy A New Application Remotely</strong></a></font></td></tr><tr><td><blockquote>

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deploy A New Application Archive (WAR) Remotely"><!--()--></a><a name="Deploy_A_New_Application_Archive_(WAR)_Remotely"><strong>Deploy A New Application Archive (WAR) Remotely</strong></a></font></td></tr><tr><td><blockquote>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-http://localhost:8080/manager/deploy?path=/foo

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/deploy?path=/foo</code></pre></div>

 

 <p>Upload the web application archive (WAR) file that is specified as the

 request data in this HTTP PUT request, install it into the <code>appBase</code>

-directory of our corresponding virtual host, and start , using the directory

-name or the war file name without the .war extension as the path.  The

-application can later be undeployed (and the corresponding application directory

-removed) by use of the <code>/undeploy</code> command.</p>

+directory of our corresponding virtual host, and start, deriving the name for

+the WAR file added to the <code>appBase</code> from the specified path. The

+application can later be undeployed (and the corresponding WAR file removed) by

+use of the <code>/undeploy</code> command.</p>

 

-<p>The .WAR file may include Tomcat specific deployment configuration, by 

-including a Context configuration XML file in 

+<p>This command is executed by an HTTP PUT request.</p>

+

+<p>The .WAR file may include Tomcat specific deployment configuration, by

+including a Context configuration XML file in

 <code>/META-INF/context.xml</code>.</p>

 

 <p>URL parameters include:</p>

@@ -242,8 +366,8 @@
 <li><code>update</code>: When set to true, any existing update will be

     undeployed first. The default value is set to false.</li>

 <li><code>tag</code>: Specifying a tag name, this allows associating the

-    deployed webapp with a version number. The application version can

-    be later redeployed when needed using only the tag.</li>

+    deployed webapp with a tag or label. If the web application is undeployed,

+    it can be later redeployed when needed using only the tag.</li>

 </ul>

 

 <p><strong>NOTE</strong> - This command is the logical

@@ -251,15 +375,12 @@
 

 <p>If installation and startup is successful, you will receive a response

 like this:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-OK - Deployed application at context path /foo

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>OK - Deployed application at context path /foo</code></pre></div>

 

 <p>Otherwise, the response will start with <code>FAIL</code> and include an

 error message.  Possible causes for problems include:</p>

 <ul>

 <li><em>Application already exists at path /foo</em>

-    <blockquote>

     <p>The context paths for all currently running web applications must be

     unique.  Therefore, you must undeploy the existing web

     application using this context path, or choose a different context path

@@ -267,15 +388,14 @@
     a parameter on the URL, with a value of <code>true</code> to avoid this

     error. In that case, an undeploy will be performed on an existing

     application before performing the deployment.</p>

-    </blockquote></li>

+    </li>

 <li><em>Encountered exception</em>

-    <blockquote>

     <p>An exception was encountered trying to start the new web application.

-    Check the Tomcat 6 logs for the details, but likely explanations include

+    Check the Tomcat logs for the details, but likely explanations include

     problems parsing your <code>/WEB-INF/web.xml</code> file, or missing

     classes encountered when initializing application event listeners and

     filters.</p>

-    </blockquote></li>

+    </li>

 </ul>

 

 </blockquote></td></tr></table>

@@ -286,25 +406,26 @@
 <code>path</code> (which must not be in use by any other web application).

 This command is the logical opposite of the <code>/undeploy</code> command.</p>

 

-<p>There are a number of different ways the deploy command can be used.</p>

+<p>This command is executed by an HTTP GET request.

+There are a number of different ways the deploy command can be used.</p>

 

-<h3>Deploy a version of a previously deployed webapp</h3>

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deploy a previously deployed webapp"><!--()--></a><a name="Deploy_a_previously_deployed_webapp"><strong>Deploy a previously deployed webapp</strong></a></font></td></tr><tr><td><blockquote>

 

-<p>This can be used to deploy a previous version of a web application, which

+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/deploy?path=/footoo&amp;tag=footag</code></pre></div>

+

+<p>This can be used to deploy a previously deployed web application, which

 has been deployed using the <code>tag</code> attribute. Note that the work

-directory for the manager webapp will contain the previously deployed WARs;

+directory of the Manager webapp will contain the previously deployed WARs;

 removing it would make the deployment fail.</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-http://localhost:8080/manager/deploy?path=/footoo&amp;tag=footag

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

 

+</blockquote></td></tr></table>

 

-<h3>Deploy a Directory or WAR by URL</h3>

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deploy a Directory or WAR by URL"><!--()--></a><a name="Deploy_a_Directory_or_WAR_by_URL"><strong>Deploy a Directory or WAR by URL</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>Deploy a web application directory or ".war" file located on the Tomcat

-server. If no <code>path</code> is specified, the directory name or the war file

-name without the ".war" extension is used as the path. The <code>war</code>

-parameter specifies a URL (including the <code>file:</code> scheme) for either

+server. If no <code>path</code> is specified, the path and version are derived

+from the directory name or the war file name. The <code>war</code> parameter

+specifies a URL (including the <code>file:</code> scheme) for either

 a directory or a web application archive (WAR) file. The supported syntax for

 a URL referring to a WAR file is described on the Javadocs page for the

 <code>java.net.JarURLConnection</code> class.  Use only URLs that refer to

@@ -313,9 +434,7 @@
 <p>In this example the web application located in the directory

 <code>/path/to/foo</code> on the Tomcat server is deployed as the

 web application context named <code>/footoo</code>.</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-http://localhost:8080/manager/deploy?path=/footoo&amp;war=file:/path/to/foo

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/deploy?path=/footoo&amp;war=file:/path/to/foo</code></pre></div>

 

 

 <p>In this example the ".war" file <code>/path/to/bar.war</code> on the

@@ -323,35 +442,31 @@
 <code>/bar</code>. Notice that there is no <code>path</code> parameter

 so the context path defaults to the name of the web application archive

 file without the ".war" extension.</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-http://localhost:8080/manager/deploy?war=jar:file:/path/to/bar.war!/

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/deploy?war=file:/path/to/bar.war</code></pre></div>

 

+</blockquote></td></tr></table>

 

-<h3>Deploy a Directory or War from the Host appBase</h3>

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deploy a Directory or War from the Host appBase"><!--()--></a><a name="Deploy_a_Directory_or_War_from_the_Host_appBase"><strong>Deploy a Directory or War from the Host appBase</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>Deploy a web application directory or ".war" file located in your Host

-appBase directory. The directory name or the war file name without the ".war"

-extension is used as the path.</p>

+appBase directory. The path and optional version are derived from the directory

+or war file name.</p>

 

 <p>In this example the web application located in a sub directory named

 <code>foo</code> in the Host appBase directory of the Tomcat server is

 deployed as the web application context named <code>/foo</code>. Notice

 that the context path used is the name of the web application directory.</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-http://localhost:8080/manager/deploy?war=foo

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/deploy?war=foo</code></pre></div>

 

 

 <p>In this example the ".war" file <code>bar.war</code> located in your

 Host appBase directory on the Tomcat server is deployed as the web

 application context named <code>/bar</code>.</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-http://localhost:8080/manager/deploy?war=bar.war

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/deploy?war=bar.war</code></pre></div>

 

+</blockquote></td></tr></table>

 

-<h3>Deploy using a Context configuration ".xml" file</h3>

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deploy using a Context configuration %22.xml%22 file"><!--()--></a><a name="Deploy_using_a_Context_configuration_%22.xml%22_file"><strong>Deploy using a Context configuration ".xml" file</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>If the Host deployXML flag is set to true you can deploy a web

 application using a Context configuration ".xml" file and an optional

@@ -363,15 +478,8 @@
 web application Context just as if it were configured in your

 Tomcat <code>server.xml</code> configuration file. Here is an

 example:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;Context path="/foobar" docBase="/path/to/application/foobar"&gt;

-

-  &lt;!-- Link to the user database we will get roles from --&gt;

-  &lt;ResourceLink name="users" global="UserDatabase"

-                type="org.apache.catalina.UserDatabase"/&gt;

-

-&lt;/Context&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>&lt;Context path="/foobar" docBase="/path/to/application/foobar"&gt;

+&lt;/Context&gt;</code></pre></div>

 

 

 <p>When the optional <code>war</code> parameter is set to the URL

@@ -380,30 +488,27 @@
 

 <p>Here is an example of deploying an application using a Context

 configuration ".xml" file.</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-http://localhost:8080/manager/deploy?config=file:/path/context.xml

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/deploy?config=file:/path/context.xml</code></pre></div>

 

 

 <p>Here is an example of deploying an application using a Context

 configuration ".xml" file and a web application ".war" file located

 on the server.</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-http://localhost:8080/manager/deploy

- ?config=file:/path/context.xml&amp;war=jar:file:/path/bar.war!/

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/deploy

+ ?config=file:/path/context.xml&amp;war=file:/path/bar.war</code></pre></div>

 

+</blockquote></td></tr></table>

 

-<h3>Deployment Notes</h3>

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deployment Notes"><!--()--></a><a name="Deployment_Notes"><strong>Deployment Notes</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>If the Host is configured with unpackWARs=true and you deploy a war

 file, the war will be unpacked into a directory in your Host appBase

 directory.</p>

 

 <p>If the application war or directory is installed in your Host appBase

-directory and either the Host is configured with autoDeploy=true or

-liveDeploy=true, the Context path must match the directory name or

-war file name without the ".war" extension.</p>

+directory and either the Host is configured with autoDeploy=true or the

+Context path must match the directory name or war file name without the

+".war" extension.</p>

 

 <p>For security when untrusted users can manage web applications, the

 Host deployXML flag can be set to false.  This prevents untrusted users

@@ -411,20 +516,18 @@
 also prevents them from deploying application directories or ".war"

 files located outside of their Host appBase.</p>

 

+</blockquote></td></tr></table>

 

-<h3>Deploy Response</h3>

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deploy Response"><!--()--></a><a name="Deploy_Response"><strong>Deploy Response</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>If installation and startup is successful, you will receive a response

 like this:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-OK - Deployed application at context path /foo

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>OK - Deployed application at context path /foo</code></pre></div>

 

 <p>Otherwise, the response will start with <code>FAIL</code> and include an

 error message.  Possible causes for problems include:</p>

 <ul>

 <li><em>Application already exists at path /foo</em>

-    <blockquote>

     <p>The context paths for all currently running web applications must be

     unique.  Therefore, you must undeploy the existing web

     application using this context path, or choose a different context path

@@ -432,77 +535,69 @@
     a parameter on the URL, with a value of <code>true</code> to avoid this

     error. In that case, an undeploy will be performed on an existing

     application before performing the deployment.</p>

-    </blockquote></li>

+    </li>

 <li><em>Document base does not exist or is not a readable directory</em>

-    <blockquote>

     <p>The URL specified by the <code>war</code> parameter must identify a

     directory on this server that contains the "unpacked" version of a

     web application, or the absolute URL of a web application archive (WAR)

     file that contains this application.  Correct the value specified by

     the <code>war</code> parameter.</p>

-    </blockquote></li>

+    </li>

 <li><em>Encountered exception</em>

-    <blockquote>

     <p>An exception was encountered trying to start the new web application.

-    Check the Tomcat 6 logs for the details, but likely explanations include

+    Check the Tomcat logs for the details, but likely explanations include

     problems parsing your <code>/WEB-INF/web.xml</code> file, or missing

     classes encountered when initializing application event listeners and

     filters.</p>

-    </blockquote></li>

+    </li>

 <li><em>Invalid application URL was specified</em>

-    <blockquote>

     <p>The URL for the directory or web application that you specified

     was not valid.  Such URLs must start with <code>file:</code>, and URLs

     for a WAR file must end in ".war".</p>

-    </blockquote></li>

+    </li>

 <li><em>Invalid context path was specified</em>

-    <blockquote>

     <p>The context path must start with a slash character. To reference the

     ROOT web application use "/".</p>

-    </blockquote></li>

+    </li>

 <li><em>Context path must match the directory or WAR file name:</em>

-    <blockquote>

-    If the application war or directory is installed in your Host appBase

-    directory and either the Host is configured with autoDeploy=true or

-    liveDeploy=true, the Context path must match the directory name or

-    war file name without the ".war" extension.

-    </blockquote></li>

+    <p>If the application war or directory is installed in your Host appBase

+    directory and either the Host is configured with autoDeploy=true the

+    Context path must match the directory name or war file name without

+    the ".war" extension.</p>

+    </li>

 <li><em>Only web applications in the Host web application directory can

      be installed</em>

-     <blockquote>

+     <p>

      If the Host deployXML flag is set to false this error will happen

      if an attempt is made to deploy a web application directory or

       ".war" file outside of the Host appBase directory.

-     </blockquote></li>

+     </p></li>

 </ul>

 

 </blockquote></td></tr></table>

+</blockquote></td></tr></table>

 

 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="List Currently Deployed Applications"><!--()--></a><a name="List_Currently_Deployed_Applications"><strong>List Currently Deployed Applications</strong></a></font></td></tr><tr><td><blockquote>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-http://localhost:8080/manager/list

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/list</code></pre></div>

 

 <p>List the context paths, current status (<code>running</code> or

 <code>stopped</code>), and number of active sessions for all currently

 deployed web applications.  A typical response immediately

 after starting Tomcat might look like this:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-OK - Listed applications for virtual host localhost

-/webdav:running:0

-/examples:running:0

-/manager:running:0

-/:running:0

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>OK - Listed applications for virtual host localhost

+/webdav:running:0:webdav

+/examples:running:0:examples

+/manager:running:0:manager

+/:running:0:ROOT

+/test:running:0:test##2

+/test:running:0:test##1</code></pre></div>

 

 </blockquote></td></tr></table>

 

 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Reload An Existing Application"><!--()--></a><a name="Reload_An_Existing_Application"><strong>Reload An Existing Application</strong></a></font></td></tr><tr><td><blockquote>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-http://localhost:8080/manager/reload?path=/examples

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/reload?path=/examples</code></pre></div>

 

 <p>Signal an existing application to shut itself down and reload.  This can

 be useful when the web application context is not reloadable and you have

@@ -510,41 +605,31 @@
 directory or when you have added or updated jar files in the

 <code>/WEB-INF/lib</code> directory.

 </p>

-<p><strong>NOTE:</strong> The <code>/WEB-INF/web.xml</code>

-web application configuration file is not reread on a reload.

-If you have made changes to your web.xml file you must stop

-then start the web application.

-</p>

 

 <p>If this command succeeds, you will see a response like this:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-OK - Reloaded application at context path /examples

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>OK - Reloaded application at context path /examples</code></pre></div>

 

 <p>Otherwise, the response will start with <code>FAIL</code> and include an

 error message.  Possible causes for problems include:</p>

 <ul>

 <li><em>Encountered exception</em>

-    <blockquote>

     <p>An exception was encountered trying to restart the web application.

-    Check the Tomcat 6 logs for the details.</p>

-    </blockquote></li>

+    Check the Tomcat logs for the details.</p>

+    </li>

 <li><em>Invalid context path was specified</em>

-    <blockquote>

     <p>The context path must start with a slash character. To reference the

     ROOT web application use "/".</p>

-    </blockquote></li>

+    </li>

 <li><em>No context exists for path /foo</em>

-    <blockquote>

     <p>There is no deployed application on the context path

     that you specified.</p>

-    </blockquote></li>

+    </li>

 <li><em>No context path was specified</em>

-    <blockquote>

+    <p>

     The <code>path</code> parameter is required.

-    </blockquote></li>

+    </p></li>

 <li><em>Reload not supported on WAR deployed at path /foo</em>

-    <blockquote>

+    <p>

     Currently, application reloading (to pick up changes to the classes or

     <code>web.xml</code> file) is not supported when a web application is

     deployed directly from a WAR file.  It only works when the web application

@@ -552,16 +637,14 @@
     you should <code>undeploy</code> and then <code>deploy</code> or

     <code>deploy</code> with the <code>update</code> parameter the

     application again to pick up your changes.

-    </blockquote></li>

+    </p></li>

 </ul>

 

 </blockquote></td></tr></table>

 

 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="List OS and JVM Properties"><!--()--></a><a name="List_OS_and_JVM_Properties"><strong>List OS and JVM Properties</strong></a></font></td></tr><tr><td><blockquote>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-http://localhost:8080/manager/serverinfo

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/serverinfo</code></pre></div>

 

 <p>Lists information about the Tomcat version, OS, and JVM properties.</p>

 

@@ -569,19 +652,16 @@
 include an error message.  Possible causes for problems include:</p>

 <ul>

 <li><em>Encountered exception</em>

-    <blockquote>

     <p>An exception was encountered trying to enumerate the system properties.

-    Check the Tomcat 6 logs for the details.</p>

-    </blockquote></li>

+    Check the Tomcat logs for the details.</p>

+    </li>

 </ul>

 

 </blockquote></td></tr></table>

 

 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="List Available Global JNDI Resources"><!--()--></a><a name="List_Available_Global_JNDI_Resources"><strong>List Available Global JNDI Resources</strong></a></font></td></tr><tr><td><blockquote>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-http://localhost:8080/manager/resources[?type=xxxxx]

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/resources[?type=xxxxx]</code></pre></div>

 

 <p>List the global JNDI resources that are available for use in resource

 links for context configuration files.  If you specify the <code>type</code>

@@ -593,13 +673,9 @@
 

 <p>Depending on whether the <code>type</code> request parameter is specified

 or not, the first line of a normal response will be:</p>

-<pre>

-  OK - Listed global resources of all types

-</pre>

+<div class="codeBox"><pre><code>OK - Listed global resources of all types</code></pre></div>

 <p>or</p>

-<pre>

-  OK - Listed global resources of type xxxxx

-</pre>

+<div class="codeBox"><pre><code>OK - Listed global resources of type xxxxx</code></pre></div>

 <p>followed by one line for each resource.  Each line is composed of fields

 delimited by colon characters (":"), as follows:</p>

 <ul>

@@ -614,99 +690,58 @@
 include an error message.  Possible causes for problems include:</p>

 <ul>

 <li><em>Encountered exception</em>

-    <blockquote>

     <p>An exception was encountered trying to enumerate the global JNDI

-    resources.  Check the Tomcat 6 logs for the details.</p>

-    </blockquote></li>

+    resources.  Check the Tomcat logs for the details.</p>

+    </li>

 <li><em>No global JNDI resources are available</em>

-    <blockquote>

     <p>The Tomcat server you are running has been configured without

     global JNDI resources.</p>

-    </blockquote></li>

+    </li>

 </ul>

 

 

 </blockquote></td></tr></table>

 

-

-<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="List Available Security Roles"><!--()--></a><a name="List_Available_Security_Roles"><strong>List Available Security Roles</strong></a></font></td></tr><tr><td><blockquote>

-

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-http://localhost:8080/manager/roles

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-

-<p>List the security role names (and corresponding descriptions) that are

-available in the <code>org.apache.catalina.UserDatabase</code> resource that

-is linked to the <code>users</code> resource reference in the web.xml file

-for the Manager web application.  This would typically be used, for example,

-by a deployment tool that wanted to create

-<code>&lt;security-role-ref&gt;</code> elements to map security role names

-used in a web application to the role names actually defined within the

-container.</p>

-

-<p>By default, the <code>users</code> resource reference is pointed at the

-global <code>UserDatabase</code> resource.  If you choose to utilize a

-different user database per virtual host, you should modify the

-<code>&lt;ResourceLink&gt;</code> element in the default

-<code>manager.xml</code> context configuration file to point at the global

-user database resource for this virtual host.</p>

-

-<p>When this command is executed, the first line of the response will be:</p>

-<pre>

-  OK - Listed security roles

-</pre>

-<p>followed by one line for each security role.  Each line is composed of

-fields delimited by colon characters (":") as follows:</p>

-<ul>

-<li><em>Security Role Name</em> - A security role name that is known to Tomcat

-    in the user database.</li>

-<li><em>Description</em> - Description of this security role (useful in

-    creating user interfaces for selecting roles.</li>

-</ul>

-

-<p>If an error occurs, the response will start with <code>FAIL</code> and

-include an error message.  Possible causes for problems include:</p>

-<ul>

-<li><em>Cannot resolve user database reference</em> - A JNDI error prevented

-    the successful lookup of the <code>org.apache.catalina.UserDatabase</code>

-    resource.  Check the Tomcat log files for a stack trace associated with

-    this error.</li>

-<li><em>No user database is available</em> - You have not configured a resource

-    reference for the <code>users</code> resource that points at an

-    appropriate user database instance.  Check your <code>manager.xml</code>

-    file and ensure that you have created an appropriate

-    <code>&lt;ResourceLink&gt;</code> or

-    <code>&lt;ResourceParams&gt;</code> element for this resource.</li>

-</ul>

-

-</blockquote></td></tr></table>

-

-

 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Session Statistics"><!--()--></a><a name="Session_Statistics"><strong>Session Statistics</strong></a></font></td></tr><tr><td><blockquote>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-http://localhost:8080/manager/sessions?path=/examples

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/sessions?path=/examples</code></pre></div>

 

 <p>Display the default session timeout for a web application, and the

-number of currently active sessions that fall within ten-minute ranges of

+number of currently active sessions that fall within one-minute ranges of

 their actual timeout times.  For example, after restarting Tomcat and then

 executing one of the JSP samples in the <code>/examples</code> web app,

 you might get something like this:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-OK - Session information for application at context path /examples

+

+<div class="codeBox"><pre><code>OK - Session information for application at context path /examples

 Default maximum session inactive interval 30 minutes

-30 - &lt;40 minutes:1 sessions

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+&lt;1 minutes: 1 sessions

+1 - &lt;2 minutes: 1 sessions</code></pre></div>

 

 </blockquote></td></tr></table>

 

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Expire Sessions"><!--()--></a><a name="Expire_Sessions"><strong>Expire Sessions</strong></a></font></td></tr><tr><td><blockquote>

+

+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/expire?path=/examples&amp;idle=num</code></pre></div>

+

+<p>Display the session statistics (like the above <code>/sessions</code>

+command) and expire sessions that are idle for longer than <code>num</code>

+minutes. To expire all sessions, use <code>&amp;idle=0</code> .</p>

+

+<div class="codeBox"><pre><code>OK - Session information for application at context path /examples

+Default maximum session inactive interval 30 minutes

+1 - &lt;2 minutes: 1 sessions

+3 - &lt;4 minutes: 1 sessions

+&gt;0 minutes: 2 sessions were expired</code></pre></div>

+

+<p>Actually <code>/sessions</code> and <code>/expire</code> are synonyms for

+the same command. The difference is in the presence of <code>idle</code>

+parameter.</p>

+

+</blockquote></td></tr></table>

 

 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Start an Existing Application"><!--()--></a><a name="Start_an_Existing_Application"><strong>Start an Existing Application</strong></a></font></td></tr><tr><td><blockquote>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-http://localhost:8080/manager/start?path=/examples

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/start?path=/examples</code></pre></div>

 

 <p>Signal a stopped application to restart, and make itself available again.

 Stopping and starting is useful, for example, if the database required by

@@ -715,41 +750,34 @@
 users continuously encounter database exceptions.</p>

 

 <p>If this command succeeds, you will see a response like this:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-OK - Started application at context path /examples

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>OK - Started application at context path /examples</code></pre></div>

 

 <p>Otherwise, the response will start with <code>FAIL</code> and include an

 error message.  Possible causes for problems include:</p>

 <ul>

 <li><em>Encountered exception</em>

-    <blockquote>

     <p>An exception was encountered trying to start the web application.

-    Check the Tomcat 6 logs for the details.</p>

-    </blockquote></li>

+    Check the Tomcat logs for the details.</p>

+    </li>

 <li><em>Invalid context path was specified</em>

-    <blockquote>

     <p>The context path must start with a slash character. To reference the

     ROOT web application use "/".</p>

-    </blockquote></li>

+    </li>

 <li><em>No context exists for path /foo</em>

-    <blockquote>

     <p>There is no deployed application on the context path

     that you specified.</p>

-    </blockquote></li>

+    </li>

 <li><em>No context path was specified</em>

-    <blockquote>

+    <p>

     The <code>path</code> parameter is required.

-    </blockquote></li>

+    </p></li>

 </ul>

 

 </blockquote></td></tr></table>

 

 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Stop an Existing Application"><!--()--></a><a name="Stop_an_Existing_Application"><strong>Stop an Existing Application</strong></a></font></td></tr><tr><td><blockquote>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-http://localhost:8080/manager/stop?path=/examples

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/stop?path=/examples</code></pre></div>

 

 <p>Signal an existing application to make itself unavailable, but leave it

 deployed.  Any request that comes in while an application is

@@ -757,32 +785,26 @@
 "stopped" on a list applications command.</p>

 

 <p>If this command succeeds, you will see a response like this:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-OK - Stopped application at context path /examples

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>OK - Stopped application at context path /examples</code></pre></div>

 

 <p>Otherwise, the response will start with <code>FAIL</code> and include an

 error message.  Possible causes for problems include:</p>

 <ul>

 <li><em>Encountered exception</em>

-    <blockquote>

     <p>An exception was encountered trying to stop the web application.

-    Check the Tomcat 6 logs for the details.</p>

-    </blockquote></li>

+    Check the Tomcat logs for the details.</p>

+    </li>

 <li><em>Invalid context path was specified</em>

-    <blockquote>

     <p>The context path must start with a slash character. To reference the

     ROOT web application use "/".</p>

-    </blockquote></li>

+    </li>

 <li><em>No context exists for path /foo</em>

-    <blockquote>

     <p>There is no deployed application on the context path

     that you specified.</p>

-    </blockquote></li>

+    </li>

 <li><em>No context path was specified</em>

-    <blockquote>

     The <code>path</code> parameter is required.

-    </blockquote></li>

+    </li>

 </ul>

 

 </blockquote></td></tr></table>

@@ -790,17 +812,15 @@
 

 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Undeploy an Existing Application"><!--()--></a><a name="Undeploy_an_Existing_Application"><strong>Undeploy an Existing Application</strong></a></font></td></tr><tr><td><blockquote>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-http://localhost:8080/manager/undeploy?path=/examples

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/undeploy?path=/examples</code></pre></div>

 

-<p><strong><font color="red">WARNING</font> - This command will delete any web 

-application artifacts that exist within <code>appBase</code> directory 

+<p><strong><span style="color: red;">WARNING</span> - This command will delete any web

+application artifacts that exist within <code>appBase</code> directory

 (typically "webapps") for this virtual host</strong>.

-This will delete the the application .WAR, if present, 

-the application directory resulting either from a deploy in unpacked form 

+This will delete the application .WAR, if present,

+the application directory resulting either from a deploy in unpacked form

 or from .WAR expansion as well as the XML Context definition from

-<code>$CATALINA_BASE/conf/[enginename]/[hostname]/</code> directory. 

+<code>$CATALINA_BASE/conf/[enginename]/[hostname]/</code> directory.

 If you simply want to take an application

 out of service, you should use the <code>/stop</code> command instead.</p>

 

@@ -812,41 +832,32 @@
 <code>/deploy</code> command.</p>

 

 <p>If this command succeeds, you will see a response like this:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-OK - Undeployed application at context path /examples

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>OK - Undeployed application at context path /examples</code></pre></div>

 

 <p>Otherwise, the response will start with <code>FAIL</code> and include an

 error message.  Possible causes for problems include:</p>

 <ul>

 <li><em>Encountered exception</em>

-    <blockquote>

     <p>An exception was encountered trying to undeploy the web application.

-    Check the Tomcat 6 logs for the details.</p>

-    </blockquote></li>

+    Check the Tomcat logs for the details.</p>

+    </li>

 <li><em>Invalid context path was specified</em>

-    <blockquote>

     <p>The context path must start with a slash character. To reference the

     ROOT web application use "/".</p>

-    </blockquote></li>

-<li><em>No context exists for path /foo</em>

-    <blockquote>

-    <p>There is no deployed application on the context path

-    that you specified.</p>

-    </blockquote></li>

+    </li>

+<li><em>No context exists named /foo</em>

+    <p>There is no deployed application with the name that you specified.</p>

+    </li>

 <li><em>No context path was specified</em>

-    <blockquote>

     The <code>path</code> parameter is required.

-    </blockquote></li>

+    </li>

 </ul>

 

 </blockquote></td></tr></table>

 

 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Finding memory leaks"><!--()--></a><a name="Finding_memory_leaks"><strong>Finding memory leaks</strong></a></font></td></tr><tr><td><blockquote>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-http://localhost:8080/manager/findleaks

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/findleaks[?statusLine=[true|false]]</code></pre></div>

 

 <p><strong>The find leaks diagnostic triggers a full garbage collection. It

 should be used with extreme caution on production systems.</strong></p>

@@ -861,13 +872,15 @@
 <p>Explicitly triggering a full garbage collection from Java code is documented

 to be unreliable. Furthermore, depending on the JVM used, there are options to

 disable explicit GC triggering, like <code>-XX:+DisableExplicitGC</code>.

-If you want to make sure, that the diagnostics were successfully running a full GC,

-you will need to check using tools like GC logging, JConsole or similar.</p>

+If you want to make sure, that the diagnostics were successfully running a full

+GC, you will need to check using tools like GC logging, JConsole or similar.</p>

 

 <p>If this command succeeds, you will see a response like this:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-/leaking-webapp

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>/leaking-webapp</code></pre></div>

+

+<p>If you wish to see a status line included in the response then include the

+<code>statusLine</code> query parameter in the request with a value of

+<code>true</code>.</p>

 

 <p>Each context path for a web application that was stopped, reloaded or

 undeployed, but which classes from the previous runs are still loaded in memory,

@@ -876,29 +889,94 @@
 

 <p>If the command does not succeed, the response will start with

 <code>FAIL</code> and include an error message.</p>

- 

+

 </blockquote></td></tr></table>

 

-<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Server Status"><!--()--></a><a name="Server_Status"><strong>Server Status</strong></a></font></td></tr><tr><td><blockquote>

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Thread Dump"><!--()--></a><a name="Thread_Dump"><strong>Thread Dump</strong></a></font></td></tr><tr><td><blockquote>

 

-<p>From this link , you can view information about the server.</p>

+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/threaddump</code></pre></div>

 

-<p>First, you have the server and JVM version number, JVM provider, OS name 

+<p>Write a JVM thread dump.</p>

+

+<p>The response will look something like this:</p>

+<div class="codeBox"><pre><code>OK - JVM thread dump

+2014-12-08 07:24:40.080

+Full thread dump Java HotSpot(TM) Client VM (25.25-b02 mixed mode):

+

+"http-nio-8080-exec-2" Id=26 cpu=46800300 ns usr=46800300 ns blocked 0 for -1 ms waited 0 for -1 ms

+   java.lang.Thread.State: RUNNABLE

+        locks java.util.concurrent.ThreadPoolExecutor$Worker@1738ad4

+        at sun.management.ThreadImpl.dumpThreads0(Native Method)

+        at sun.management.ThreadImpl.dumpAllThreads(ThreadImpl.java:446)

+        at org.apache.tomcat.util.Diagnostics.getThreadDump(Diagnostics.java:440)

+        at org.apache.tomcat.util.Diagnostics.getThreadDump(Diagnostics.java:409)

+        at org.apache.catalina.manager.ManagerServlet.threadDump(ManagerServlet.java:557)

+        at org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:371)

+        at javax.servlet.http.HttpServlet.service(HttpServlet.java:618)

+        at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)

+...

+</code></pre></div>

+

+</blockquote></td></tr></table>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="VM Info"><!--()--></a><a name="VM_Info"><strong>VM Info</strong></a></font></td></tr><tr><td><blockquote>

+

+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/vminfo</code></pre></div>

+

+<p>Write some diagnostic information about Java Virtual Machine.</p>

+

+<p>The response will look something like this:</p>

+<div class="codeBox"><pre><code>OK - VM info

+2014-12-08 07:27:32.578

+Runtime information:

+  vmName: Java HotSpot(TM) Client VM

+  vmVersion: 25.25-b02

+  vmVendor: Oracle Corporation

+  specName: Java Virtual Machine Specification

+  specVersion: 1.8

+  specVendor: Oracle Corporation

+  managementSpecVersion: 1.2

+  name: ...

+  startTime: 1418012458849

+  uptime: 393855

+  isBootClassPathSupported: true

+

+OS information:

+...

+</code></pre></div>

+

+</blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Server Status"><!--()--></a><a name="Server_Status"><strong>Server Status</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>From the following links you can view Status information about the server.

+Any one of <strong>manager-xxx</strong> roles allows access to this page.</p>

+

+<div class="codeBox"><pre><code>http://localhost:8080/manager/status

+http://localhost:8080/manager/status/all</code></pre></div>

+

+<p>Displays server status information in HTML format.</p>

+

+<div class="codeBox"><pre><code>http://localhost:8080/manager/status?XML=true

+http://localhost:8080/manager/status/all?XML=true</code></pre></div>

+

+<p>Displays server status information in XML format.</p>

+

+<p>First, you have the server and JVM version number, JVM provider, OS name

 and number followed by the architecture type.</p>

 

-<p>Second, there is several information about the memory usage of the JVM 

-(available, total and max memory).</p>

+<p>Second, there is information about the memory usage of the JVM.</p>

 

-<p>Then, there is information about the Tomcat AJP and HTTP connectors. 

+<p>Then, there is information about the Tomcat AJP and HTTP connectors.

 The same information is available for both of them :

 </p>

 <ul>

-    <li><p>Threads information : Max threads, min and max spare threads, 

+    <li><p>Threads information : Max threads, min and max spare threads,

     current thread count and current thread busy.</p></li>

-    <li><p>Request information : Max processing time and processing time, 

+    <li><p>Request information : Max processing time and processing time,

     request and error count, bytes received and sent.</p></li>

-    <li><p>A table showing Stage, Time, Bytes Sent, Bytes Receive, Client, 

-    VHost and Request. All existing threads are listed in the table. 

+    <li><p>A table showing Stage, Time, Bytes Sent, Bytes Receive, Client,

+    VHost and Request. All existing threads are listed in the table.

     Here is the list of the possible thread stages :</p>

     <ul>

         <li><p><em>"Parse and Prepare Request"</em> : The request headers are

@@ -915,7 +993,7 @@
         appropriate.</p></li>

         <li><p><em>"Keep-Alive"</em> : The thread keeps the connection open to

         the client in case the client sends another request. If another request

-        is recieved, the next stage will br "Parse and Prepare Requst". If no

+        is received, the next stage will be "Parse and Prepare Request". If no

         request is received before the keep alive times out, the connection will

         be closed and the next stage will be "Ready".</p></li>

         <li><p><em>"Ready"</em> : The thread is at rest and ready to be

@@ -923,12 +1001,130 @@
     </ul>

     </li>

 </ul>

-</blockquote></td></tr></table>

+

+<p>If you are using <code>/status/all</code> command, additional information

+on each of deployed web applications will be available.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Using the JMX Proxy Servlet"><!--()--></a><a name="Using_the_JMX_Proxy_Servlet"><strong>Using the JMX Proxy Servlet</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="What is JMX Proxy Servlet"><!--()--></a><a name="What_is_JMX_Proxy_Servlet"><strong>What is JMX Proxy Servlet</strong></a></font></td></tr><tr><td><blockquote>

+    The JMX Proxy Servlet is a lightweight proxy to get and set the

+    tomcat internals. (Or any class that has been exposed via an MBean)

+    Its usage is not very user friendly but the UI is

+    extremely helpful for integrating command line scripts for monitoring

+    and changing the internals of tomcat. You can do two things with the proxy:

+    get information and set information. For you to really understand the

+    JMX Proxy Servlet, you should have a general understanding of JMX.

+    If you don't know what JMX is, then prepare to be confused.

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JMX Query command"><!--()--></a><a name="JMX_Query_command"><strong>JMX Query command</strong></a></font></td></tr><tr><td><blockquote>

+    <p>This takes the form:</p>

+<div class="codeBox"><pre><code>http://webserver/manager/jmxproxy/?qry=STUFF</code></pre></div>

+    <p>Where <code>STUFF</code> is the JMX query you wish to perform. For example,

+    here are some queries you might wish to run:</p>

+    <ul>

+      <li>

+        <code>qry=*%3Atype%3DRequestProcessor%2C* --&gt;

+         type=RequestProcessor</code> which will locate all

+         workers which can process requests and report

+         their state.

+      </li>

+      <li>

+        <code>qry=*%3Aj2eeType=Servlet%2c* --&gt;

+            j2eeType=Servlet</code> which return all loaded servlets.

+      </li>

+      <li>

+        <code>qry=Catalina%3Atype%3DEnvironment%2Cresourcetype%3DGlobal%2Cname%3DsimpleValue --&gt;

+            Catalina:type=Environment,resourcetype=Global,name=simpleValue</code>

+            which look for a specific MBean by the given name.

+      </li>

+    </ul>

+    <p>

+    You'll need to experiment with this to really understand its capabilities

+    If you provide no <code>qry</code> parameter, then all of the MBeans will

+    be displayed. We really recommend looking at the tomcat source code and

+    understand the JMX spec to get a better understanding of all the queries

+    you may run.

+    </p>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JMX Get command"><!--()--></a><a name="JMX_Get_command"><strong>JMX Get command</strong></a></font></td></tr><tr><td><blockquote>

+  <p>

+    The JXMProxyServlet also supports a "get" command that you can use to

+    fetch the value of a specific MBean's attribute. The general form of

+    the <code>get</code> command is:

+  </p>

+

+<div class="codeBox"><pre><code>http://webserver/manager/jmxproxy/?get=BEANNAME&amp;att=MYATTRIBUTE&amp;key=MYKEY</code></pre></div>

+

+    <p>You must provide the following parameters:</p>

+    <ol>

+      <li><code>get</code>: The full bean name</li>

+      <li><code>att</code>: The attribute you wish to fetch</li>

+      <li><code>key</code>: (optional) The key into a CompositeData MBean attribute</li>

+    </ol>

+    <p>

+    If all goes well, then it will say OK, otherwise an error message will

+    be shown. For example, let's say we wish to fetch the current heap memory

+    data:

+    </p>

+

+<div class="codeBox"><pre><code>http://webserver/manager/jmxproxy/?get=java.lang:type=Memory&amp;att=HeapMemoryUsage</code></pre></div>

+

+    <p>Or, if you only want the "used" key:</p>

+

+<div class="codeBox"><pre><code>http://webserver/manager/jmxproxy/

+ ?get=java.lang:type=Memory&amp;att=HeapMemoryUsage&amp;key=used</code></pre></div>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JMX Set command"><!--()--></a><a name="JMX_Set_command"><strong>JMX Set command</strong></a></font></td></tr><tr><td><blockquote>

+    <p>

+    Now that you can query an MBean, its time to muck with Tomcat's internals!

+    The general form of the set command is :

+    </p>

+<div class="codeBox"><pre><code>http://webserver/manager/jmxproxy/?set=BEANNAME&amp;att=MYATTRIBUTE&amp;val=NEWVALUE</code></pre></div>

+    <p>So you need to provide 3 request parameters:</p>

+    <ol>

+      <li><code>set</code>: The full bean name</li>

+      <li><code>att</code>: The attribute you wish to alter</li>

+      <li><code>val</code>: The new value </li>

+    </ol>

+    <p>

+    If all goes ok, then it will say OK, otherwise an error message will be

+    shown. For example, lets say we wish to turn up debugging on the fly for the

+    <code>ErrorReportValve</code>. The following will set debugging to 10.

+    </p>

+<div class="codeBox"><pre><code>http://localhost:8080/manager/jmxproxy/

+ ?set=Catalina%3Atype%3DValve%2Cname%3DErrorReportValve%2Chost%3Dlocalhost

+ &amp;att=debug&amp;val=10</code></pre></div>

+    <p>and my result is (YMMV):</p>

+<div class="codeBox"><pre><code>Result: ok</code></pre></div>

+

+    <p>Here is what I see if I pass in a bad value. Here is the URL I used,

+    I try set debugging equal to 'cow':</p>

+<div class="codeBox"><pre><code>http://localhost:8080/manager/jmxproxy/

+ ?set=Catalina%3Atype%3DValve%2Cname%3DErrorReportValve%2Chost%3Dlocalhost

+ &amp;att=debug&amp;val=cow</code></pre></div>

+    <p>When I try that, my result is</p>

+<div class="codeBox"><pre><code>Error: java.lang.NumberFormatException: For input string: "cow"</code></pre></div>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JMX Invoke command"><!--()--></a><a name="JMX_Invoke_command"><strong>JMX Invoke command</strong></a></font></td></tr><tr><td><blockquote>

+    <p>The <code>invoke</code> command enables methods to be called on MBeans. The

+    general form of the command is:</p>

+<div class="codeBox"><pre><code>http://webserver/manager/jmxproxy/

+ ?invoke=BEANNAME&amp;op=METHODNAME&amp;ps=COMMASEPARATEDPARAMETERS</code></pre></div>

+    <p>For example, to call the <code>findConnectors()</code> method of the

+    <strong>Service</strong> use:</p>

+<div class="codeBox"><pre><code>http://localhost:8080/manager/jmxproxy/

+ ?invoke=Catalina%3Atype%3DService&amp;op=findConnectors&amp;ps=</code></pre></div>

+  </blockquote></td></tr></table>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Executing Manager Commands With Ant"><!--()--></a><a name="Executing_Manager_Commands_With_Ant"><strong>Executing Manager Commands With Ant</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>In addition to the ability to execute Manager commands via HTTP requests,

-as documented above, Tomcat 6 includes a convenient set of Task definitions

+as documented above, Tomcat includes a convenient set of Task definitions

 for the <em>Ant</em> (version 1.4 or later) build tool.  In order to use these

 commands, you must perform the following setup operations:</p>

 <ul>

@@ -937,22 +1133,17 @@
     You must use version <strong>1.4</strong> or later.</li>

 <li>Install the Ant distribution in a convenient directory (called

     ANT_HOME in the remainder of these instructions).</li>

-<li>Copy the file <code>server/lib/catalina-ant.jar</code> from your Tomcat 6

-    installation into Ant's library directory (<code>$ANT_HOME/lib</code>).

-    </li>

 <li>Add the <code>$ANT_HOME/bin</code> directory to your <code>PATH</code>

     environment variable.</li>

 <li>Configure at least one username/password combination in your Tomcat

     user database that includes the <code>manager-script</code> role.</li>

 </ul>

 

-<p>To use custom tasks within Ant, you must declare them first with a

-<code>&lt;taskdef&gt;</code> element.  Therefore, your <code>build.xml</code>

+<p>To use custom tasks within Ant, you must declare them first with an

+<code>&lt;import&gt;</code> element.  Therefore, your <code>build.xml</code>

 file might look something like this:</p>

 

-<table border="1">

-<tr><td><pre>

-&lt;project name="My Application" default="compile" basedir="."&gt;

+<div class="codeBox"><pre><code>&lt;project name="My Application" default="compile" basedir="."&gt;

 

   &lt;!-- Configure the directory into which the web application is built --&gt;

   &lt;property name="build"    value="${basedir}/build"/&gt;

@@ -961,19 +1152,15 @@
   &lt;property name="path"     value="/myapp"/&gt;

 

   &lt;!-- Configure properties to access the Manager application --&gt;

-  &lt;property name="url"      value="http://localhost:8080/manager"/&gt;

+  &lt;property name="url"      value="http://localhost:8080/manager/text"/&gt;

   &lt;property name="username" value="myusername"/&gt;

   &lt;property name="password" value="mypassword"/&gt;

 

+  &lt;!-- Configure the path to the Tomcat installation --&gt;

+  &lt;property name="catalina.home" value="/usr/local/apache-tomcat"/&gt;

+

   &lt;!-- Configure the custom Ant tasks for the Manager application --&gt;

-  &lt;taskdef name="deploy"    classname="org.apache.catalina.ant.DeployTask"/&gt;

-  &lt;taskdef name="list"      classname="org.apache.catalina.ant.ListTask"/&gt;

-  &lt;taskdef name="reload"    classname="org.apache.catalina.ant.ReloadTask"/&gt;

-  &lt;taskdef name="resources" classname="org.apache.catalina.ant.ResourcesTask"/&gt;

-  &lt;taskdef name="roles"     classname="org.apache.catalina.ant.RolesTask"/&gt;

-  &lt;taskdef name="start"     classname="org.apache.catalina.ant.StartTask"/&gt;

-  &lt;taskdef name="stop"      classname="org.apache.catalina.ant.StopTask"/&gt;

-  &lt;taskdef name="undeploy"  classname="org.apache.catalina.ant.UndeployTask"/&gt;

+  &lt;import file="${catalina.home}/bin/catalina-tasks.xml"/&gt;

 

   &lt;!-- Executable Targets --&gt;

   &lt;target name="compile" description="Compile web application"&gt;

@@ -998,13 +1185,12 @@
             path="${path}"/&gt;

   &lt;/target&gt;

 

-&lt;/project&gt;

-</pre></td></tr>

-</table>

+&lt;/project&gt;</code></pre></div>

 

-<p>Note: The definition of the resources task above will override the resources

-datatype added in Ant 1.7. If you wish to use the resources datatype you will

-need to use Ant's namespace support to assign the Tomcat tasks to their own

+<p>Note: The definition of the resources task via the import above will override

+the resources datatype added in Ant 1.7. If you wish to use the resources

+datatype you will need to use Ant's namespace support to modify

+<code>catalina-tasks.xml</code> to assign the Tomcat tasks to their own

 namespace.</p>

 

 <p>Now, you can execute commands like <code>ant deploy</code> to deploy the

@@ -1015,97 +1201,92 @@
 consider it a security risk to include the real manager password in your

 <code>build.xml</code> file's source code.  To avoid this, omit the password

 property, and specify it from the command line:</p>

-<pre>

-  ant -Dpassword=secret deploy

-</pre>

+<div class="codeBox"><pre><code>ant -Dpassword=secret deploy</code></pre></div>

 

 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tasks output capture"><!--()--></a><a name="Tasks_output_capture"><strong>Tasks output capture</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>Using <em>Ant</em> version <strong>1.6.2</strong> or later,

-the Catalina tasks offer the option to capture their output in 

-properties or external files. They support directly the following subset of the 

+the Catalina tasks offer the option to capture their output in

+properties or external files. They support directly the following subset of the

 <code>&lt;redirector&gt;</code> type attributes:

 </p>

 

-<table border="1" cellpadding="2" cellspacing="0">

-<tbody>

+<table class="defaultTable">

 <tr>

-<td valign="top"><b>Attribute</b></td>

-<td valign="top"><b>Description</b></td>

-<td align="center" valign="top"><b>Required</b></td>

+<th>Attribute</th>

+<th>Description</th>

+<th style="text-align: center;">Required</th>

 </tr>

 <tr>

-<td valign="top">output</td>

-<td valign="top">Name of a file to which to write the output. If

+<td>output</td>

+<td>Name of a file to which to write the output. If

 the error stream is not also redirected to a file or property, it will

 appear in this output.</td>

-<td align="center" valign="top">No</td>

+<td style="text-align: center;">No</td>

 </tr>

 <tr>

-<td valign="top">error</td>

-<td valign="top">The file to which the standard error of the

+<td>error</td>

+<td>The file to which the standard error of the

 command should be redirected.</td>

-<td align="center" valign="top">No</td>

+<td style="text-align: center;">No</td>

 </tr>

 <tr>

-<td valign="top">logError</td>

-<td valign="top">This attribute is used when you wish to see

+<td>logError</td>

+<td>This attribute is used when you wish to see

 error output in Ant's log and you are redirecting output to a

 file/property. The error output will not be included in the output

 file/property. If you redirect error with the <i>error</i> or <i>errorProperty</i>

 attributes, this will have no effect.</td>

-<td align="center" valign="top">No</td>

+<td style="text-align: center;">No</td>

 </tr>

 <tr>

-<td valign="top">append</td>

-<td valign="top">Whether output and error files should be

+<td>append</td>

+<td>Whether output and error files should be

 appended to or overwritten. Defaults to <code>false</code>.</td>

-<td align="center" valign="top">No</td>

+<td style="text-align: center;">No</td>

 </tr>

 <tr>

-<td valign="top">createemptyfiles</td>

-<td valign="top">Whether output and error files should be created

+<td>createemptyfiles</td>

+<td>Whether output and error files should be created

 even when empty. Defaults to <code>true</code>.</td>

-<td align="center" valign="top">No</td>

+<td style="text-align: center;">No</td>

 </tr>

 <tr>

-<td valign="top">outputproperty</td>

-<td valign="top">The name of a property in which the output of

+<td>outputproperty</td>

+<td>The name of a property in which the output of

 the command should be stored. Unless the error stream is redirected to

 a separate file or stream, this property will include the error output.</td>

-<td align="center" valign="top">No</td>

+<td style="text-align: center;">No</td>

 </tr>

 <tr>

-<td valign="top">errorproperty</td>

-<td valign="top">The name of a property in which the standard

+<td>errorproperty</td>

+<td>The name of a property in which the standard

 error of the command should be stored.</td>

-<td align="center" valign="top">No</td>

+<td style="text-align: center;">No</td>

 </tr>

-</tbody>

 </table>

 

 <p>A couple of additional attributes can also be specified:

 </p>

-<table border="1" cellpadding="2" cellspacing="0">

-<tbody>

+<table class="defaultTable">

 <tr>

-<td valign="top"><b>Attribute</b></td>

-<td valign="top"><b>Description</b></td>

-<td align="center" valign="top"><b>Required</b></td>

+<th>Attribute</th>

+<th>Description</th>

+<th style="text-align: center;">Required</th>

 </tr>

 <tr>

-<td valign="top">alwaysLog</td>

-<td valign="top">This attribute is used when you wish to see the

+<td>alwaysLog</td>

+<td>This attribute is used when you wish to see the

 output you are capturing, appearing also in the Ant's log. It must not be

 used unless you are capturing task output.

 Defaults to <code>false</code>.

 <em>This attribute will be supported directly by <code>&lt;redirector&gt;</code>

 in Ant 1.6.3</em></td>

-<td align="center" valign="top">No</td>

+<td style="text-align: center;">No</td>

 </tr>

 <tr>

-<td valign="top">failonerror</td>

-<td valign="top">This attribute is used when you wish to avoid that

+<td>failonerror</td>

+<td>This attribute is used when you wish to avoid that

 any manager command processing error terminates the ant execution. Defaults to <code>true</code>.

 It must be set to <code>false</code>, if you want to capture error output,

 otherwise execution will terminate before anything can be captured.

@@ -1113,17 +1294,16 @@
 This attribute acts only on manager command execution,

 any wrong or missing command attribute will still cause Ant execution termination.

 </td>

-<td align="center" valign="top">No</td>

+<td style="text-align: center;">No</td>

 </tr>

-</tbody>

 </table>

 

 <p>They also support the embedded <code>&lt;redirector&gt;</code> element

 in which you can specify

-its full set of attributes, but <code>input</code>, <code>inputstring</code> and 

+its full set of attributes, but <code>input</code>, <code>inputstring</code> and

 <code>inputencoding</code> that, even if accepted, are not used because they have

 no meaning in this context.

-Refer to <a href="http://ant.apache.org">ant manual</a> for details on 

+Refer to <a href="http://ant.apache.org">ant manual</a> for details on

 <code>&lt;redirector&gt;</code> element attributes.

 </p>

 

@@ -1132,73 +1312,69 @@
 can be used:

 </p>

 

-<table border="1">

-<tr><td><pre>

-  &lt;target name="manager.deploy"

-    depends="context.status"

-    if="context.notInstalled"&gt;

-    &lt;deploy url="${mgr.url}"

-      username="${mgr.username}"

-      password="${mgr.password}"

-      path="${mgr.context.path}"

-      config="${mgr.context.descriptor}"/&gt;

-  &lt;/target&gt;

+<div class="codeBox"><pre><code>    &lt;target name="manager.deploy"

+        depends="context.status"

+        if="context.notInstalled"&gt;

+        &lt;deploy url="${mgr.url}"

+            username="${mgr.username}"

+            password="${mgr.password}"

+            path="${mgr.context.path}"

+            config="${mgr.context.descriptor}"/&gt;

+    &lt;/target&gt;

 

-  &lt;target name="manager.deploy.war"

-    depends="context.status"

-    if="context.deployable"&gt;

-    &lt;deploy url="${mgr.url}"

-      username="${mgr.username}"

-      password="${mgr.password}"

-      update="${mgr.update}"

-      path="${mgr.context.path}"

-      war="${mgr.war.file}"/&gt;

-  &lt;/target&gt;

-  

-  &lt;target name="context.status"&gt;

-    &lt;property name="running" value="${mgr.context.path}:running"/&gt;

-    &lt;property name="stopped" value="${mgr.context.path}:stopped"/&gt;

-  

-    &lt;list url="${mgr.url}"

-      outputproperty="ctx.status"

-      username="${mgr.username}"

-      password="${mgr.password}"&gt;

-    &lt;/list&gt;

-    

-    &lt;condition property="context.running"&gt;

-      &lt;contains string="${ctx.status}" substring="${running}"/&gt;

-    &lt;/condition&gt;

-    &lt;condition property="context.stopped"&gt;

-      &lt;contains string="${ctx.status}" substring="${stopped}"/&gt;

-    &lt;/condition&gt;

-    &lt;condition property="context.notInstalled"&gt;

-      &lt;and&gt;

-        &lt;isfalse value="${context.running}"/&gt;

-        &lt;isfalse value="${context.stopped}"/&gt;

-      &lt;/and&gt;

-    &lt;/condition&gt;

-    &lt;condition property="context.deployable"&gt;

-      &lt;or&gt;

-        &lt;istrue value="${context.notInstalled}"/&gt;

-        &lt;and&gt;

-          &lt;istrue value="${context.running}"/&gt;

-          &lt;istrue value="${mgr.update}"/&gt;

-        &lt;/and&gt;

-        &lt;and&gt;

-          &lt;istrue value="${context.stopped}"/&gt;

-          &lt;istrue value="${mgr.update}"/&gt;

-        &lt;/and&gt;

-      &lt;/or&gt;

-    &lt;/condition&gt;

-    &lt;condition property="context.undeployable"&gt;

-      &lt;or&gt;

-        &lt;istrue value="${context.running}"/&gt;

-        &lt;istrue value="${context.stopped}"/&gt;

-      &lt;/or&gt;

-    &lt;/condition&gt;

-  &lt;/target&gt;

-</pre></td></tr>

-</table>

+    &lt;target name="manager.deploy.war"

+        depends="context.status"

+        if="context.deployable"&gt;

+        &lt;deploy url="${mgr.url}"

+            username="${mgr.username}"

+            password="${mgr.password}"

+            update="${mgr.update}"

+            path="${mgr.context.path}"

+            war="${mgr.war.file}"/&gt;

+    &lt;/target&gt;

+

+    &lt;target name="context.status"&gt;

+        &lt;property name="running" value="${mgr.context.path}:running"/&gt;

+        &lt;property name="stopped" value="${mgr.context.path}:stopped"/&gt;

+

+        &lt;list url="${mgr.url}"

+            outputproperty="ctx.status"

+            username="${mgr.username}"

+            password="${mgr.password}"&gt;

+        &lt;/list&gt;

+

+        &lt;condition property="context.running"&gt;

+            &lt;contains string="${ctx.status}" substring="${running}"/&gt;

+        &lt;/condition&gt;

+        &lt;condition property="context.stopped"&gt;

+            &lt;contains string="${ctx.status}" substring="${stopped}"/&gt;

+        &lt;/condition&gt;

+        &lt;condition property="context.notInstalled"&gt;

+            &lt;and&gt;

+                &lt;isfalse value="${context.running}"/&gt;

+                &lt;isfalse value="${context.stopped}"/&gt;

+            &lt;/and&gt;

+        &lt;/condition&gt;

+        &lt;condition property="context.deployable"&gt;

+            &lt;or&gt;

+                &lt;istrue value="${context.notInstalled}"/&gt;

+                &lt;and&gt;

+                    &lt;istrue value="${context.running}"/&gt;

+                    &lt;istrue value="${mgr.update}"/&gt;

+                &lt;/and&gt;

+                &lt;and&gt;

+                    &lt;istrue value="${context.stopped}"/&gt;

+                    &lt;istrue value="${mgr.update}"/&gt;

+                &lt;/and&gt;

+            &lt;/or&gt;

+        &lt;/condition&gt;

+        &lt;condition property="context.undeployable"&gt;

+            &lt;or&gt;

+                &lt;istrue value="${context.running}"/&gt;

+                &lt;istrue value="${context.stopped}"/&gt;

+            &lt;/or&gt;

+        &lt;/condition&gt;

+    &lt;/target&gt;</code></pre></div>

 

 <p><strong>WARNING:</strong> even if it doesn't make many sense, and is always a bad idea,

 calling a Catalina task more than once,

@@ -1217,89 +1393,31 @@
 

 </blockquote></td></tr></table>

 

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Using the JMX Proxy Servlet"><!--()--></a><a name="Using_the_JMX_Proxy_Servlet"><strong>Using the JMX Proxy Servlet</strong></a></font></td></tr><tr><td><blockquote>

-

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="What is JMX Proxy Servlet"><!--()--></a><a name="What_is_JMX_Proxy_Servlet"><strong>What is JMX Proxy Servlet</strong></a></font></td></tr><tr><td><blockquote>

-    The JMX Proxy Servlet is a lightweight proxy to get and set the

-    tomcat internals. (Or any class that has been exposed via an MBean)

-    Its usage is not very user friendly but the UI is

-    extremely help for integrating command line scripts for monitoring

-    and changing the internals of tomcat. You can do two things with the proxy:

-    get information and set information. For you to really understand the

-    JMX Proxy Servlet, you should have a general understanding of JMX.

-    If you don't know what JMX is, then prepare to be confused.

-  </blockquote></td></tr></table>

-

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JMX Query command"><!--()--></a><a name="JMX_Query_command"><strong>JMX Query command</strong></a></font></td></tr><tr><td><blockquote>

-    This takes the form:

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-http://webserver/manager/jmxproxy/?qry=STUFF

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-    Where <code>STUFF</code> is the JMX query you wish to perform. For example,

-    here are some queries you might wish to run:

-    <ul>

-      <li>

-        <code>qry=*%3Atype%3DRequestProcessor%2C* --&gt;

-         type=RequestProcessor</code> which will locate all

-         workers which can process requests and report

-         their state.

-      </li>

-      <li>

-        <code>qry=*%3Aj2eeType=Servlet%2c* --&gt;

-            j2eeType=Servlet</code> which return all loaded servlets.

-      </li>

-      <li>

-        <code>qry=Catalina%3Atype%3DEnvironment%2Cresourcetype%3DGlobal%2Cname%3DsimpleValue --&gt;

-            Catalina:type=Environment,resourcetype=Global,name=simpleValue</code>

-            which look for a specific MBean by the given name.

-      </li>

-    </ul>

-    You'll need to experiment with this to really understand its capabilites.

-    If you provide no <code>qry</code> parameter, then all of the MBeans will

-    be displayed. We really recommend looking at the tomcat source code and

-    understand the JMX spec to get a better understanding of all the queries

-    you may run.

-  </blockquote></td></tr></table>

-

-  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JMX Set command"><!--()--></a><a name="JMX_Set_command"><strong>JMX Set command</strong></a></font></td></tr><tr><td><blockquote>

-    Now that you can query an MBean, its time to muck with Tomcat's internals!

-    The general form of the set command is :

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-http://webserver/manager/jmxproxy/?set=BEANNAME&amp;att=MYATTRIBUTE&amp;val=NEWVALUE

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-    So you need to provide 3 request parameters:

-    <ol>

-      <li><code>set</code>: The full bean name</li>

-      <li><code>att</code>: The attribute you wish to alter</li>

-      <li><code>val</code>: The new value </li>

-    </ol>

-    If all goes ok, then it will say OK, otherwise an error message will be

-    shown. For example, lets say we wish to turn up debugging on the fly for the

-    <code>ErrorReportValve</code>. The following will set debugging to 10.

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-http://localhost:8080/manager/jmxproxy/

- ?set=Catalina%3Atype%3DValve%2Cname%3DErrorReportValve%2Chost%3Dlocalhost

- &amp;att=debug&amp;val=10

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-    and my result is (YMMV):

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-Result: ok

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-

-    Here is what I see if I pass in a bad value. Here is the URL I used,

-    I try set debugging equal to 'cow':

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-http://localhost:8080/manager/jmxproxy/

- ?set=Catalina%3Atype%3DValve%2Cname%3DErrorReportValve%2Chost%3Dlocalhost

- &amp;att=debug&amp;val=cow

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-    When I try that, my result is

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-Error: java.lang.NumberFormatException: For input string: "cow"

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-  </blockquote></td></tr></table>

-

-

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/manager-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/maven-jars.html b/tomcat-uid/webapps/docs/maven-jars.html
index 8c625ac..63892fb 100644
--- a/tomcat-uid/webapps/docs/maven-jars.html
+++ b/tomcat-uid/webapps/docs/maven-jars.html
@@ -1,25 +1,125 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 6.0 (6.0.41) - Apache Tomcat - Using Tomcat libraries with Maven</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - Apache Tomcat - Using Tomcat libraries with Maven</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat 6.0</h1><h2>Apache Tomcat - Using Tomcat libraries with Maven</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat - Using Tomcat libraries with Maven</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Using_Tomcat_libraries_With_Maven">Using Tomcat libraries With Maven</a><ol><li><a href="#Tomcat_Snapshots">Tomcat Snapshots</a></li><li><a href="#Tomcat_Releases">Tomcat Releases</a></li></ol></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Using Tomcat libraries With Maven"><!--()--></a><a name="Using_Tomcat_libraries_With_Maven"><strong>Using Tomcat libraries With Maven</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat Snapshots"><!--()--></a><a name="Tomcat_Snapshots"><strong>Tomcat Snapshots</strong></a></font></td></tr><tr><td><blockquote>

-      Tomcat snapshots are located in the 

-      <a href="http://people.apache.org/repo/m2-snapshot-repository/org/apache/tomcat/">Apache Snapshot Repository</a>.

-      The official URL is <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>http://people.apache.org/repo/m2-snapshot-repository/org/apache/tomcat/</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-      Snapshots are done periodically, not on a regular basis, but when changes happen and the Tomcat team deems a new snapshot might 

+      Tomcat snapshots are located in the

+      <a href="http://repository.apache.org/content/repositories/snapshots/org/apache/tomcat/">Apache Snapshot Repository</a>.

+      The official URL is <div class="codeBox"><pre><code>http://repository.apache.org/content/repositories/snapshots/org/apache/tomcat/</code></pre></div>

+      Snapshots are done periodically, not on a regular basis, but when changes happen and the Tomcat team deems a new snapshot might

       useful.

     </blockquote></td></tr></table>

     <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat Releases"><!--()--></a><a name="Tomcat_Releases"><strong>Tomcat Releases</strong></a></font></td></tr><tr><td><blockquote>

       Stable releases are published to the

       <a href="http://repo2.maven.org/maven2/org/apache/tomcat/">Central

       Maven Repositories</a>. The URL for this is

-      <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>http://repo2.maven.org/maven2/org/apache/tomcat/</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+      <div class="codeBox"><pre><code>http://repo2.maven.org/maven2/org/apache/tomcat/</code></pre></div>

     </blockquote></td></tr></table>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/maven-jars.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/mbeans-descriptor-howto.html b/tomcat-uid/webapps/docs/mbeans-descriptor-howto.html
deleted file mode 100644
index 6363d5a..0000000
--- a/tomcat-uid/webapps/docs/mbeans-descriptor-howto.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 6.0 (6.0.41) - MBean Descriptor How To</title><meta name="author" content="Amy Roh"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

-      The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat 6.0</h1><h2>MBean Descriptor How To</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

-<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Adding_MBean_descriptions">Adding MBean descriptions</a></li></ul>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

-

-<p>Tomcat 6 uses JMX MBeans as the technology for implementing 

-manageability of Tomcat.</p>

-

-<p>The descriptions of JMX MBeans for Catalina are in the mbeans-descriptor.xml 

-file in each package.</p>

-

-<p>You will need to add MBean descriptions for your custom components 

-in order to avoid a "ManagedBean is not found" exception.</p>

-

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Adding MBean descriptions"><!--()--></a><a name="Adding_MBean_descriptions"><strong>Adding MBean descriptions</strong></a></font></td></tr><tr><td><blockquote>

-

-<p>You may also add MBean descriptions for custom components in 

-a mbeans-descriptor.xml file, located in the same package as the class files

-it describes.</p>

-

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-  &lt;mbean         name="LDAPRealm"

-            className="org.apache.catalina.mbeans.ClassNameMBean"

-          description="Custom LDAPRealm"

-               domain="Catalina"

-                group="Realm"

-                 type="com.myfirm.mypackage.LDAPRealm"&gt;

-

-    &lt;attribute   name="className"

-          description="Fully qualified class name of the managed object"

-                 type="java.lang.String"

-            writeable="false"/&gt;

-

-    &lt;attribute   name="debug"

-          description="The debugging detail level for this component"

-                 type="int"/&gt;

-    .

-    .

-    .

-

-  &lt;/mbean&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-

-

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

-        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/mbeans-descriptors-howto.html b/tomcat-uid/webapps/docs/mbeans-descriptors-howto.html
new file mode 100644
index 0000000..53fa517
--- /dev/null
+++ b/tomcat-uid/webapps/docs/mbeans-descriptors-howto.html
@@ -0,0 +1,151 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - MBeans Descriptors How To</title><meta name="author" content="Amy Roh"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>MBeans Descriptors How To</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Adding_MBean_descriptions">Adding MBean descriptions</a></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>Tomcat uses JMX MBeans as the technology for implementing

+manageability of Tomcat.</p>

+

+<p>The descriptions of JMX MBeans for Catalina are in the mbeans-descriptors.xml

+file in each package.</p>

+

+<p>You will need to add MBean descriptions for your custom components

+in order to avoid a "ManagedBean is not found" exception.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Adding MBean descriptions"><!--()--></a><a name="Adding_MBean_descriptions"><strong>Adding MBean descriptions</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>You may also add MBean descriptions for custom components in

+a mbeans-descriptors.xml file, located in the same package as the class files

+it describes.</p>

+

+<div class="codeBox"><pre><code>

+  &lt;mbean         name="LDAPRealm"

+            className="org.apache.catalina.mbeans.ClassNameMBean"

+          description="Custom LDAPRealm"

+               domain="Catalina"

+                group="Realm"

+                 type="com.myfirm.mypackage.LDAPRealm"&gt;

+

+    &lt;attribute   name="className"

+          description="Fully qualified class name of the managed object"

+                 type="java.lang.String"

+            writeable="false"/&gt;

+

+    &lt;attribute   name="debug"

+          description="The debugging detail level for this component"

+                 type="int"/&gt;

+    .

+    .

+    .

+

+  &lt;/mbean&gt;

+</code></pre></div>

+

+

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/mbeans-descriptors-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/monitoring.html b/tomcat-uid/webapps/docs/monitoring.html
index a88db90..112a20f 100644
--- a/tomcat-uid/webapps/docs/monitoring.html
+++ b/tomcat-uid/webapps/docs/monitoring.html
@@ -1,32 +1,103 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 6.0 (6.0.41) - Monitoring and Managing Tomcat</title><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - Monitoring and Managing Tomcat</title><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat 6.0</h1><h2>Monitoring and Managing Tomcat</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

-<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Enabling_JMX_Remote">Enabling JMX Remote</a></li><li><a href="#Manage_Tomcat_with_JMX_remote_Ant_Tasks">Manage Tomcat with JMX remote Ant Tasks</a></li><li><a href="#JMXAccessorOpenTask_-_JMX_open_connection_task">JMXAccessorOpenTask - JMX open connection task</a></li><li><a href="#JMXAccessorGetTask:__get_attribute_value_Ant_task">JMXAccessorGetTask:  get attribute value Ant task</a></li><li><a href="#JMXAccessorSetTask:__set_attribute_value_Ant_task">JMXAccessorSetTask:  set attribute value Ant task</a></li><li><a href="#JMXAccessorInvokeTask:__invoke_MBean_operation_Ant_task">JMXAccessorInvokeTask:  invoke MBean operation Ant task</a></li><li><a href="#JMXAccessorQueryTask:__query_MBean_Ant_task">JMXAccessorQueryTask:  query MBean Ant task</a></li><li><a href="#JMXAccessorCreateTask:__remote_create_MBean_Ant_task">JMXAccessorCreateTask:  remote create MBean Ant task</a></li><li><a href="#JMXAccessorUnregisterTask:__remote_unregister_MBean_Ant_task">JMXAccessorUnregisterTask:  remote unregister MBean Ant task</a></li><li><a href="#JMXAccessorCondition:__express_condition">JMXAccessorCondition:  express condition</a></li><li><a href="#JMXAccessorEqualsCondition:__equals_MBean_Ant_condition">JMXAccessorEqualsCondition:  equals MBean Ant condition</a></li></ul>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Monitoring and Managing Tomcat</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Enabling_JMX_Remote">Enabling JMX Remote</a></li><li><a href="#Manage_Tomcat_with_JMX_remote_Ant_Tasks">Manage Tomcat with JMX remote Ant Tasks</a></li><li><a href="#JMXAccessorOpenTask_-_JMX_open_connection_task">JMXAccessorOpenTask - JMX open connection task</a></li><li><a href="#JMXAccessorGetTask:__get_attribute_value_Ant_task">JMXAccessorGetTask:  get attribute value Ant task</a></li><li><a href="#JMXAccessorSetTask:__set_attribute_value_Ant_task">JMXAccessorSetTask:  set attribute value Ant task</a></li><li><a href="#JMXAccessorInvokeTask:__invoke_MBean_operation_Ant_task">JMXAccessorInvokeTask:  invoke MBean operation Ant task</a></li><li><a href="#JMXAccessorQueryTask:__query_MBean_Ant_task">JMXAccessorQueryTask:  query MBean Ant task</a></li><li><a href="#JMXAccessorCreateTask:__remote_create_MBean_Ant_task">JMXAccessorCreateTask:  remote create MBean Ant task</a></li><li><a href="#JMXAccessorUnregisterTask:__remote_unregister_MBean_Ant_task">JMXAccessorUnregisterTask:  remote unregister MBean Ant task</a></li><li><a href="#JMXAccessorCondition:__express_condition">JMXAccessorCondition:  express condition</a></li><li><a href="#JMXAccessorEqualsCondition:__equals_MBean_Ant_condition">JMXAccessorEqualsCondition:  equals MBean Ant condition</a></li><li><a href="#Using_the_JMXProxyServlet">Using the JMXProxyServlet</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

   <p>Monitoring is a key aspect of system administration. Looking inside a

      running server, obtaining some statistics or reconfiguring some aspects of

-     an application are all daily administration tasks.</p>  

-  

+     an application are all daily administration tasks.</p>

+

   </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Enabling JMX Remote"><!--()--></a><a name="Enabling_JMX_Remote"><strong>Enabling JMX Remote</strong></a></font></td></tr><tr><td><blockquote>

 

-    <p><strong>Note:</strong> This configuration is needed if you are

-    going to monitor Tomcat remotely. If you are going

-    to monitor it locally, using the same user that Tomcat runs with, then

-    with Java 6 it is not needed at all, and with Java 5 it is as simple as

-    adding <code>-Dcom.sun.management.jmxremote</code>, see Java documentation.</p>

+    <p><strong>Note:</strong> This configuration is needed only if you are

+    going to monitor Tomcat remotely. It is not needed if you are going

+    to monitor it locally, using the same user that Tomcat runs with.</p>

 

-    <p>The Oracle website includes the list of options and how to configure JMX Remote on Java 5:

-        <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/management/agent.html">

-        http://docs.oracle.com/javase/1.5.0/docs/guide/management/agent.html</a>

-        and on Java 6:

+    <p>The Oracle website includes the list of options and how to configure

+    JMX Remote on Java 6:

         <a href="http://docs.oracle.com/javase/6/docs/technotes/guides/management/agent.html">

         http://docs.oracle.com/javase/6/docs/technotes/guides/management/agent.html</a>.

     </p>

-    <p>The following is a quick configuration guide for Java 5:</p>

+    <p>The following is a quick configuration guide for Java 6:</p>

     <p>Add the following parameters to <code>setenv.bat</code> script of your

     Tomcat (see <a href="RUNNING.txt">RUNNING.txt</a> for details).<br>

     <em>Note:</em> This syntax is for Microsoft Windows. The command has

@@ -35,32 +106,32 @@
     java options for the service.

     For un*xes remove <code>"set "</code> from beginning of the line.

     </p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

 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

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 

     <ol>

-    <li>If you require authorization, add and change this :

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+    <li>If you require authorization, add and change this:

+<div class="codeBox"><pre><code>

   -Dcom.sun.management.jmxremote.authenticate=true

   -Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password

   -Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

     </li>

-    <li>edit the access authorization file <em>$CATALINA_BASE/conf/jmxremote.access</em> :

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+    <li>edit the access authorization file <em>$CATALINA_BASE/conf/jmxremote.access</em>:

+<div class="codeBox"><pre><code>

 monitorRole readonly

 controlRole readwrite

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

     </li>

-    <li>edit the password file <em>$CATALINA_BASE/conf/jmxremote.password</em> :

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+    <li>edit the password file <em>$CATALINA_BASE/conf/jmxremote.password</em>:

+<div class="codeBox"><pre><code>

 monitorRole tomcat

 controlRole tomcat

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

     <b>Tip</b>: The password file should be read-only and only accessible by the

     operating system user Tomcat is running as.

     </li>

@@ -73,7 +144,7 @@
 

   </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Manage Tomcat with JMX remote Ant Tasks"><!--()--></a><a name="Manage_Tomcat_with_JMX_remote_Ant_Tasks"><strong>Manage Tomcat with JMX remote Ant Tasks</strong></a></font></td></tr><tr><td><blockquote>

    <p>To simplify JMX usage with Ant 1.6.x, a set of tasks is provided that may

-   be used with antlib.</p>   

+   be used with antlib.</p>

    <p><b>antlib</b>: Copy your catalina-ant.jar from $CATALINA_HOME/lib to $ANT_HOME/lib.</p>

    <p>The following example shows the JMX Accessor usage:<br>

    <em>Note:</em> The <code>name</code> attribute value was wrapped here to be

@@ -114,7 +185,7 @@
        property &lt;em&gt;clustertest.maxActiveSessions.orginal&lt;/em&gt;

     --&gt;

     &lt;jmx:get

-      name="Catalina:type=Manager,path=/ClusterTest,host=localhost"

+      name="Catalina:type=Manager,context=/ClusterTest,host=localhost"

       attribute="maxActiveSessions"

       resultproperty="clustertest.maxActiveSessions.orginal"

       echo="true"

@@ -122,7 +193,7 @@
     &lt;!-- set maxActiveSession to 100

     --&gt;

     &lt;jmx:set

-      name="Catalina:type=Manager,path=/ClusterTest,host=localhost"

+      name="Catalina:type=Manager,context=/ClusterTest,host=localhost"

       attribute="maxActiveSessions"

       value="100"

       type="int"

@@ -131,7 +202,7 @@
        access all session ids directly with Ant property sessions.[0..n].

     --&gt;

     &lt;jmx:invoke

-      name="Catalina:type=Manager,path=/ClusterTest,host=localhost"

+      name="Catalina:type=Manager,context=/ClusterTest,host=localhost"

       operation="listSessionIds"

       resultproperty="sessions"

       echo="false"

@@ -140,7 +211,7 @@
     &lt;!-- Access session attribute &lt;em&gt;Hello&lt;/em&gt; from first session.

     --&gt;

     &lt;jmx:invoke

-      name="Catalina:type=Manager,path=/ClusterTest,host=localhost"

+      name="Catalina:type=Manager,context=/ClusterTest,host=localhost"

       operation="getSessionAttribute"

       resultproperty="Hello"

       echo="false"

@@ -180,7 +251,7 @@
 </pre>

    </td></tr>

 </table>

-   <p><b>import:</b> Import the JMX Accessor Project with 

+   <p><b>import:</b> Import the JMX Accessor Project with

    <em>&lt;import file="${CATALINA.HOME}/bin/catalina-tasks.xml" /&gt;</em> and

    reference the tasks with <em>jmxOpen</em>, <em>jmxSet</em>, <em>jmxGet</em>,

    <em>jmxQuery</em>, <em>jmxInvoke</em>, <em>jmxEquals</em> and <em>jmxCondition</em>.</p>

@@ -212,7 +283,7 @@
 

   <tr>

     <td>port</td>

-    <td>Set the remote connection port 

+    <td>Set the remote connection port

     </td>

     <td><code>8050</code></td>

   </tr>

@@ -245,7 +316,7 @@
     </td>

     <td><code>false</code></td>

   </tr>

-  

+

   <tr>

     <td>if</td>

     <td>Only execute if a property of the given name <b>exists</b> in the current project.

@@ -264,31 +335,31 @@
 </p>

 <p>

 Example to open a new JMX connection<br>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

   &lt;jmx:open

     host="${jmx.server.name}"

     port="${jmx.server.port}"

   /&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-</p>  

+</code></pre></div>

+</p>

 <p>

-Example to open a JMX connection from URL, with authorization and 

+Example to open a JMX connection from URL, with authorization and

 store at other reference <br>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

   &lt;jmx:open

     url="service:jmx:rmi:///jndi/rmi://localhost:9024/jmxrmi"

     ref="jmx.server.9024"

     username="controlRole"

     password="tomcat"

   /&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-</p>  

+</code></pre></div>

+</p>

 

 <p>

-Example to open a JMX connection from URL, with authorization and 

-store at other reference, but only when property <em>jmx.if</em> exists and 

+Example to open a JMX connection from URL, with authorization and

+store at other reference, but only when property <em>jmx.if</em> exists and

 <em>jmx.unless</em> not exists<br>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

   &lt;jmx:open

     url="service:jmx:rmi:///jndi/rmi://localhost:9024/jmxrmi"

     ref="jmx.server.9024"

@@ -297,10 +368,10 @@
     if="jmx.if"

     unless="jmx.unless"

   /&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-</p> 

-<p><b>Note</b>: All properties from <em>jmxOpen</em> task also exists at all 

-other tasks and conditions. 

+</code></pre></div>

+</p>

+<p><b>Note</b>: All properties from <em>jmxOpen</em> task also exists at all

+other tasks and conditions.

 </p>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JMXAccessorGetTask:  get attribute value Ant task"><!--()--></a><a name="JMXAccessorGetTask:__get_attribute_value_Ant_task"><strong>JMXAccessorGetTask:  get attribute value Ant task</strong></a></font></td></tr><tr><td><blockquote>

@@ -351,7 +422,7 @@
 

   <tr>

     <td>delimiter</td>

-    <td>Split result with delimiter (java.util.StringTokenizier) 

+    <td>Split result with delimiter (java.util.StringTokenizer)

         and use resultproperty as prefix to store tokens.

     </td>

     <td></td>

@@ -359,8 +430,8 @@
 

   <tr>

     <td>separatearrayresults</td>

-    <td>When return value is an array, save result as property list 

-    (<em>$resultproperty.[0..N]</em> and <em>$resultproperty.length</em>) 

+    <td>When return value is an array, save result as property list

+    (<em>$resultproperty.[0..N]</em> and <em>$resultproperty.length</em>)

     </td>

     <td><code>true</code></td>

   </tr>

@@ -369,36 +440,36 @@
 </p>

 <p>

 Example to get remote MBean attribute from default JMX connection <br>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

   &lt;jmx:get

-    name="Catalina:type=Manager,path=/servlets-examples,host=localhost"

+    name="Catalina:type=Manager,context=/servlets-examples,host=localhost"

     attribute="maxActiveSessions"

     resultproperty="servlets-examples.maxActiveSessions"

   /&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-</p>  

+</code></pre></div>

+</p>

 <p>

 Example to get and result array and split it at separate properties<br>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

   &lt;jmx:get

-    name="Catalina:type=ClusterSender,host=localhost"

-    attribute="senderObjectNames"

-    resultproperty="senderObjectNames"

+      name="Catalina:type=ClusterSender,host=localhost"

+      attribute="senderObjectNames"

+      resultproperty="senderObjectNames"

   /&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 Access the senderObjectNames properties with:

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

   ${senderObjectNames.length} give the number of returned sender list.

   ${senderObjectNames.[0..N]} found all sender object names

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-</p>  

+</code></pre></div>

+</p>

 

 <p>

 Example to get IDataSender attribute connected only when cluster is configured.<br>

 <em>Note:</em> The <code>name</code> attribute value was wrapped here to be

 more readable. It has to be all on the same line, without spaces.

 </p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

   &lt;jmx:query

     failonerror="false"

     name="Catalina:type=Cluster,host=${tomcat.application.host}"

@@ -411,8 +482,7 @@
     attribute="connected"

     resultproperty="datasender.connected"

     if="cluster.0.name" /&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-

+</code></pre></div>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JMXAccessorSetTask:  set attribute value Ant task"><!--()--></a><a name="JMXAccessorSetTask:__set_attribute_value_Ant_task"><strong>JMXAccessorSetTask:  set attribute value Ant task</strong></a></font></td></tr><tr><td><blockquote>

 <p>

@@ -441,7 +511,7 @@
 

   <tr>

     <td>value</td>

-    <td>value that set to attribute 

+    <td>value that set to attribute

     </td>

     <td></td>

   </tr>

@@ -471,15 +541,15 @@
 </p>

 <p>

 Example to set remote MBean attribute value<br>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

   &lt;jmx:set

-    name="Catalina:type=Manager,path=/servlets-examples,host=localhost"

+    name="Catalina:type=Manager,context=/servlets-examples,host=localhost"

     attribute="maxActiveSessions"

     value="500"

     type="int"

   /&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-</p>  

+</code></pre></div>

+</p>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JMXAccessorInvokeTask:  invoke MBean operation Ant task"><!--()--></a><a name="JMXAccessorInvokeTask:__invoke_MBean_operation_Ant_task"><strong>JMXAccessorInvokeTask:  invoke MBean operation Ant task</strong></a></font></td></tr><tr><td><blockquote>

 <p>

@@ -501,7 +571,7 @@
 

   <tr>

     <td>operation</td>

-    <td>Existing MBean operation (see Tomcat 

+    <td>Existing MBean operation (see Tomcat

         <a href="funcspecs/fs-admin-opers.html">funcspecs/fs-admin-opers.html</a>).

     </td>

     <td></td>

@@ -530,7 +600,7 @@
 

   <tr>

     <td>delimiter</td>

-    <td>Split result with delimiter (java.util.StringTokenizier) 

+    <td>Split result with delimiter (java.util.StringTokenizer)

         and use resultproperty as prefix to store tokens.

     </td>

     <td></td>

@@ -538,8 +608,8 @@
 

   <tr>

     <td>separatearrayresults</td>

-    <td>When return value is an array, save result as property list 

-    (<em>$resultproperty.[0..N]</em> and <em>$resultproperty.length</em>) 

+    <td>When return value is an array, save result as property list

+    (<em>$resultproperty.[0..N]</em> and <em>$resultproperty.length</em>)

     </td>

     <td><code>true</code></td>

   </tr>

@@ -548,42 +618,42 @@
 </p>

 <p>

 stop an application <br>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

   &lt;jmx:invoke

-    name="Catalina:type=Manager,path=/servlets-examples,host=localhost"

+    name="Catalina:type=Manager,context=/servlets-examples,host=localhost"

     operation="stop"/&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 Now you can find the sessionid at <em>${sessions.[0..N}</em> properties and access the count

 with ${sessions.length} property.

-</p>  

+</p>

 <p>

 Example to get all sessionids <br>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

   &lt;jmx:invoke

-    name="Catalina:type=Manager,path=/servlets-examples,host=localhost"

+    name="Catalina:type=Manager,context=/servlets-examples,host=localhost"

     operation="listSessionIds"

     resultproperty="sessions"

     delimiter=" "

   /&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 Now you can find the sessionid at <em>${sessions.[0..N}</em> properties and access the count

 with ${sessions.length} property.

-</p>  

+</p>

 <p>

 Example to get remote MBean session attribute from session ${sessionid.0}<br>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

   &lt;jmx:invoke

-    name="Catalina:type=Manager,path=/ClusterTest,host=localhost"

+    name="Catalina:type=Manager,context=/ClusterTest,host=localhost"

     operation="getSessionAttribute"

     resultproperty="hello"&gt;

      &lt;arg value="${sessionid.0}"/&gt;

      &lt;arg value="Hello" /&gt;

   &lt;/jmx:invoke&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 </p>

 <p>

 Example to create a new access logger valve at vhost <em>localhost</em>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

  &lt;jmx:invoke

          name="Catalina:type=MBeanFactory"

          operation="createAccessLoggerValve"

@@ -591,10 +661,10 @@
  &gt;

      &lt;arg value="Catalina:type=Host,host=localhost"/&gt;

  &lt;/jmx:invoke&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 Now you can find new MBean with name stored at <em>${accessLoggerObjectName}</em>

 property.

-</p>  

+</p>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JMXAccessorQueryTask:  query MBean Ant task"><!--()--></a><a name="JMXAccessorQueryTask:__query_MBean_Ant_task"><strong>JMXAccessorQueryTask:  query MBean Ant task</strong></a></font></td></tr><tr><td><blockquote>

 <p>

@@ -636,7 +706,7 @@
   </tr>

 

   <tr>

-    <td>attributebinduing</td>

+    <td>attributebinding</td>

     <td>bind ALL MBean attributes in addition to <em>name</em>

     </td>

     <td><code>false</code></td>

@@ -644,7 +714,7 @@
 

   <tr>

     <td>delimiter</td>

-    <td>Split result with delimiter (java.util.StringTokenizier) 

+    <td>Split result with delimiter (java.util.StringTokenizer)

         and use resultproperty as prefix to store tokens.

     </td>

     <td></td>

@@ -652,8 +722,8 @@
 

   <tr>

     <td>separatearrayresults</td>

-    <td>When return value is an array, save result as property list 

-    (<em>$resultproperty.[0..N]</em> and <em>$resultproperty.length</em>) 

+    <td>When return value is an array, save result as property list

+    (<em>$resultproperty.[0..N]</em> and <em>$resultproperty.length</em>)

     </td>

     <td><code>true</code></td>

   </tr>

@@ -662,30 +732,30 @@
 </p>

 <p>

 Get all Manager ObjectNames from all services and Hosts <br>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

   &lt;jmx:query

     name="Catalina:type=Manager,*

     resultproperty="manager" /&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-Now you can find the Session Manager at <em>${manager.[0..N].name}</em> 

+</code></pre></div>

+Now you can find the Session Manager at <em>${manager.[0..N].name}</em>

 properties and access the result object counter with ${manager.length} property.

-</p>  

+</p>

 <p>

 Example to get the Manager from <em>servlet-examples</em> application an bind all MBean properties<br>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

   &lt;jmx:query

-    name="Catalina:type=Manager,path=/servlet-examples,host=localhost*"

+    name="Catalina:type=Manager,context=/servlet-examples,host=localhost*"

     attributebinding="true"

     resultproperty="manager.servletExamples" /&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 Now you can find the manager at <em>${manager.servletExamples.0.name}</em> property

 and can access all properties from this manager with <em>${manager.servletExamples.0.[manager attribute names]</em>}.

 The result object counter from MBeans is stored ad ${manager.length} property.

-</p>  

+</p>

 

 <p>

 Example to get all MBeans from a server and store inside an external XML property file<br>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

 &lt;project name="jmx.query"

             xmlns:jmx="antlib:org.apache.catalina.ant.jmx"

             default="query-all" basedir="."&gt;

@@ -702,6 +772,7 @@
     ref="jmx.server"

     username="${jmx.username}"

     password="${jmx.password}"/&gt;

+

   &lt;!-- Query MBean list --&gt;

   &lt;jmx:query

     name="*:*"

@@ -718,9 +789,9 @@
     "Number of MBeans in server ${jmx.host}:${jmx.port} is ${mbeans.length}"/&gt;

 &lt;/target&gt;

 &lt;/project&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 Now you can find all MBeans inside the file <em>mbeans.properties</em>.

-</p>  

+</p>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JMXAccessorCreateTask:  remote create MBean Ant task"><!--()--></a><a name="JMXAccessorCreateTask:__remote_create_MBean_Ant_task"><strong>JMXAccessorCreateTask:  remote create MBean Ant task</strong></a></font></td></tr><tr><td><blockquote>

 <p>

@@ -751,7 +822,7 @@
     <td>classLoader</td>

     <td>ObjectName of server or web application classloader <br>

     ( <em>Catalina:type=ServerClassLoader,name=[server,common,shared]</em> or<br>

-     <em>Catalina:type=WebappClassLoader,path=/myapps,host=localhost</em>) 

+     <em>Catalina:type=WebappClassLoader,context=/myapps,host=localhost</em>)

     </td>

     <td></td>

   </tr>

@@ -774,7 +845,7 @@
 </p>

 <p>

 Example to create remote MBean<br>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

   &lt;jmx:create

     ref="${jmx.reference}"

     name="Catalina:type=MBeanFactory"

@@ -782,12 +853,12 @@
     classLoader="Catalina:type=ServerClassLoader,name=server"&gt;

     &lt;arg value="org.apache.catalina.mbeans.MBeanFactory" /&gt;

   &lt;/jmx:create&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-</p>  

+</code></pre></div>

+</p>

 <p>

     <b>Warning</b>: Many Tomcat MBeans can't be linked to their parent once<br>

     created. The Valve, Cluster and Realm MBeans are not automatically<br>

-    connected with their parent. Use the <em>MBeanFacrory</em> create<br>

+    connected with their parent. Use the <em>MBeanFactory</em> create<br>

     operation instead.

 </p>

 

@@ -827,15 +898,15 @@
 </p>

 <p>

 Example to unregister remote MBean<br>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

   &lt;jmx:unregister

     name="Catalina:type=MBeanFactory"

   /&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-</p>  

+</code></pre></div>

+</p>

 <p>

     <b>Warning</b>: A lot of Tomcat MBeans can't be unregister.<br>

-    The MBeans are not unlinked from their parent. Use <em>MBeanFacrory</em><br>

+    The MBeans are not unlinked from their parent. Use <em>MBeanFactory</em><br>

     remove operation instead.

 </p>

 

@@ -866,7 +937,7 @@
 

   <tr>

     <td>port</td>

-    <td>Set the remote connection port 

+    <td>Set the remote connection port

     </td>

     <td><code>8050</code></td>

   </tr>

@@ -922,7 +993,7 @@
   </tr>

 

   <tr>

-    <td>value (requiered)</td>

+    <td>value (required)</td>

     <td>Second arg for operation

     </td>

     <td></td>

@@ -937,7 +1008,7 @@
 

   <tr>

     <td>operation</td>

-    <td> express one 

+    <td> express one

     <ul>

     <li>==  equals</li>

     <li>!=  not equals</li>

@@ -945,7 +1016,7 @@
     <li>&gt;= greater than or equals (&amp;gt;=)</li>

     <li>&lt; lesser than (&amp;lt;)</li>

     <li>&lt;= lesser than or equals (&amp;lt;=)</li>

-    </ul>         

+    </ul>

     </td>

     <td><code>==</code></td>

   </tr>

@@ -954,30 +1025,30 @@
 </p>

 <p>

 Wait for server connection and that cluster backup node is accessable<br>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

 &lt;target name="wait"&gt;

-   &lt;waitfor maxwait="${maxwait}" maxwaitunit="second" timeoutproperty="server.timeout" &gt;

-     &lt;and&gt;

-       &lt;socket server="${server.name}" port="${server.port}"/&gt;

-       &lt;http url="${url}"/&gt;

-       &lt;jmx:condition

-         operation="=="

-         host="localhost"

-         port="9014"

-         username="controlRole"

-         password="tomcat"

-         name=

+  &lt;waitfor maxwait="${maxwait}" maxwaitunit="second" timeoutproperty="server.timeout" &gt;

+    &lt;and&gt;

+      &lt;socket server="${server.name}" port="${server.port}"/&gt;

+      &lt;http url="${url}"/&gt;

+      &lt;jmx:condition

+        operation="=="

+        host="localhost"

+        port="9014"

+        username="controlRole"

+        password="tomcat"

+        name=

 "Catalina:type=IDataSender,host=localhost,senderAddress=192.168.111.1,senderPort=9025"

-         attribute="connected"

-         value="true"

-       /&gt;

+        attribute="connected"

+        value="true"

+      /&gt;

     &lt;/and&gt;

   &lt;/waitfor&gt;

   &lt;fail if="server.timeout" message="Server ${url} don't answer inside ${maxwait} sec" /&gt;

   &lt;echo message="Server ${url} alive" /&gt;

 &lt;/target&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-</p>  

+</code></pre></div>

+</p>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JMXAccessorEqualsCondition:  equals MBean Ant condition"><!--()--></a><a name="JMXAccessorEqualsCondition:__equals_MBean_Ant_condition"><strong>JMXAccessorEqualsCondition:  equals MBean Ant condition</strong></a></font></td></tr><tr><td><blockquote>

 <p>

@@ -1006,7 +1077,7 @@
 

   <tr>

     <td>port</td>

-    <td>Set the remote connection port 

+    <td>Set the remote connection port

     </td>

     <td><code>8050</code></td>

   </tr>

@@ -1052,7 +1123,7 @@
 </p>

 <p>

 Wait for server connection and that cluster backup node is accessible<br>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

 &lt;target name="wait"&gt;

   &lt;waitfor maxwait="${maxwait}" maxwaitunit="second" timeoutproperty="server.timeout" &gt;

     &lt;and&gt;

@@ -1073,9 +1144,72 @@
   &lt;fail if="server.timeout" message="Server ${url} don't answer inside ${maxwait} sec" /&gt;

   &lt;echo message="Server ${url} alive" /&gt;

 &lt;/target&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-</p>  

+</code></pre></div>

+</p>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Using the JMXProxyServlet"><!--()--></a><a name="Using_the_JMXProxyServlet"><strong>Using the JMXProxyServlet</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>

+      Tomcat offers an alternative to using remote (or even local) JMX

+      connections while still giving you access to everything JMX has to offer:

+      Tomcat's

+      <a href="api/org/apache/catalina/manager/JMXProxyServlet.html">JMXProxyServlet</a>.

+    </p>

+    

+    <p>

+      The JMXProxyServlet allows a client to issue JMX queries via an HTTP

+      interface. This technique offers the following advantages over using

+      JMX directly from a client program:

+    </p>

+

+    <ul>

+      <li>You don't have to launch a full JVM and make a remote JMX connection

+      just to ask for one small piece of data from a running server</li>

+      <li>You don't have to know how to work with JMX connections</li>

+      <li>You don't need any of the complex configuration covered in the rest

+      of this page</li>

+      <li>Your client program does not have to be written in Java</li>

+    </ul>

+

+    <p>

+      A perfect example of JMX overkill can be seen in the case of popular

+      server-monitoring software such as Nagios or Icinga: if you want to

+      monitor 10 items via JMX, you will have to launch 10 JVMs, make 10 JMX

+      connections, and then shut them all down every few minutes. With the

+      JMXProxyServlet, you can make 10 HTTP connections and be done with it.

+    </p>

+    

+    <p>

+      You can find out more information about the JMXProxyServlet in the

+      documentation for the 

+      <a href="manager-howto.html#Using_the_JMX_Proxy_Servlet">Tomcat

+      manager</a>.

+    </p>

+  </blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/monitoring.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/proxy-howto.html b/tomcat-uid/webapps/docs/proxy-howto.html
index 9cea175..c9df629 100644
--- a/tomcat-uid/webapps/docs/proxy-howto.html
+++ b/tomcat-uid/webapps/docs/proxy-howto.html
@@ -1,9 +1,84 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 6.0 (6.0.41) - Proxy Support HOW-TO</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - Proxy Support HOW-TO</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat 6.0</h1><h2>Proxy Support HOW-TO</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Proxy Support HOW-TO</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Apache_1.3_Proxy_Support">Apache 1.3 Proxy Support</a></li><li><a href="#Apache_2.0_Proxy_Support">Apache 2.0 Proxy Support</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -16,7 +91,7 @@
 calls of interest, for this purpose, are:</p>

 <ul>

 <li><code>ServletRequest.getServerName()</code>: Returns the host name of the server to which the request was sent.</li>

-<li><code>ServletRequest.getServerPort()</code>: Returns the host name of the server to which the request was sent.</li>

+<li><code>ServletRequest.getServerPort()</code>: Returns the port number of the server to which the request was sent.</li>

 <li><code>ServletRequest.getLocalName()</code>: Returns the host name of the Internet Protocol (IP) interface on which the request was received.</li>

 <li><code>ServletRequest.getLocalPort()</code>:  Returns the Internet Protocol (IP) port number of the interface on which the request was received.</li>

 </ul>

@@ -37,7 +112,7 @@
 

 <p>Apache 1.3 supports an optional module (<code>mod_proxy</code>) that

 configures the web server to act as a proxy server.  This can be used to

-forward requests for a particular web application to a Tomcat 6 instance,

+forward requests for a particular web application to a Tomcat instance,

 without having to configure a web connector such as <code>mod_jk</code>.

 To accomplish this, you need to perform the following tasks:</p>

 <ol>

@@ -49,28 +124,28 @@
 <li>If not already added for you, make sure that you are loading the

     <code>mod_proxy</code> module at Apache startup time, by using the

     following directives in your <code>httpd.conf</code> file:

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

 LoadModule proxy_module  {path-to-modules}/mod_proxy.so

 AddModule  mod_proxy.c

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div></li>

+</code></pre></div></li>

 <li>Include two directives in your <code>httpd.conf</code> file for

-    each web application that you wish to forward to Tomcat 6.  For

+    each web application that you wish to forward to Tomcat.  For

     example, to forward an application at context path <code>/myapp</code>:

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

 ProxyPass         /myapp  http://localhost:8081/myapp

 ProxyPassReverse  /myapp  http://localhost:8081/myapp

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

     which tells Apache to forward URLs of the form

-    <code>http://localhost/myapp/*</code> to the Tomcat 6 connector

+    <code>http://localhost/myapp/*</code> to the Tomcat connector

     listening on port 8081.</li>

-<li>Configure your copy of Tomcat 6 to include a special

+<li>Configure your copy of Tomcat to include a special

     <code>&lt;Connector&gt;</code> element, with appropriate

     proxy settings, for example:

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

 &lt;Connector port="8081" ...

               proxyName="www.mycompany.com"

               proxyPort="80"/&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

     which will cause servlets inside this web application to think that

     all proxied requests were directed to <code>www.mycompany.com</code>

     on port 80.</li>

@@ -107,7 +182,7 @@
 <p>When requests are proxied in this manner, <strong>all</strong> requests

 for the configured web applications will be processed by Tomcat (including

 requests for static content).  You can improve performance by using the

-<code>mod_jk</code> web connector instead of <code>mod_proxy</code>. 

+<code>mod_jk</code> web connector instead of <code>mod_proxy</code>.

 <code>mod_jk</code> can be configured so that the web server serves static

 content that is not processed by filters or security constraints defined

 within the web application's deployment descriptor

@@ -116,6 +191,31 @@
 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Apache 2.0 Proxy Support"><!--()--></a><a name="Apache_2.0_Proxy_Support"><strong>Apache 2.0 Proxy Support</strong></a></font></td></tr><tr><td><blockquote>

 The same instructions hold true as for 1.3. (Except in Apache 2.0,

 you may omit <code>AddModule  mod_proxy.c</code>)

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/proxy-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/realm-howto.html b/tomcat-uid/webapps/docs/realm-howto.html
index 8667198..d80508f 100644
--- a/tomcat-uid/webapps/docs/realm-howto.html
+++ b/tomcat-uid/webapps/docs/realm-howto.html
@@ -1,9 +1,84 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 6.0 (6.0.41) - Realm Configuration HOW-TO</title><meta name="author" content="Craig R. McClanahan"><meta name="author" content="Yoav Shapira"><meta name="author" content="Andrew R. Jaquith"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - Realm Configuration HOW-TO</title><meta name="author" content="Craig R. McClanahan"><meta name="author" content="Yoav Shapira"><meta name="author" content="Andrew R. Jaquith"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat 6.0</h1><h2>Realm Configuration HOW-TO</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Realm Configuration HOW-TO</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Quick_Start">Quick Start</a></li><li><a href="#Overview">Overview</a><ol><li><a href="#What_is_a_Realm?">What is a Realm?</a></li><li><a href="#Configuring_a_Realm">Configuring a Realm</a></li></ol></li><li><a href="#Common_Features">Common Features</a><ol><li><a href="#Digested_Passwords">Digested Passwords</a></li><li><a href="#Example_Application">Example Application</a></li><li><a href="#Manager_Application">Manager Application</a></li><li><a href="#Realm_Logging">Realm Logging</a></li></ol></li><li><a href="#Standard_Realm_Implementations">Standard Realm Implementations</a><ol><li><a href="#JDBCRealm">JDBCRealm</a></li><li><a href="#DataSourceRealm">DataSourceRealm</a></li><li><a href="#JNDIRealm">JNDIRealm</a></li><li><a href="#UserDatabaseRealm">UserDatabaseRealm</a></li><li><a href="#MemoryRealm">MemoryRealm</a></li><li><a href="#JAASRealm">JAASRealm</a></li><li><a href="#CombinedRealm">CombinedRealm</a></li><li><a href="#LockOutRealm">LockOutRealm</a></li></ol></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Quick Start"><!--()--></a><a name="Quick_Start"><strong>Quick Start</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -21,7 +96,7 @@
 Specification (Version 2.4)</a>, Section 12.</p>

 

 <p>For information about utilizing the <em>Single Sign On</em> feature of

-Tomcat 6 (allowing a user to authenticate themselves once across the entire

+Tomcat (allowing a user to authenticate themselves once across the entire

 set of web applications associated with a virtual host), see

 <a href="config/host.html#Single Sign On">here</a>.</p>

 

@@ -45,10 +120,10 @@
 defining the interface between a servlet container and the associated user

 and role information.  In many cases, however, it is desirable to "connect"

 a servlet container to some existing authentication database or mechanism

-that already exists in the production environment.  Therefore, Tomcat 6

+that already exists in the production environment.  Therefore, Tomcat

 defines a Java interface (<code>org.apache.catalina.Realm</code>) that

 can be implemented by "plug in" components to establish this connection.

-Five standard plug-ins are provided, supporting connections to various

+Six standard plug-ins are provided, supporting connections to various

 sources of authentication information:</p>

 <ul>

 <li><a href="#JDBCRealm">JDBCRealm</a> - Accesses authentication information

@@ -71,12 +146,12 @@
 </ul>

 

 <p>It is also possible to write your own <code>Realm</code> implementation,

-and integrate it with Tomcat 6.  To do so, you need to:

+and integrate it with Tomcat.  To do so, you need to:

 <ul>

   <li>Implement <code>org.apache.catalina.Realm</code>,</li>

   <li>Place your compiled realm in $CATALINA_HOME/lib,</li>

   <li>Declare your realm as described in the "Configuring a Realm" section below,</li>

-  <li>Declare your realm to the <a href="mbeans-descriptor-howto.html">MBeans Descriptor</a>.</li>

+  <li>Declare your realm to the <a href="mbeans-descriptors-howto.html">MBeans Descriptors</a>.</li>

 </ul>

 </p>

 

@@ -90,12 +165,12 @@
 general, you will be adding an XML element to your <code>conf/server.xml</code>

 configuration file, that looks something like this:</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

 &lt;Realm className="... class name for this implementation"

        ... other attributes for this implementation .../&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 

-<p>The <code>&lt;Realm&gt;</code> element can be nested inside any one of 

+<p>The <code>&lt;Realm&gt;</code> element can be nested inside any one of

 of the following <code>Container</code> elements.  The location of the

 Realm element has a direct impact on the "scope" of that Realm

 (i.e. which web applications will share the same authentication information):

@@ -160,10 +235,8 @@
     method will return the digested password.</li>

 <li>If you want to execute a command line utility to calculate the digested

     password, simply execute

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-java org.apache.catalina.realm.RealmBase \

-    -a {algorithm} {cleartext-password}

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>CATALINA_HOME/bin/digest.[bat|sh] -a {algorithm} {cleartext-password}

+</code></pre></div>

     and the digested version of this cleartext password will be returned to

     standard output.</li>

 </ul>

@@ -179,16 +252,9 @@
    not specified in web.xml, the default value of <code>Authentication

    required</code> is used.</p>

 

-<p>To use either of the above techniques, the

-<code>$CATALINA_HOME/lib/catalina.jar</code> and 

-<code>$CATALINA_HOME/bin/tomcat-juli.jar</code> files will need to be

-on your class path to make the <code>RealmBase</code> class available.

-</p>

-

 <p>Non-ASCII usernames and/or passwords are supported using

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>java org.apache.catalina.realm.RealmBase \

-    -a {algorithm} -e {encoding} {input}

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>CATALINA_HOME/bin/digest.[bat|sh] -a {algorithm} -e {encoding} {input}

+</code></pre></div>

 but care is required to ensure that the non-ASCII input is

 correctly passed to the digester.

 The digester returns <code>{input}:{digest}</code>. If the input appears

@@ -200,7 +266,7 @@
 

 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Example Application"><!--()--></a><a name="Example_Application"><strong>Example Application</strong></a></font></td></tr><tr><td><blockquote>

 

-<p>The example application shipped with Tomcat 6 includes an area that is

+<p>The example application shipped with Tomcat includes an area that is

 protected by a security constraint, utilizing form-based login.  To access it,

 point your browser at

 <a href="http://localhost:8080/examples/jsp/security/protected/">http://localhost:8080/examples/jsp/security/protected/</a>

@@ -243,7 +309,7 @@
 

 <h3>Introduction</h3>

 

-<p><strong>JDBCRealm</strong> is an implementation of the Tomcat 6

+<p><strong>JDBCRealm</strong> is an implementation of the Tomcat

 <code>Realm</code> interface that looks up users in a relational database

 accessed via a JDBC driver.  There is substantial configuration flexibility

 that lets you adapt to existing table and column names, as long as your

@@ -287,7 +353,7 @@
     Note that <strong>only</strong> JAR files are recognized!</li>

 <li>Set up a <code>&lt;Realm&gt;</code> element, as described below, in your

     <code>$CATALINA_BASE/conf/server.xml</code> file.</li>

-<li>Restart Tomcat 6 if it is already running.</li>

+<li>Restart Tomcat if it is already running.</li>

 </ol>

 

 <h3>Realm Element Attributes</h3>

@@ -302,7 +368,7 @@
 

 <p>An example SQL script to create the needed tables might look something

 like this (adapt the syntax as required for your particular database):</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

 create table users (

   user_name         varchar(15) not null primary key,

   user_pass         varchar(15) not null

@@ -313,26 +379,26 @@
   role_name         varchar(15) not null,

   primary key (user_name, role_name)

 );

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 

 <p>Example <code>Realm</code> elements are included (commented out) in the

 default <code>$CATALINA_BASE/conf/server.xml</code> file.  Here's an example

 for using a MySQL database called "authority", configured with the tables

 described above, and accessed with username "dbuser" and password "dbpass":</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

 &lt;Realm className="org.apache.catalina.realm.JDBCRealm"

       driverName="org.gjt.mm.mysql.Driver"

    connectionURL="jdbc:mysql://localhost/authority?user=dbuser&amp;amp;password=dbpass"

        userTable="users" userNameCol="user_name" userCredCol="user_pass"

    userRoleTable="user_roles" roleNameCol="role_name"/&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 

 <h3>Additional Notes</h3>

 

 <p>JDBCRealm operates according to the following rules:</p>

 <ul>

 <li>When a user attempts to access a protected resource for the first time,

-    Tomcat 6 will call the <code>authenticate()</code> method of this

+    Tomcat will call the <code>authenticate()</code> method of this

     <code>Realm</code>.  Thus, any changes you have made to the database

     directly (new users, changed passwords or roles, etc.) will be immediately

     reflected.</li>

@@ -356,7 +422,7 @@
 

 <h3>Introduction</h3>

 

-<p><strong>DataSourceRealm</strong> is an implementation of the Tomcat 6

+<p><strong>DataSourceRealm</strong> is an implementation of the Tomcat

 <code>Realm</code> interface that looks up users in a relational database

 accessed via a JNDI named JDBC DataSource.  There is substantial configuration

 flexibility that lets you adapt to existing table and column names, as long

@@ -372,7 +438,7 @@
     <li>Password to be recognized by Tomcat when the user logs in.

         This value may in cleartext or digested - see below for more

         information.</li>

-    </ul></li>    

+    </ul></li>

 <li>There must be a table, referenced below as the <em>user roles</em> table,

     that contains one row for every valid role that is assigned to a

     particular user.  It is legal for a user to have zero, one, or more than

@@ -387,20 +453,23 @@
 </ul>

 

 <h3>Quick Start</h3>

-                  

+

 <p>To set up Tomcat to use DataSourceRealm, you will need to follow these steps:</p>

-<ol>              

+<ol>

 <li>If you have not yet done so, create tables and columns in your database

     that conform to the requirements described above.</li>

 <li>Configure a database username and password for use by Tomcat, that has

     at least read only access to the tables described above.  (Tomcat will

     never attempt to write to these tables.)</li>

 <li>Configure a JNDI named JDBC DataSource for your database.  Refer to the

-    <a href="jndi-datasource-examples-howto.html">JNDI DataSource Example HOW-TO</a>

-    for information on how to configure a JNDI named JDBC DataSource.</li>

+    <a href="jndi-datasource-examples-howto.html">JNDI DataSource Example

+    HOW-TO</a> for information on how to configure a JNDI named JDBC DataSource.

+    Be sure to set the <code>Realm</code>'s <code>localDataSource</code>

+    attribute appropriately, depending on where the JNDI DataSource is

+    defined.</li>

 <li>Set up a <code>&lt;Realm&gt;</code> element, as described below, in your

     <code>$CATALINA_BASE/conf/server.xml</code> file.</li>

-<li>Restart Tomcat 6 if it is already running.</li>

+<li>Restart Tomcat if it is already running.</li>

 </ol>

 

 <h3>Realm Element Attributes</h3>

@@ -415,7 +484,7 @@
 

 <p>An example SQL script to create the needed tables might look something

 like this (adapt the syntax as required for your particular database):</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

 create table users (

   user_name         varchar(15) not null primary key,

   user_pass         varchar(15) not null

@@ -426,24 +495,24 @@
   role_name         varchar(15) not null,

   primary key (user_name, role_name)

 );

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 

 <p>Here is an example for using a MySQL database called "authority", configured

 with the tables described above, and accessed with the JNDI JDBC DataSource with

 name "java:/comp/env/jdbc/authority".</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

 &lt;Realm className="org.apache.catalina.realm.DataSourceRealm"

    dataSourceName="jdbc/authority"

    userTable="users" userNameCol="user_name" userCredCol="user_pass"

    userRoleTable="user_roles" roleNameCol="role_name"/&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 

 <h3>Additional Notes</h3>

 

 <p>DataSourceRealm operates according to the following rules:</p>

 <ul>

 <li>When a user attempts to access a protected resource for the first time,

-    Tomcat 6 will call the <code>authenticate()</code> method of this

+    Tomcat will call the <code>authenticate()</code> method of this

     <code>Realm</code>.  Thus, any changes you have made to the database

     directly (new users, changed passwords or roles, etc.) will be immediately

     reflected.</li>

@@ -467,7 +536,7 @@
 

 <h3>Introduction</h3>

 

-<p><strong>JNDIRealm</strong> is an implementation of the Tomcat 6

+<p><strong>JNDIRealm</strong> is an implementation of the Tomcat

 <code>Realm</code> interface that looks up users in an LDAP directory

 server accessed by a JNDI provider (typically, the standard LDAP

 provider that is available with the JNDI API classes). The realm

@@ -611,13 +680,15 @@
 <li><strong>roleSearch</strong> - the LDAP search filter for

     selecting role entries. It optionally includes pattern

     replacements "{0}" for the distinguished name and/or "{1}" for the

-    username of the authenticated user.</li>

+    username and/or "{2}" for an attribute from user's directory entry,

+    of the authenticated user. Use <strong>userRoleAttribute</strong> to

+    specify the name of the attribute that provides the value for "{2}".</li>

 

 <li><strong>roleName</strong> - the attribute in a role entry

      containing the name of that role.</li>

 

 <li><strong>roleNested</strong> - enable nested roles. Set to

-     <code>true</code> if you want to nest roles in roles. If configured

+     <code>true</code> if you want to nest roles in roles. If configured, then

      every newly found roleName and distinguished

      Name will be recursively tried for a new role search.

      The default value is <code>false</code>.</li>

@@ -650,7 +721,7 @@
     never attempt to modify this information.)</li>

 <li>Set up a <code>&lt;Realm&gt;</code> element, as described below, in your

     <code>$CATALINA_BASE/conf/server.xml</code> file.</li>

-<li>Restart Tomcat 6 if it is already running.</li>

+<li>Restart Tomcat if it is already running.</li>

 </ol>

 

 <h3>Realm Element Attributes</h3>

@@ -671,22 +742,23 @@
 <a href="http://www.openldap.org">http://www.openldap.org</a>.  Assume that

 your <code>slapd.conf</code> file contains the following settings

 (among others):</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

 database ldbm

 suffix dc="mycompany",dc="com"

 rootdn "cn=Manager,dc=mycompany,dc=com"

 rootpw secret

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 

 <p>We will assume for <code>connectionURL</code> that the directory

-server runs on the same machine as Tomcat.  See <a href="http://java.sun.com/products/jndi/docs.html">http://java.sun.com/products/jndi/docs.html</a>

+server runs on the same machine as Tomcat.  See <a href="http://docs.oracle.com/javase/7/docs/technotes/guides/jndi/index.html">

+http://docs.oracle.com/javase/7/docs/technotes/guides/jndi/index.html</a>

 for more information about configuring and using the JNDI LDAP

 provider.</p>

 

 <p>Next, assume that this directory server has been populated with elements

 as shown below (in LDIF format):</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

 

 # Define top-level entry

 dn: dc=mycompany,dc=com

@@ -735,7 +807,7 @@
 objectClass: groupOfUniqueNames

 cn: role1

 uniqueMember: uid=fbloggs,ou=people,dc=mycompany,dc=com

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 

 <p>An example <code>Realm</code> element for the OpenLDAP directory

 server configured as described above might look like this, assuming

@@ -743,7 +815,7 @@
 application and that an anonymous connection is sufficient to search

 the directory and retrieve role information:</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

 &lt;Realm   className="org.apache.catalina.realm.JNDIRealm"

      connectionURL="ldap://localhost:389"

        userPattern="uid={0},ou=people,dc=mycompany,dc=com"

@@ -751,7 +823,7 @@
           roleName="cn"

         roleSearch="(uniqueMember={0})"

 /&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 

 <p>With this configuration, the realm will determine the user's

 distinguished name by substituting the username into the

@@ -769,7 +841,7 @@
 use an attribute of the user's entry to hold roles. Now the entry for

 Janet Jones might read as follows:</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

 dn: uid=jjones,ou=people,dc=mycompany,dc=com

 objectClass: inetOrgPerson

 uid: jjones

@@ -779,11 +851,11 @@
 memberOf: role2

 memberOf: role3

 userPassword: janet

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 

 <p> This realm configuration would satisfy the new requirements:</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

 &lt;Realm   className="org.apache.catalina.realm.JNDIRealm"

      connectionURL="ldap://localhost:389"

           userBase="ou=people,dc=mycompany,dc=com"

@@ -793,7 +865,7 @@
           roleName="cn"

         roleSearch="(uniqueMember={0})"

 /&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 

 <p>Now when Janet Jones logs in as "j.jones@mycompany.com", the realm

 searches the directory for a unique entry with that value as its mail

@@ -808,7 +880,7 @@
 the password from the directory and making a local comparison in the

 realm, you might use a realm configuration like this:</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

 &lt;Realm   className="org.apache.catalina.realm.JNDIRealm"

     connectionName="cn=Manager,dc=mycompany,dc=com"

 connectionPassword="secret"

@@ -819,7 +891,7 @@
           roleName="cn"

         roleSearch="(uniqueMember={0})"

 /&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 

 <p>However, as discussed above, the default bind mode for

 authentication is usually to be preferred.</p>

@@ -829,7 +901,7 @@
 <p>JNDIRealm operates according to the following rules:</p>

 <ul>

 <li>When a user attempts to access a protected resource for the first time,

-    Tomcat 6 will call the <code>authenticate()</code> method of this

+    Tomcat will call the <code>authenticate()</code> method of this

     <code>Realm</code>.  Thus, any changes you have made to the directory

     (new users, changed passwords or roles, etc.) will be immediately

     reflected.</li>

@@ -853,7 +925,7 @@
 

 <h3>Introduction</h3>

 

-<p><strong>UserDatabaseRealm</strong> is an implementation of the Tomcat 6

+<p><strong>UserDatabaseRealm</strong> is an implementation of the Tomcat

 <code>Realm</code> interface that uses a JNDI resource to store user

 information. By default, the JNDI resource is backed by an XML file. It is not

 designed for large-scale production use. At startup time, the UserDatabaseRealm

@@ -878,17 +950,17 @@
 

 <h3>Example</h3>

 

-<p>The default installation of Tomcat 6 is configured with a UserDatabaseRealm

+<p>The default installation of Tomcat is configured with a UserDatabaseRealm

 nested inside the <code>&lt;Engine&gt;</code> element, so that it applies

 to all virtual hosts and web applications.  The default contents of the

 <code>conf/tomcat-users.xml</code> file is:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

 &lt;tomcat-users&gt;

   &lt;user name="tomcat" password="tomcat" roles="tomcat" /&gt;

   &lt;user name="role1"  password="tomcat" roles="role1"  /&gt;

   &lt;user name="both"   password="tomcat" roles="tomcat,role1" /&gt;

 &lt;/tomcat-users&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 

 <h3>Additional Notes</h3>

 

@@ -900,7 +972,7 @@
     restarted. Changes may be made via the UserDatabase resource. Tomcat

     provides MBeans that may be accessed via JMX for this purpose.</li>

 <li>When a user attempts to access a protected resource for the first time,

-    Tomcat 6 will call the <code>authenticate()</code> method of this

+    Tomcat will call the <code>authenticate()</code> method of this

     <code>Realm</code>.</li>

 <li>Once a user has been authenticated, the user (and his or her associated

     roles) are cached within Tomcat for the duration of the user's login.

@@ -919,7 +991,7 @@
 <h3>Introduction</h3>

 

 <p><strong>MemoryRealm</strong> is a simple demonstration implementation of the

-Tomcat 6 <code>Realm</code> interface.  It is not designed for production use.

+Tomcat <code>Realm</code> interface.  It is not designed for production use.

 At startup time, MemoryRealm loads information about all users, and their

 corresponding roles, from an XML document (by default, this document is loaded

 from <code>$CATALINA_BASE/conf/tomcat-users.xml</code>).  Changes to the data

@@ -958,7 +1030,7 @@
     this file will <strong>not</strong> be recognized until Tomcat is

     restarted.</li>

 <li>When a user attempts to access a protected resource for the first time,

-    Tomcat 6 will call the <code>authenticate()</code> method of this

+    Tomcat will call the <code>authenticate()</code> method of this

     <code>Realm</code>.</li>

 <li>Once a user has been authenticated, the user (and his or her associated

     roles) are cached within Tomcat for the duration of the user's login.

@@ -980,9 +1052,9 @@
 <h3>Introduction</h3>

 

         <p><strong>JAASRealm</strong> is an implementation of the Tomcat

-6 <code>Realm</code> interface that authenticates users through the Java

+<code>Realm</code> interface that authenticates users through the Java

 Authentication &amp; Authorization Service (JAAS) framework which is now

-provided as part of the standard J2SE API.</p>

+provided as part of the standard Java SE API.</p>

         <p>Using JAASRealm gives the developer the ability to combine

 practically any conceivable security realm with Tomcat's CMA. </p>

         <p>JAASRealm is prototype for Tomcat of the JAAS-based

@@ -1002,36 +1074,36 @@
  you will need to follow these steps:</p>

         <ol>

           <li>Write your own LoginModule, User and Role classes based

-on JAAS (see 

-<a href="http://docs.oracle.com/javase/1.4.2/docs/guide/security/jaas/tutorials/GeneralAcnOnly.html">the

-JAAS Authentication Tutorial</a> and 

-<a href="http://docs.oracle.com/javase/1.4.2/docs/guide/security/jaas/JAASLMDevGuide.html">the JAAS Login Module 

-Developer's Guide</a>) to be managed by the JAAS Login

+on JAAS (see

+<a href="http://docs.oracle.com/javase/7/docs/technotes/guides/security/jaas/tutorials/GeneralAcnOnly.html">

+the JAAS Authentication Tutorial</a> and

+<a href="http://docs.oracle.com/javase/7/docs/technotes/guides/security/jaas/JAASLMDevGuide.html">

+the JAAS Login Module Developer's Guide</a>) to be managed by the JAAS Login

 Context (<code>javax.security.auth.login.LoginContext</code>)

 When developing your LoginModule, note that JAASRealm's built-in <code>CallbackHandler</code>

 only recognizes the <code>NameCallback</code> and <code>PasswordCallback</code> at present.

           </li>

           <li>Although not specified in JAAS, you should create

-seperate classes to distinguish between users and roles, extending <code>javax.security.Principal</code>,

+separate classes to distinguish between users and roles, extending <code>javax.security.Principal</code>,

 so that Tomcat can tell which Principals returned from your login

 module are users and which are roles (see <code>org.apache.catalina.realm.JAASRealm</code>).

 Regardless, the first Principal returned is <em>always</em> treated as the user Principal.

           </li>

           <li>Place the compiled classes on Tomcat's classpath

           </li>

-          <li>Set up a login.config file for Java (see <a href="http://docs.oracle.com/javase/1.4.2/docs/guide/security/jaas/tutorials/LoginConfigFile.html">JAAS

-LoginConfig file</a>) and tell Tomcat where to find it by specifying

+          <li>Set up a login.config file for Java (see <a href="http://docs.oracle.com/javase/7/docs/technotes/guides/security/jaas/tutorials/LoginConfigFile.html">

+JAAS LoginConfig file</a>) and tell Tomcat where to find it by specifying

 its location to the JVM, for instance by setting the environment

 variable: <code>JAVA_OPTS=$JAVA_OPTS -Djava.security.auth.login.config==$CATALINA_BASE/conf/jaas.config</code></li>

 

           <li>Configure your security-constraints in your web.xml for

 the resources you want to protect</li>

           <li>Configure the JAASRealm module in your server.xml </li>

-          <li>Restart Tomcat 6 if it is already running.</li>

+          <li>Restart Tomcat if it is already running.</li>

         </ol>

         <h3>Realm Element Attributes</h3>

         <p>To configure JAASRealm as for step 6 above, you create

-a <code>&lt;Realm&gt;</code> element and nest it in your 

+a <code>&lt;Realm&gt;</code> element and nest it in your

 <code>$CATALINA_BASE/conf/server.xml</code>

 file within your <code>&lt;Engine&gt;</code> node. The attributes for the

 JAASRealm are defined in the <a href="config/realm.html">Realm</a>

@@ -1041,33 +1113,33 @@
 

 <p>Here is an example of how your server.xml snippet should look.</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

 &lt;Realm className="org.apache.catalina.realm.JAASRealm"

                 appName="MyFooRealm"

     userClassNames="org.foobar.realm.FooUser"

-    roleClassNames="org.foobar.realm.FooRole"/&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+     roleClassNames="org.foobar.realm.FooRole"/&gt;

+</code></pre></div>

 

-<p>It is the responsibility of your login module to create and save User and 

-Role objects representing Principals for the user 

-(<code>javax.security.auth.Subject</code>). If your login module doesn't 

-create a user object but also doesn't throw a login exception, then the 

-Tomcat CMA will break and you will be left at the 

-http://localhost:8080/myapp/j_security_check URI or at some other 

+<p>It is the responsibility of your login module to create and save User and

+Role objects representing Principals for the user

+(<code>javax.security.auth.Subject</code>). If your login module doesn't

+create a user object but also doesn't throw a login exception, then the

+Tomcat CMA will break and you will be left at the

+http://localhost:8080/myapp/j_security_check URI or at some other

 unspecified location.</p>

 

         <p>The flexibility of the JAAS approach is two-fold: </p>

         <ul>

           <li>you can carry out whatever processing you require behind

 the scenes in your own login module.</li>

-          <li>you can plug in a completely different LoginModule by changing the configuration 

+          <li>you can plug in a completely different LoginModule by changing the configuration

 and restarting the server, without any code changes to your application.</li>

         </ul>

 

         <h3>Additional Notes</h3>

         <ul>

           <li>When a user attempts to access a protected resource for

-              the first time, Tomcat 6 will call the <code>authenticate()</code>

+              the first time, Tomcat will call the <code>authenticate()</code>

               method of this <code>Realm</code>.  Thus, any changes you have made in

               the security mechanism directly (new users, changed passwords or

               roles, etc.) will be immediately reflected.</li>

@@ -1081,7 +1153,7 @@
           <li>As with other <code>Realm</code> implementations, digested passwords

               are supported if the <code>&lt;Realm&gt;</code> element in <code>server.xml</code>

               contains a <code>digest</code> attribute; JAASRealm's <code>CallbackHandler</code>

-              will digest the password prior to passing it back to the <code>LoginModule</code></li>  

+              will digest the password prior to passing it back to the <code>LoginModule</code></li>

         </ul>

 

 </blockquote></td></tr></table>

@@ -1091,7 +1163,7 @@
 

     <h3>Introduction</h3>

 

-    <p><strong>CombinedRealm</strong> is an implementation of the Tomcat 6

+    <p><strong>CombinedRealm</strong> is an implementation of the Tomcat

     <code>Realm</code> interface that authenticates users through one or more

     sub-Realms.</p>

 

@@ -1112,13 +1184,13 @@
     file within your <code>&lt;Engine&gt;</code> or <code>&lt;Host&gt;</code>.

     You can also nest inside a <code>&lt;Context&gt;</code> node in a

     <code>context.xml</code> file.</p>

-    

+

 <h3>Example</h3>

 

 <p>Here is an example of how your server.xml snippet should look to use a

 UserDatabase Realm and a DataSource Realm.</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

 &lt;Realm className="org.apache.catalina.realm.CombinedRealm" &gt;

    &lt;Realm className="org.apache.catalina.realm.UserDatabaseRealm"

              resourceName="UserDatabase"/&gt;

@@ -1127,7 +1199,7 @@
              userTable="users" userNameCol="user_name" userCredCol="user_pass"

              userRoleTable="user_roles" roleNameCol="role_name"/&gt;

 &lt;/Realm&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 

 </blockquote></td></tr></table>

 

@@ -1135,14 +1207,14 @@
 

     <h3>Introduction</h3>

 

-    <p><strong>LockOutRealm</strong> is an implementation of the Tomcat 6

+    <p><strong>LockOutRealm</strong> is an implementation of the Tomcat

     <code>Realm</code> interface that extends the CombinedRealm to provide lock

     out functionality to provide a user lock out mechanism if there are too many

     failed authentication attempts in a given period of time.</p>

-    

+

     <p>To ensure correct operation, there is a reasonable degree of

     synchronisation in this Realm.</p>

-    

+

     <p>This Realm does not require modification to the underlying Realms or the

     associated user storage mechanisms. It achieves this by recording all failed

     logins, including those for users that do not exist. To prevent a DOS by

@@ -1164,21 +1236,46 @@
     <code>context.xml</code> file. The attributes for the

     LockOutRealm are defined in the <a href="config/realm.html">Realm</a>

     configuration documentation.</p>

-    

+

 <h3>Example</h3>

 

 <p>Here is an example of how your server.xml snippet should look to add lock out

 functionality to a UserDatabase Realm.</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

 &lt;Realm className="org.apache.catalina.realm.LockOutRealm" &gt;

    &lt;Realm className="org.apache.catalina.realm.UserDatabaseRealm"

              resourceName="UserDatabase"/&gt;

 &lt;/Realm&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 

 </blockquote></td></tr></table>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/realm-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/security-howto.html b/tomcat-uid/webapps/docs/security-howto.html
new file mode 100644
index 0000000..34d2c19
--- /dev/null
+++ b/tomcat-uid/webapps/docs/security-howto.html
@@ -0,0 +1,600 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - Security Considerations</title><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Security Considerations</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Non-Tomcat_settings">Non-Tomcat settings</a><ol><li><a href="#JMX">JMX</a></li></ol></li><li><a href="#Default_web_applications">Default web applications</a><ol><li><a href="#Default_web_applications/General">General</a></li><li><a href="#ROOT">ROOT</a></li><li><a href="#Documentation">Documentation</a></li><li><a href="#Examples">Examples</a></li><li><a href="#Default_web_applications/Manager">Manager</a></li><li><a href="#Host_Manager">Host Manager</a></li><li><a href="#Securing_Management_Applications">Securing Management Applications</a></li></ol></li><li><a href="#Security_manager">Security manager</a></li><li><a href="#server.xml">server.xml</a><ol><li><a href="#server.xml/General">General</a></li><li><a href="#Server">Server</a></li><li><a href="#Listeners">Listeners</a></li><li><a href="#Connectors">Connectors</a></li><li><a href="#Host">Host</a></li><li><a href="#Context">Context</a></li><li><a href="#Valves">Valves</a></li><li><a href="#Realms">Realms</a></li><li><a href="#server.xml/Manager">Manager</a></li><li><a href="#Cluster">Cluster</a></li></ol></li><li><a href="#System_Properties">System Properties</a></li><li><a href="#web.xml">web.xml</a></li><li><a href="#General">General</a></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+    <p>Tomcat is configured to be reasonably secure for most use cases by

+    default. Some environments may require more, or less, secure configurations.

+    This page is to provide a single point of reference for configuration

+    options that may impact security and to offer some commentary on the

+    expected impact of changing those options. The intention is to provide a

+    list of configuration options that should be considered when assessing the

+    security of a Tomcat installation.</p>

+

+    <p><strong>Note</strong>: Reading this page is not a substitute for reading

+    and understanding the detailed configuration documentation. Fuller

+    descriptions of these attributes may be found in the relevant documentation

+    pages.</p>

+  </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Non-Tomcat settings"><!--()--></a><a name="Non-Tomcat_settings"><strong>Non-Tomcat settings</strong></a></font></td></tr><tr><td><blockquote>

+    <p>Tomcat configuration should not be the only line of defense. The other

+    components in the system (operating system, network, database, etc.) should

+    also be secured.</p>

+    <p>Tomcat should not be run under the root user. Create a dedicated user for

+    the Tomcat process and provide that user with the minimum necessary

+    permissions for the operating system. For example, it should not be possible

+    to log on remotely using the Tomcat user.</p>

+    <p>File permissions should also be suitably restricted. Taking the Tomcat

+    instances at the ASF as an example (where auto-deployment is disabled and

+    web applications are deployed as exploded directories), the standard

+    configuration is to have all Tomcat files owned by root with group Tomcat

+    and whilst owner has read/write privileges, group only has read and world

+    has no permissions. The exceptions are the logs, temp and work directory

+    that are owned by the Tomcat user rather than root. This means that even if

+    an attacker compromises the Tomcat process, they can't change the

+    Tomcat configuration, deploy new web applications or modify existing web

+    applications. The Tomcat process runs with a umask of 007 to maintain these

+    permissions.</p>

+    <p>At the network level, consider using a firewall to limit both incoming

+    and outgoing connections to only those connections you  expect to be

+    present.</p>

+

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JMX"><strong>JMX</strong></a></font></td></tr><tr><td><blockquote>

+      <p>The security of the JMX connection is dependent on the implementation

+      provided by the JRE and therefore falls outside the control of Tomact.</p>

+

+      <p>Typically, access control is very limited (either read-only to

+      everything or read-write to everything). Tomcat exposes a large amount

+      of internal information and control via JMX to aid debugging, monitoring

+      and management. Give the limited access control available, JMX access

+      should be treated as equivalent to local root/admin access and restricted

+      accordingly.</p>

+

+      <p>The JMX access control provided by most (all?) JRE vendors does not

+      log failed authentication attempts, nor does it provide an account

+      lock-out feature after repeated failed authentications. This makes a

+      brute force attack easy to mount and difficult to detect.</p>

+

+      <p>Given all of the above, care should be taken to ensure that, if used,

+      the JMX interface is appropriately secured. Options you may wish to

+      consider to secure the JMX interface include:</p>

+

+      <ul>

+        <li>configuring a strong password for all JMX users;</li>

+        <li>binding the JMX listener only to an internal network;</li>

+        <li>limiting network access to the JMX port to trusted clients; and</li>

+        <li>providing an application specific health page for use by external

+            monitoring systems.</li>

+      </ul>

+    </blockquote></td></tr></table>

+

+  </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Default web applications"><!--()--></a><a name="Default_web_applications"><strong>Default web applications</strong></a></font></td></tr><tr><td><blockquote>

+

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Default web applications/General"><!--()--></a><a name="Default_web_applications/General"><strong>General</strong></a></font></td></tr><tr><td><blockquote>

+      <p>Tomcat ships with a number of web applications that are enabled by

+      default. Vulnerabilities have been discovered in these applications in the

+      past. Applications that are not required should be removed so the system

+      will not be at risk if another vulnerability is discovered.</p>

+    </blockquote></td></tr></table>

+

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="ROOT"><strong>ROOT</strong></a></font></td></tr><tr><td><blockquote>

+      <p>The ROOT web application presents a very low security risk but it does

+      include the version of Tomcat that is being used. The ROOT web application

+      should normally be removed from a publicly accessible Tomcat instance, not

+      for security reasons, but so that a more appropriate default page is shown

+      to users.</p>

+    </blockquote></td></tr></table>

+

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Documentation"><strong>Documentation</strong></a></font></td></tr><tr><td><blockquote>

+      <p>The documentation web application presents a very low security risk but

+      it does identify the version of Tomcat that is being used. It should

+      normally be removed from a publicly accessible Tomcat instance.</p>

+    </blockquote></td></tr></table>

+

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Examples"><strong>Examples</strong></a></font></td></tr><tr><td><blockquote>

+      <p>The examples web application should always be removed from any security

+      sensitive installation. While the examples web application does not

+      contain any known vulnerabilities, it is known to contain features

+      (particularly the cookie examples that display the contents of all

+      received and allow new cookies to be set) that may be used by an attacker

+      in conjunction with a vulnerability in another application deployed on the

+      Tomcat instance to obtain additional information that would otherwise be

+      unavailable.</p>

+    </blockquote></td></tr></table>

+

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Default web applications/Manager"><!--()--></a><a name="Default_web_applications/Manager"><strong>Manager</strong></a></font></td></tr><tr><td><blockquote>

+      <p>The Manager application allows the remote deployment of web

+      applications and is frequently targeted by attackers due to the widespread

+      use of weak passwords and publicly accessible Tomcat instances with the

+      Manager application enabled. The Manager application is not accessible by

+      default as no users are configured with the necessary access. If the

+      Manager application is enabled then guidance in the section

+      <strong>Securing Management Applications</strong> section should be

+      followed.</p>

+    </blockquote></td></tr></table>

+

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Host Manager"><!--()--></a><a name="Host_Manager"><strong>Host Manager</strong></a></font></td></tr><tr><td><blockquote>

+      <p>The Host Manager application allows the creation and management of

+      virtual hosts - including the enabling of the Manager application for a

+      virtual host. The Host Manager application is not accessible by default

+      as no users are configured with the necessary access. If the Host Manager

+      application is enabled then guidance in the section <strong>Securing

+      Management Applications</strong> section should be followed.</p>

+    </blockquote></td></tr></table>

+

+   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Securing Management Applications"><!--()--></a><a name="Securing_Management_Applications"><strong>Securing Management Applications</strong></a></font></td></tr><tr><td><blockquote>

+     <p>When deploying a web application that provides management functions for

+     the Tomcat instance, the following guidelines should be followed:</p>

+     <ul>

+       <li>Ensure that any users permitted to access the management application

+           have strong passwords.</li>

+       <li>Do not remove the use of the <a href="config/realm.html#LockOut_Realm_-_org.apache.catalina.realm.LockOutRealm">LockOutRealm</a>

+           which prevents brute force attacks against user passwords.</li>

+       <li>Uncomment the <a href="config/valve.html#Remote_Address_Filter">RemoteAddrValve</a>

+           in <code>/META-INF/context.xml</code> which limits access to

+           localhost. If remote access is required, limit it to specific IP

+           addresses using this valve.</li>

+     </ul>

+   </blockquote></td></tr></table>

+  </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Security manager"><!--()--></a><a name="Security_manager"><strong>Security manager</strong></a></font></td></tr><tr><td><blockquote>

+    <p>Enabling the security manager causes web applications to be run in a

+    sandbox, significantly limiting a web application's ability to perform

+    malicious actions such as calling System.exit(), establishing network

+    connections or accessing the file system outside of the web application's

+    root and temporary directories. However, it should be noted that there are

+    some malicious actions, such as triggering high CPU consumption via an

+    infinite loop, that the security manager cannot prevent.</p>

+

+    <p>Enabling the security manager is usually done to limit the potential

+    impact, should an attacker find a way to compromise a trusted web

+    application . A security manager may also be used to reduce the risks of

+    running untrusted web applications (e.g. in hosting environments) but it

+    should be noted that the security manager only reduces the risks of

+    running untrusted web applications, it does not eliminate them. If running

+    multiple untrusted web applications, it is recommended that each web

+    application is deployed to a separate Tomcat instance (and ideally separate

+    hosts) to reduce the ability of a malicious web application impacting the

+    availability of other applications.</p>

+

+    <p>Tomcat is tested with the security manager enabled; but the majority of

+    Tomcat users do not run with a security manager, so Tomcat is not as well

+    user-tested in this configuration. There have been, and continue to be,

+    bugs reported that are triggered by running under a security manager.</p>

+

+    <p>The restrictions imposed by a security manager are likely to break most

+    applications if the security manager is enabled. The security manager should

+    not be used without extensive testing. Ideally, the use of a security

+    manager should be introduced at the start of the development cycle as it can

+    be time-consuming to track down and fix issues caused by enabling a security

+    manager for a mature application.</p>

+

+    <p>Enabling the security manager changes the defaults for the following

+    settings:</p>

+    <ul>

+      <li>The default value for the <strong>deployXML</strong> attribute of the

+      <strong>Host</strong> element is changed to <code>false</code>.</li>

+    </ul>

+  </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="server.xml"><strong>server.xml</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="server.xml/General"><strong>General</strong></a></font></td></tr><tr><td><blockquote>

+      <p>The default server.xml contains a large number of comments, including

+      some example component definitions that are commented out. Removing these

+      comments makes it considerably easier to read and comprehend

+      server.xml.</p>

+      <p>If a component type is not listed, then there are no settings for that

+      type that directly impact security.</p>

+    </blockquote></td></tr></table>

+

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Server"><strong>Server</strong></a></font></td></tr><tr><td><blockquote>

+      <p>Setting the <strong>port</strong> attribute to <code>-1</code> disables

+      the shutdown port.</p>

+      <p>If the shutdown port is not disabled, a strong password should be

+      configured for <strong>shutdown</strong>.</p>

+    </blockquote></td></tr></table>

+

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Listeners"><strong>Listeners</strong></a></font></td></tr><tr><td><blockquote>

+      <p>The APR Lifecycle Listener is not stable if compiled on Solaris using

+      gcc. If using the APR/native connector on Solaris, compile it with the

+      Sun Studio compiler.</p>

+

+      <p>The Security Listener should be enabled and configured as appropriate.

+      </p>

+    </blockquote></td></tr></table>

+

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Connectors"><strong>Connectors</strong></a></font></td></tr><tr><td><blockquote>

+      <p>By default, an HTTP and an AJP connector are configured. Connectors

+      that will not be used should be removed from server.xml.</p>

+

+      <p>The <strong>address</strong> attribute may be used to control which IP

+      address the connector listens on for connections. By default, the

+      connector listens on all configured IP addresses.</p>

+

+      <p>The <strong>allowTrace</strong> attribute may be used to enable TRACE

+      requests which can be useful for debugging. Due to the way some browsers

+      handle the response from a TRACE request (which exposes the browser to an

+      XSS attack), support for TRACE requests is disabled by default.</p>

+

+      <p>The <strong>maxPostSize</strong> attribute controls the maximum size

+      of a POST request that will be parsed for parameters. The parameters are

+      cached for the duration of the request so this is limited to 2MB by

+      default to reduce exposure to a DOS attack.</p>

+

+      <p>The <strong>maxSavePostSize</strong> attribute controls the saving of

+      POST requests during FORM and CLIENT-CERT authentication. The parameters

+      are cached for the duration of the authentication (which may be many

+      minutes) so this is limited to 4KB by default to reduce exposure to a DOS

+      attack.</p>

+

+      <p>The <strong>maxParameterCount</strong> attribute controls the

+      maximum number of parameter and value pairs (GET plus POST) that can

+      be parsed and stored in the request. Excessive parameters are ignored.

+      If you want to reject such requests, configure a

+      <a href="config/filter.html">FailedRequestFilter</a>.</p>

+

+      <p>The <strong>xpoweredBy</strong> attribute controls whether or not the

+      X-Powered-By HTTP header is sent with each request. If sent, the value of

+      the header contains the Servlet and JSP specification versions, the full

+      Tomcat version (e.g. Apache Tomcat/7.0.0), the name of the JVM vendor and

+      the version of the JVM. This header is disabled by default. This header

+      can provide useful information to both legitimate clients and attackers.

+      </p>

+

+      <p>The <strong>server</strong> attribute controls the value of the Server

+      HTTP header. The default value of this header for Tomcat 4.1.x, 5.0.x,

+      5.5.x, 6.0.x and 7.0.x is Apache-Coyote/1.1. This header can provide

+      limited information to both legitimate clients and attackers.</p>

+

+      <p>The <strong>SSLEnabled</strong>, <strong>scheme</strong> and

+      <strong>secure</strong> attributes may all be independently set. These are

+      normally used when Tomcat is located behind a reverse proxy and the proxy

+      is connecting to Tomcat via HTTP or HTTPS. They allow Tomcat to see the

+      SSL attributes of the connections between the client and the proxy rather

+      than the proxy and Tomcat. For example, the client may connect to the

+      proxy over HTTPS but the proxy connects to Tomcat using HTTP. If it is

+      necessary for Tomcat to be able to distinguish between secure and

+      non-secure connections received by a proxy, the proxy must use separate

+      connectors to pass secure and non-secure requests to Tomcat. If the

+      proxy uses AJP then the SSL attributes of the client connection are

+      passed via the AJP protocol and separate connectors are not needed.</p>

+

+      <p>The <strong>sslEnabledProtocols</strong> attribute determines which

+      versions of the SSL/TLS protocol are used.  Since the POODLE attack in

+      2014, all SSL protocols are considered unsafe and a secure setting for

+      this attribute in a standalone Tomcat setup might be

+      <code>sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2"</code></p>

+

+      <p>The <strong>ciphers</strong> attribute controls the ciphers used for

+      SSL connections. By default, the default ciphers for the JVM will be used.

+      This usually means that the weak export grade ciphers will be included in

+      the list of available ciphers. Secure environments will normally want to

+      configure a more limited set of ciphers.</p>

+

+      <p>The <strong>tomcatAuthentication</strong> and

+      <strong>tomcatAuthorization</strong> attributes are used with the

+      AJP connectors to determine if Tomcat should handle all authentication and

+      authorisation or if authentication should be delegated to the reverse

+      proxy (the authenticated user name is passed to Tomcat as part of the AJP

+      protocol) with the option for Tomcat to still perform authorization.</p>

+

+      <p>The <strong>allowUnsafeLegacyRenegotiation</strong> attribute provides

+      a workaround for

+      <a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3555">

+      CVE-2009-3555</a>, a TLS man in the middle attack. This workaround applies

+      to the BIO connector. It is only necessary if the underlying SSL

+      implementation is vulnerable to CVE-2009-3555. For more information on the

+      current state of this vulnerability and the work-arounds available see the

+      <a href="http://tomcat.apache.org/security-7.html">Tomcat 7 security

+      page</a>.</p>

+

+      <p>The <strong>requiredSecret</strong> attribute in AJP connectors

+      configures shared secret between Tomcat and reverse proxy in front of

+      Tomcat. It is used to prevent unauthorized connections over AJP protocol.</p>

+    </blockquote></td></tr></table>

+

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Host"><strong>Host</strong></a></font></td></tr><tr><td><blockquote>

+      <p>The host element controls deployment. Automatic deployment allows for

+      simpler management but also makes it easier for an attacker to deploy a

+      malicious application. Automatic deployment is controlled by the

+      <strong>autoDeploy</strong> and <strong>deployOnStartup</strong>

+      attributes. If both are <code>false</code>, only Contexts defined in

+      server.xml will be deployed and any changes will require a Tomcat restart.

+      </p>

+

+      <p>In a hosted environment where web applications may not be trusted, set

+      the <strong>deployXML</strong> attribute to <code>false</code> to ignore

+      any context.xml packaged with the web application that may try to assign

+      increased privileges to the web application. Note that if the security

+      manager is enabled that the <strong>deployXML</strong> attribute will

+      default to <code>false</code>.</p>

+    </blockquote></td></tr></table>

+

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Context"><strong>Context</strong></a></font></td></tr><tr><td><blockquote>

+      <p>This applies to <a href="config/context.html">Context</a>

+      elements in all places where they can be defined:

+      <code>server.xml</code> file,

+      default <code>context.xml</code> file,

+      per-host <code>context.xml.default</code> file,

+      web application context file in per-host configuration directory

+      or inside the web application.</p>

+

+      <p>The <strong>crossContext</strong> attribute controls if a context is

+      allowed to access the resources of another context. It is

+      <code>false</code> by default and should only be changed for trusted web

+      applications.</p>

+

+      <p>The <strong>privileged</strong> attribute controls if a context is

+      allowed to use container provided servlets like the Manager servlet. It is

+      <code>false</code> by default and should only be changed for trusted web

+      applications.</p>

+

+      <p>The <strong>allowLinking</strong> attribute controls if a context is

+      allowed to use linked files. If enabled and the context is undeployed, the

+      links will be followed when deleting the context resources. To avoid this

+      behaviour, use the <strong>aliases</strong> attribute. Changing this

+      setting from the default of <code>false</code> on case insensitive

+      operating systems (this includes Windows) will disable a number of

+      security measures and allow, among other things, direct access to the

+      WEB-INF directory.</p>

+

+      <p>The <strong>sessionCookiePathUsesTrailingSlash</strong> can be used to

+      work around a bug in a number of browsers (Internet Explorer, Safari and

+      Edge) to prevent session cookies being exposed across applications when

+      applications share a common path prefix. However, enabling this option

+      can create problems for applications with Servlets mapped to

+      <code>/*</code>. It should also be noted the RFC6265 section 8.5 makes it

+      clear that different paths should not be considered sufficient to isolate

+      cookies from other applications.</p>

+    </blockquote></td></tr></table>

+

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Valves"><strong>Valves</strong></a></font></td></tr><tr><td><blockquote>

+      <p>It is strongly recommended that an AccessLogValve is configured. The

+      default Tomcat configuration includes an AccessLogValve. These are

+      normally configured per host but may also be configured per engine or per

+      context as required.</p>

+

+      <p>Any administrative application should be protected by a

+      RemoteAddrValve. (Note that this Valve is also available as a Filter.)

+      The <strong>allow</strong> attribute should be used to limit access to a

+      set of known trusted hosts.</p>

+

+      <p>The default ErrorReportValve includes the Tomcat version number in the

+      response sent to clients. To avoid this, custom error handling can be

+      configured within each web application. Alternatively, you can explicitly

+      configure an <a href="config/valve.html">ErrorReportValve</a> and set its

+      <strong>showServerInfo</strong> attribute to <code>false</code>.

+      Alternatively, the version number can be changed by creating the file

+      CATALINA_BASE/lib/org/apache/catalina/util/ServerInfo.properties with

+      content as follows:</p>

+      <div class="codeBox"><pre><code>

+server.info=Apache Tomcat/7.0.x

+      </code></pre></div>

+      <p>Modify the values as required. Note that this will also change the version

+      number reported in some of the management tools and may make it harder to

+      determine the real version installed. The CATALINA_HOME/bin/version.bat|sh

+      script will still report the version number.</p>

+

+      <p>The default ErrorReportValve can display stack traces and/or JSP

+      source code to clients when an error occurs. To avoid this, custom error

+      handling can be configured within each web application. Alternatively, you

+      can explicitly configure an <a href="config/valve.html">ErrorReportValve</a>

+      and set its <strong>showReport</strong> attribute to <code>false</code>.</p>

+    </blockquote></td></tr></table>

+

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Realms"><strong>Realms</strong></a></font></td></tr><tr><td><blockquote>

+      <p>The MemoryRealm is not intended for production use as any changes to

+      tomcat-users.xml require a restart of Tomcat to take effect.</p>

+

+      <p>The JDBCRealm is not recommended for production use as it is single

+      threaded for all authentication and authorization options. Use the

+      DataSourceRealm instead.</p>

+

+      <p>The UserDatabaseRealm is not intended for large-scale installations. It

+      is intended for small-scale, relatively static environments.</p>

+

+      <p>The JAASRealm is not widely used and therefore the code is not as

+      mature as the other realms. Additional testing is recommended before using

+      this realm.</p>

+

+      <p>By default, the realms do not implement any form of account lock-out.

+      This means that brute force attacks can be successful. To prevent a brute

+      force attack, the chosen realm should be wrapped in a LockOutRealm.</p>

+    </blockquote></td></tr></table>

+

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="server.xml/Manager"><strong>Manager</strong></a></font></td></tr><tr><td><blockquote>

+      <p>The manager component is used to generate session IDs.</p>

+

+      <p>The class used to generate random session IDs may be changed with

+      the <strong>randomClass</strong> attribute.</p>

+

+      <p>The length of the session ID may be changed with the

+      <strong>sessionIdLength</strong> attribute.</p>

+    </blockquote></td></tr></table>

+

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+      <p>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.</p>

+    </blockquote></td></tr></table>

+  </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="System Properties"><!--()--></a><a name="System_Properties"><strong>System Properties</strong></a></font></td></tr><tr><td><blockquote>

+    <p>Setting <strong>org.apache.catalina.connector.RECYCLE_FACADES</strong>

+    system property to <code>true</code> will cause a new facade object to be

+    created for each request. This reduces the chances of a bug in an

+    application exposing data from one request to another.</p>

+

+    <p>The <strong>

+    org.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH</strong> and

+    <strong>org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH</strong>

+    system properties allow non-standard parsing of the request URI. Using

+    these options when behind a reverse proxy may enable an attacker to bypass

+    any security constraints enforced by the proxy.</p>

+

+    <p>The <strong>

+    org.apache.catalina.connector.Response.ENFORCE_ENCODING_IN_GET_WRITER

+    </strong> system property has security implications if disabled. Many user

+    agents, in breach of RFC2616, try to guess the character encoding of text

+    media types when the specification-mandated default of ISO-8859-1 should be

+    used. Some browsers will interpret as UTF-7 a response containing characters

+    that are safe for ISO-8859-1 but trigger an XSS vulnerability if interpreted

+    as UTF-7.</p>

+  </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="web.xml"><strong>web.xml</strong></a></font></td></tr><tr><td><blockquote>

+    <p>This applies to the default <code>conf/web.xml</code> file and

+    <code>WEB-INF/web.xml</code> files in web applications if they define

+    the components mentioned here.</p>

+

+    <p>The <a href="default-servlet.html">DefaultServlet</a> is configured

+    with <strong>readonly</strong> set to

+    <code>true</code>. Changing this to <code>false</code> allows clients to

+    delete or modify static resources on the server and to upload new

+    resources. This should not normally be changed without requiring

+    authentication.</p>

+

+    <p>The DefaultServlet is configured with <strong>listings</strong> set to

+    <code>false</code>. This isn't because allowing directory listings is

+    considered unsafe but because generating listings of directories with

+    thousands of files can consume significant CPU leading to a DOS attack.

+    </p>

+

+    <p>The DefaultServlet is configured with <strong>showServerInfo</strong>

+    set to <code>true</code>. When the directory listings is enabled the Tomcat

+    version number is included in the response sent to clients. To avoid this,

+    you can explicitly configure a DefaultServlet and set its

+    <strong>showServerInfo</strong> attribute to false.

+    Alternatively, the version number can be changed by creating the file

+    CATALINA_BASE/lib/org/apache/catalina/util/ServerInfo.properties with

+    content as follows:</p>

+    <div class="codeBox"><pre><code>server.info=Apache Tomcat/7.0.x</code></pre></div>

+    <p>Modify the values as required. Note that this will also change the version

+    number reported in some of the management tools and may make it harder to

+    determine the real version installed. The CATALINA_HOME/bin/version.bat|sh

+    script will still report the version number.

+    </p>

+

+    <p>The CGI Servlet is disabled by default. If enabled, the debug

+    initialisation parameter should not be set to <code>10</code> or higher on a

+    production system because the debug page is not secure.</p>

+

+    <p><a href="config/filter.html">FailedRequestFilter</a>

+    can be configured and used to reject requests that had errors during

+    request parameter parsing. Without the filter the default behaviour is

+    to ignore invalid or excessive parameters.</p>

+

+    <p><a href="config/filter.html">HttpHeaderSecurityFilter</a> can be

+    used to add headers to responses to improve security. If clients access

+    Tomcat directly, then you probably want to enable this filter and all the

+    headers it sets unless your application is already setting them. If Tomcat

+    is accessed via a reverse proxy, then the configuration of this filter needs

+    to be co-ordinated with any headers that the reverse proxy sets.</p>

+  </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="General"><strong>General</strong></a></font></td></tr><tr><td><blockquote>

+    <p>BASIC and FORM authentication pass user names and passwords in clear

+    text. Web applications using these authentication mechanisms with clients

+    connecting over untrusted networks should use SSL.</p>

+

+    <p>The session cookie for a session with an authenticated user are nearly

+    as useful as the user's password to an attacker and in nearly all

+    circumstances should be afforded the same level of protection as the

+    password itself. This usually means authenticating over SSL and continuing

+    to use SSL until the session ends.</p>

+  </blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/security-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/security-manager-howto.html b/tomcat-uid/webapps/docs/security-manager-howto.html
index 2f871d2..3d5c527 100644
--- a/tomcat-uid/webapps/docs/security-manager-howto.html
+++ b/tomcat-uid/webapps/docs/security-manager-howto.html
@@ -1,9 +1,84 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 6.0 (6.0.41) - Security Manager HOW-TO</title><meta name="author" content="Glenn Nielsen"><meta name="author" content="Jean-Francois Arcand"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - Security Manager HOW-TO</title><meta name="author" content="Glenn Nielsen"><meta name="author" content="Jean-Francois Arcand"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat 6.0</h1><h2>Security Manager HOW-TO</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Security Manager HOW-TO</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Background">Background</a></li><li><a href="#Permissions">Permissions</a><ol><li><a href="#Standard_Permissions">Standard Permissions</a></li><li><a href="#Tomcat_Custom_Permissions">Tomcat Custom Permissions</a></li></ol></li><li><a href="#Configuring_Tomcat_With_A_SecurityManager">Configuring Tomcat With A SecurityManager</a></li><li><a href="#Configuring_Package_Protection_in_Tomcat">Configuring Package Protection in Tomcat</a></li><li><a href="#Troubleshooting">Troubleshooting</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Background"><strong>Background</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -18,20 +93,20 @@
 

   <p>Imagine if someone who is authorized to publish JSPs on your site

   inadvertently included the following in their JSP:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

 &lt;% System.exit(1); %&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 

   <p>Every time this JSP was executed by Tomcat, Tomcat would exit.

   Using the Java SecurityManager is just one more line of defense a

   system administrator can use to keep the server secure and reliable.</p>

 

   <p><strong>WARNING</strong> - A security audit

-  have been conducted using the Tomcat 6 codebase. Most of the critical

-  package have been protected and a new security package protection mechanism 

-  has been implemented. Still, make sure that you are satisfied with your SecurityManager 

-  configuration before allowing untrusted users to publish web applications, 

-  JSPs, servlets, beans, or tag libraries.  <strong>However, running with a 

+  have been conducted using the Tomcat codebase. Most of the critical

+  package have been protected and a new security package protection mechanism

+  has been implemented. Still, make sure that you are satisfied with your SecurityManager

+  configuration before allowing untrusted users to publish web applications,

+  JSPs, servlets, beans, or tag libraries.  <strong>However, running with a

   SecurityManager is definitely better than running without one.</strong></p>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Permissions"><strong>Permissions</strong></a></font></td></tr><tr><td><blockquote>

@@ -40,14 +115,15 @@
   by Tomcat will have.  There are a number of Permission classes that are

   a standard part of the JDK, and you can create your own Permission class

   for use in your own web applications.  Both techniques are used in

-  Tomcat 6.</p>

+  Tomcat.</p>

 

 

   <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Standard Permissions"><!--()--></a><a name="Standard_Permissions"><strong>Standard Permissions</strong></a></font></td></tr><tr><td><blockquote>

 

     <p>This is just a short summary of the standard system SecurityManager

     Permission classes applicable to Tomcat.  See

-    <a href="http://java.sun.com/security/">http://java.sun.com/security/</a>

+    <a href="http://docs.oracle.com/javase/7/docs/technotes/guides/security/">

+    http://docs.oracle.com/javase/7/docs/technotes/guides/security/</a>

     for more information.</p>

 

     <ul>

@@ -83,9 +159,9 @@
     used to do wild card matching for a JNDI named file resource when

     granting permission.  For example, you might include the following

     in your policy file:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

 permission  org.apache.naming.JndiPermission  "jndi://localhost/examples/*";

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 

     <p>A Permission entry like this is generated dynamically for each web

     application that is deployed, to allow it to read its own static resources

@@ -93,15 +169,15 @@
     permissions for those files are explicitly granted).</p>

 

     <p>Also, Tomcat always dynamically creates the following file permissions:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

 permission java.io.FilePermission "** your application context**", "read";

 

 permission java.io.FilePermission

   "** application working directory**", "read,write";

 permission java.io.FilePermission

   "** application working directory**/-", "read,write,delete";

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-    <p>Where **your application context** equals the folder (or WAR file) under which 

+</code></pre></div>

+    <p>Where **your application context** equals the folder (or WAR file) under which

     your application has been deployed and **application working directory** is the

     temporary directory provided to your application as required by the

     Servlet Specification.</p>

@@ -123,13 +199,13 @@
 

   <p>Entries in the <code>catalina.policy</code> file use the standard

   <code>java.policy</code> file format, as follows:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

 // Example policy file entry

 

 grant [signedBy &lt;signer&gt;,] [codeBase &lt;code source&gt;] {

   permission  &lt;class&gt;  [&lt;name&gt; [, &lt;action list&gt;]];

 };

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 

   <p>The <strong>signedBy</strong> and <strong>codeBase</strong> entries are

   optional when granting permissions.  Comment lines begin with "//" and

@@ -146,7 +222,7 @@
   looks like this:</p>

 

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>// Licensed to the Apache Software Foundation (ASF) under one or more

+<div class="codeBox"><pre><code>// 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

@@ -162,15 +238,15 @@
 // limitations under the License.

 

 // ============================================================================

-// catalina.policy - Security Policy Permissions for Tomcat @VERSION_MAJOR@

+// catalina.policy - Security Policy Permissions for Tomcat 7

 //

 // This file contains a default set of security policies to be enforced (by the

 // JVM) when Catalina is executed with the "-security" option.  In addition

 // to the permissions granted here, the following additional permissions are

-// granted to the codebase specific to each web application:

+// granted to each web application:

 //

-// * Read access to its document root directory

-// * Read, write and delete access to its working directory

+// * Read access to the web application's document root directory

+// * Read, write and delete access to the web application's working directory

 // ============================================================================

 

 

@@ -213,7 +289,7 @@
 //  grant codeBase "file:${catalina.base}/bin/tomcat-juli.jar" {..}

 grant codeBase "file:${catalina.home}/bin/tomcat-juli.jar" {

         permission java.io.FilePermission

-         "${java.home}${file.separator}lib${file.separator}logging.properties", "read"; 

+         "${java.home}${file.separator}lib${file.separator}logging.properties", "read";

 

         permission java.io.FilePermission

          "${catalina.base}${file.separator}conf${file.separator}logging.properties", "read";

@@ -230,6 +306,7 @@
 

         permission java.util.PropertyPermission "java.util.logging.config.class", "read";

         permission java.util.PropertyPermission "java.util.logging.config.file", "read";

+        permission java.util.PropertyPermission "org.apache.juli.ClassLoaderLogManager.debug", "read";

         permission java.util.PropertyPermission "catalina.base", "read";

 

         // Note: To enable per context logging configuration, permit read access to

@@ -268,7 +345,7 @@
 // These permissions are granted by default to all web applications

 // In addition, a web application will be given a read FilePermission

 // and JndiPermission for all files and directories in its document root.

-grant { 

+grant {

     // Required for JNDI lookup of named JDBC DataSource's and

     // javamail named MimePart DataSource used to send mail

     permission java.util.PropertyPermission "java.home", "read";

@@ -305,15 +382,38 @@
     // Allow read of JAXP compliant XML parser debug

     permission java.util.PropertyPermission "jaxp.debug", "read";

 

+    // All JSPs need to be able to read this package

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat";

+

     // Precompiled JSPs need access to these packages.

     permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.el";

     permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.runtime";

-    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.runtime.*";

-    

+    permission java.lang.RuntimePermission

+     "accessClassInPackage.org.apache.jasper.runtime.*";

+

     // Precompiled JSPs need access to these system properties.

     permission java.util.PropertyPermission

      "org.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER", "read";

-    permission java.util.PropertyPermission "org.apache.el.parser.COERCE_TO_ZERO", "read";

+    permission java.util.PropertyPermission

+     "org.apache.el.parser.COERCE_TO_ZERO", "read";

+

+    // The cookie code needs these.

+    permission java.util.PropertyPermission

+     "org.apache.catalina.STRICT_SERVLET_COMPLIANCE", "read";

+    permission java.util.PropertyPermission

+     "org.apache.tomcat.util.http.ServerCookie.STRICT_NAMING", "read";

+    permission java.util.PropertyPermission

+     "org.apache.tomcat.util.http.ServerCookie.FWD_SLASH_IS_SEPARATOR", "read";

+

+    // Applications using Comet need to be able to access this package

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.comet";

+

+    // Applications using the legacy WebSocket implementation need to be able to access this package

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.websocket";

+

+    // Applications using the JSR-356 WebSocket implementation need to be able to access these packages

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket";

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket.server";

 };

 

 

@@ -325,13 +425,17 @@
 // - CATALINA_HOME != CATALINA_BASE, shared Manager in CATALINA_HOME

 grant codeBase "file:${catalina.base}/webapps/manager/-" {

     permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina";

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.ha.session";

     permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager";

     permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager.util";

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.util";

 };

 grant codeBase "file:${catalina.home}/webapps/manager/-" {

     permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina";

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.ha.session";

     permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager";

     permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager.util";

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.util";

 };

 

 // You can assign additional permissions to particular web applications by

@@ -366,34 +470,34 @@
 //      permission java.net.SocketPermission "*.noaa.gov:80", "connect";

 // };

 

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 

   <h3>Starting Tomcat With A SecurityManager</h3>

 

   <p>Once you have configured the <code>catalina.policy</code> file for use

   with a SecurityManager, Tomcat can be started with a SecurityManager in

   place by using the "-security" option:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

 $CATALINA_HOME/bin/catalina.sh start -security    (Unix)

 %CATALINA_HOME%\bin\catalina start -security      (Windows)

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Configuring Package Protection in Tomcat"><!--()--></a><a name="Configuring_Package_Protection_in_Tomcat"><strong>Configuring Package Protection in Tomcat</strong></a></font></td></tr><tr><td><blockquote>

   <p>Starting with Tomcat 5, it is now possible to configure which Tomcat

-  internal package are protected againts package definition and access. See

-  <a href="http://java.sun.com/security/seccodeguide.html">

-    http://java.sun.com/security/seccodeguide.html</a>

-    for more information.</p>    

+  internal package are protected against package definition and access. See

+  <a href="http://www.oracle.com/technetwork/java/seccodeguide-139067.html">

+    http://www.oracle.com/technetwork/java/seccodeguide-139067.html</a>

+    for more information.</p>

 

-  

-  <p><strong>WARNING</strong>: Be aware that removing the default package protection 

+

+  <p><strong>WARNING</strong>: Be aware that removing the default package protection

   could possibly open a security hole</p>

 

   <h3>The Default Properties File</h3>

 

   <p>The default <code>$CATALINA_BASE/conf/catalina.properties</code> file

   looks like this:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>  

+<div class="codeBox"><pre><code>

 #

 # List of comma-separated packages that start with or equal this string

 # will cause a security exception to be thrown when

@@ -414,7 +518,7 @@
 #

 package.definition=sun.,java.,org.apache.catalina.,org.apache.coyote.,

 org.apache.tomcat.,org.apache.jasper.

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

   <p>Once you have configured the <code>catalina.properties</code> file for use

   with a SecurityManager, remember to re-start Tomcat.</p>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Troubleshooting"><strong>Troubleshooting</strong></a></font></td></tr><tr><td><blockquote>

@@ -428,10 +532,10 @@
   is done by setting a system property before starting Tomcat.  The easiest

   way to do this is via the <code>CATALINA_OPTS</code> environment variable.

   Execute this command:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

 export CATALINA_OPTS=-Djava.security.debug=all    (Unix)

 set CATALINA_OPTS=-Djava.security.debug=all       (Windows)

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 

   <p>before starting Tomcat.</p>

 

@@ -441,6 +545,31 @@
   for.  See the Java security documentation for more options that you can

   specify here as well.</p>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/security-manager-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/servletapi/index.html b/tomcat-uid/webapps/docs/servletapi/index.html
new file mode 100644
index 0000000..ab0da83
--- /dev/null
+++ b/tomcat-uid/webapps/docs/servletapi/index.html
@@ -0,0 +1,34 @@
+<!--

+  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.

+-->

+<!doctype html public "-//w3c//dtd html 4.0 transitional//en" "http://www.w3.org/TR/REC-html40/strict.dtd">

+<html>

+    <head>

+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+    <title>API docs</title>

+</head>

+

+<body>

+

+The Servlet Javadoc is not installed by default. Download and install

+the "fulldocs" package to get it.

+

+You can also access the javadoc online in the Tomcat

+<a href="http://tomcat.apache.org/tomcat-7.0-doc/">

+documentation bundle</a>.

+

+</body>

+</html>

diff --git a/tomcat-uid/webapps/docs/setup.html b/tomcat-uid/webapps/docs/setup.html
index e5d187f..5f72aad 100644
--- a/tomcat-uid/webapps/docs/setup.html
+++ b/tomcat-uid/webapps/docs/setup.html
@@ -1,9 +1,84 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 6.0 (6.0.41) - Tomcat Setup</title><meta name="author" content="Remy Maucherat"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - Tomcat Setup</title><meta name="author" content="Remy Maucherat"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat 6.0</h1><h2>Tomcat Setup</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Tomcat Setup</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Windows">Windows</a></li><li><a href="#Unix_daemon">Unix daemon</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

     <p>

@@ -15,14 +90,14 @@
   </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Windows"><strong>Windows</strong></a></font></td></tr><tr><td><blockquote>

 

     <p>

-      Installing Tomcat on Windows can be done easily using the Windows 

+      Installing Tomcat on Windows can be done easily using the Windows

       installer. Its interface and functionality is similar to other wizard

       based installers, with only a few items of interest.

     </p>

 

     <p>

       <ul>

-        <li><strong>Installation as a service</strong>: Tomcat will be 

+        <li><strong>Installation as a service</strong>: Tomcat will be

             installed as a Windows service no matter what setting is selected.

             Using the checkbox on the component page sets the service as "auto"

             startup, so that Tomcat is automatically started when Windows

@@ -31,12 +106,12 @@
             administration tool and its documentation).</li>

         <li><strong>Java location</strong>: The installer will provide a default

             JRE to use to run the service. The installer uses the registry to

-            determine the base path of a Java 5 or later JRE, including the JRE

+            determine the base path of a Java 6 or later JRE, including the JRE

             installed as part of the full JDK. When running on a 64-bit

             operating system, the installer will first look for a 64-bit JRE and

             only look for a 32-bit JRE if a 64-bit JRE is not found. It is not

             mandatory to use the default JRE detected by the installer. Any

-            installed Java 5 or later JRE (32-bit or 64-bit) may be used.</li>

+            installed Java 6 or later JRE (32-bit or 64-bit) may be used.</li>

         <li><strong>Tray icon</strong>: When Tomcat is run as a service, there

             will not be any tray icon present when Tomcat is running. Note that

             when choosing to run Tomcat at the end of installation, the tray

@@ -44,17 +119,17 @@
         <li>Refer to the

             <a href="windows-service-howto.html">Windows Service HOW-TO</a>

             for information on how to manage Tomcat as a Windows service.

-            </li>            

+            </li>

       </ul>

     </p>

 

-    <p>The installer will create shortcuts allowing starting and configuring 

-       Tomcat. It is important to note that the Tomcat administration web 

+    <p>The installer will create shortcuts allowing starting and configuring

+       Tomcat. It is important to note that the Tomcat administration web

        application can only be used when Tomcat is running.</p>

 

   </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Unix daemon"><!--()--></a><a name="Unix_daemon"><strong>Unix daemon</strong></a></font></td></tr><tr><td><blockquote>

 

-    <p>Tomcat can be run as a daemon using the jsvc tool from the 

+    <p>Tomcat can be run as a daemon using the jsvc tool from the

        commons-daemon project. Source tarballs for jsvc are included with the

        Tomcat binaries, and need to be compiled. Building jsvc requires

        a C ANSI compiler (such as GCC), GNU Autoconf, and a JDK.</p>

@@ -67,14 +142,14 @@
 

     <p>Using the following commands should result in a compiled jsvc binary,

        located in the <code>$CATALINA_HOME/bin</code> folder. This assumes

-       that GNU TAR is used, and that <code>CATALINA_HOME</code> is an 

-       environment variable pointing to the base path of the Tomcat 

+       that GNU TAR is used, and that <code>CATALINA_HOME</code> is an

+       environment variable pointing to the base path of the Tomcat

        installation.</p>

-  

+

     <p>Please note that you should use the GNU make (gmake) instead of

        the native BSD make on FreeBSD systems.</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

     cd $CATALINA_HOME/bin

     tar xvfz commons-daemon-native.tar.gz

     cd commons-daemon-1.0.x-native-src/unix

@@ -82,15 +157,15 @@
     make

     cp jsvc ../..

     cd ../..

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 

     <p>Tomcat can then be run as a daemon using the following commands.</p>

 

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

     CATALINA_BASE=$CATALINA_HOME

     cd $CATALINA_HOME

     ./bin/jsvc \

-        -classpath $CATALINA_HOME/bin/bootstrap.jar \

+        -classpath $CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/tomcat-juli.jar \

         -outfile $CATALINA_BASE/logs/catalina.out \

         -errfile $CATALINA_BASE/logs/catalina.err \

         -Dcatalina.home=$CATALINA_HOME \

@@ -98,13 +173,21 @@
         -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \

         -Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties \

         org.apache.catalina.startup.Bootstrap

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 

-    <p>jsvc has other useful parameters, such as <code>-user</code> which 

+    <p>You may also need to specify <code>-jvm server</code> if the JVM defaults

+       to using a server VM rather than a client VM. This has been observed on

+       OSX.</p>

+

+    <p>jsvc has other useful parameters, such as <code>-user</code> which

        causes it to switch to another user after the daemon initialization is

        complete. This allows, for example, running Tomcat as a non privileged

-       user while still being able to use privileged ports. 

-       <code>jsvc --help</code> will return the full jsvc usage 

+       user while still being able to use privileged ports. Note that if you

+       use this option and start Tomcat as root, you'll need to disable the

+       <code>org.apache.catalina.security.SecurityListener</code> check that

+       prevents Tomcat starting when running as root.</p>

+

+    <p><code>jsvc --help</code> will return the full jsvc usage

        information. In particular, the <code>-debug</code> option is useful

        to debug issues running jsvc.</p>

 

@@ -112,13 +195,38 @@
        template for starting Tomcat automatically at boot time from

        <code>/etc/init.d</code> with jsvc.</p>

 

-    <p>Note that the Commons-Daemon JAR file must be on your runtime classpath 

+    <p>Note that the Commons-Daemon JAR file must be on your runtime classpath

        to run Tomcat in this manner.  The Commons-Daemon JAR file is in the

        Class-Path entry of the bootstrap.jar manifest, but if you get a

        ClassNotFoundException or a NoClassDefFoundError for a Commons-Daemon

        class, add the Commons-Daemon JAR to the -cp argument when launching

-       jsvc.</p> 

+       jsvc.</p>

 

-  </blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+  </blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/setup.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/ssi-howto.html b/tomcat-uid/webapps/docs/ssi-howto.html
index e0d5a75..4b68037 100644
--- a/tomcat-uid/webapps/docs/ssi-howto.html
+++ b/tomcat-uid/webapps/docs/ssi-howto.html
@@ -1,9 +1,84 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 6.0 (6.0.41) - SSI How To</title><meta name="author" content="Glenn L. Nielsen"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - SSI How To</title><meta name="author" content="Glenn L. Nielsen"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat 6.0</h1><h2>SSI How To</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>SSI How To</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Installation">Installation</a></li><li><a href="#Servlet_Configuration">Servlet Configuration</a></li><li><a href="#Filter_Configuration">Filter Configuration</a></li><li><a href="#Directives">Directives</a></li><li><a href="#Variables">Variables</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -138,7 +213,7 @@
 </li>

 <li>

 <strong>set</strong> - <code>&lt;!--#set var="foo" value="Bar" --&gt;</code>

-is used to assign a value to a user-defind variable.

+is used to assign a value to a user-defined variable.

 </li>

 <li>

 <strong>if elif endif else</strong> - Used to create conditional sections. For example:</li>

@@ -173,7 +248,7 @@
 <tr>

 <td>CONTENT_LENGTH</td>

 <td>

-  The length of the data (in bytes or the number of 

+  The length of the data (in bytes or the number of

   characters) passed from a form.</td>

 </tr>

 

@@ -208,7 +283,7 @@
 <tr>

 <td>GATEWAY_INTERFACE</td>

 <td>

-  The revision of the Common Gateway Interface that the 

+  The revision of the Common Gateway Interface that the

   server uses if enabled: "CGI/1.1".</td>

 </tr>

 

@@ -275,7 +350,7 @@
 <tr>

 <td>QUERY_STRING_UNESCAPED</td>

 <td>

-Undecoded query string with all shell metacharacters escaped 

+Undecoded query string with all shell metacharacters escaped

 with "\"</td>

 </tr>

 <tr>

@@ -342,7 +417,7 @@
 <tr>

 <td>SERVER_SOFTWARE</td>

 <td>

-  The name and version of the server software that is 

+  The name and version of the server software that is

   answering the client request.</td>

 </tr>

 <tr>

@@ -352,6 +427,31 @@
   has been established.</td>

 </tr>

 </table>

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/ssi-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/ssl-howto.html b/tomcat-uid/webapps/docs/ssl-howto.html
index a3b153b..3a77e8a 100644
--- a/tomcat-uid/webapps/docs/ssl-howto.html
+++ b/tomcat-uid/webapps/docs/ssl-howto.html
@@ -1,51 +1,122 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 6.0 (6.0.41) - SSL Configuration HOW-TO</title><meta name="author" content="Christopher Cain"><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - SSL/TLS Configuration HOW-TO</title><meta name="author" content="Christopher Cain"><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat 6.0</h1><h2>SSL Configuration HOW-TO</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

-<ul><li><a href="#Quick_Start">Quick Start</a></li><li><a href="#Introduction_to_SSL">Introduction to SSL</a></li><li><a href="#SSL_and_Tomcat">SSL and Tomcat</a></li><li><a href="#Certificates">Certificates</a></li><li><a href="#General_Tips_on_Running_SSL">General Tips on Running SSL</a></li><li><a href="#Configuration">Configuration</a><ol><li><a href="#Prepare_the_Certificate_Keystore">Prepare the Certificate Keystore</a></li><li><a href="#Edit_the_Tomcat_Configuration_File">Edit the Tomcat Configuration File</a></li></ol></li><li><a href="#Installing_a_Certificate_from_a_Certificate_Authority">Installing a Certificate from a Certificate Authority</a><ol><li><a href="#Create_a_local_Certificate_Signing_Request_(CSR)">Create a local Certificate Signing Request (CSR)</a></li><li><a href="#Importing_the_Certificate">Importing the Certificate</a></li></ol></li><li><a href="#Troubleshooting">Troubleshooting</a></li><li><a href="#Miscellaneous_Tips_and_Bits">Miscellaneous Tips and Bits</a></li></ul>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>SSL/TLS Configuration HOW-TO</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Quick_Start">Quick Start</a></li><li><a href="#Introduction_to_SSL">Introduction to SSL/TLS</a></li><li><a href="#SSL_and_Tomcat">SSL/TLS and Tomcat</a></li><li><a href="#Certificates">Certificates</a></li><li><a href="#General_Tips_on_Running_SSL">General Tips on Running SSL</a></li><li><a href="#Configuration">Configuration</a><ol><li><a href="#Prepare_the_Certificate_Keystore">Prepare the Certificate Keystore</a></li><li><a href="#Edit_the_Tomcat_Configuration_File">Edit the Tomcat Configuration File</a></li></ol></li><li><a href="#Installing_a_Certificate_from_a_Certificate_Authority">Installing a Certificate from a Certificate Authority</a><ol><li><a href="#Create_a_local_Certificate_Signing_Request_(CSR)">Create a local Certificate Signing Request (CSR)</a></li><li><a href="#Importing_the_Certificate">Importing the Certificate</a></li></ol></li><li><a href="#Troubleshooting">Troubleshooting</a></li><li><a href="#Using_the_SSL_for_session_tracking_in_your_application">Using the SSL for session tracking in your application</a></li><li><a href="#Miscellaneous_Tips_and_Bits">Miscellaneous Tips and Bits</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Quick Start"><!--()--></a><a name="Quick_Start"><strong>Quick Start</strong></a></font></td></tr><tr><td><blockquote>

 

     <blockquote><em>

     <p>The description below uses the variable name $CATALINA_BASE to refer the

     base directory against which most relative paths are resolved. If you have

-    not configured Tomcat 6 for multiple instances by setting a CATALINA_BASE

+    not configured Tomcat for multiple instances by setting a CATALINA_BASE

     directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME,

-    the directory into which you have installed Tomcat 6.</p>

+    the directory into which you have installed Tomcat.</p>

     </em></blockquote>

 

-<p>To install and configure SSL support on Tomcat 6, you need to follow

+<p>To install and configure SSL/TLS support on Tomcat, you need to follow

 these simple steps.  For more information, read the rest of this HOW-TO.</p>

 <ol>

 <li>Create a keystore file to store the server's private key and

 self-signed certificate by executing the following command:

 <p>Windows:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>"%JAVA_HOME%\bin\keytool" -genkey -alias tomcat -keyalg RSA</code></pre></div>

 <p>Unix:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-<p></p>

-    and specify a password value of "changeit".</li><br><br>

-<li>Uncomment the "SSL HTTP/1.1 Connector" entry in

-    <code>$CATALINA_BASE/conf/server.xml</code> and modify as described in 

-    the <a href="#Configuration">Configuration section</a> below.</li>

-    <br><br>

+<div class="codeBox"><pre><code>$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA</code></pre></div>

+

+<p>and specify a password value of "changeit".</p></li>

+<li><p>Uncomment the "SSL HTTP/1.1 Connector" entry in

+    <code>$CATALINA_BASE/conf/server.xml</code> and modify as described in

+    the <a href="#Configuration">Configuration section</a> below.</p></li>

 </ol>

 

 

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction to SSL"><!--()--></a><a name="Introduction_to_SSL"><strong>Introduction to SSL</strong></a></font></td></tr><tr><td><blockquote>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction_to_SSL"><strong>Introduction to SSL/TLS</strong></a></font></td></tr><tr><td><blockquote>

 

-<p>SSL, or Secure Socket Layer, is a technology which allows web browsers and

-web servers to communicate over a secured connection.  This means that the data

-being sent is encrypted by one side, transmitted, then decrypted by the other

-side before processing.  This is a two-way process, meaning that both the

-server AND the browser encrypt all traffic before sending out data.</p>

+<p>Transport Layer Security (TLS) and its predecessor, Secure Sockets Layer

+(SSL), are technologies which allow web browsers and web servers to communicate

+over a secured connection.  This means that the data being sent is encrypted by

+one side, transmitted, then decrypted by the other side before processing.

+This is a two-way process, meaning that both the server AND the browser encrypt

+all traffic before sending out data.</p>

 

-<p>Another important aspect of the SSL protocol is Authentication.  This means

+<p>Another important aspect of the SSL/TLS protocol is Authentication.  This means

 that during your initial attempt to communicate with a web server over a secure

 connection, that server will present your web browser with a set of

 credentials, in the form of a "Certificate", as proof the site is who and what

@@ -55,11 +126,13 @@
 used more for business-to-business (B2B) transactions than with individual

 users.  Most SSL-enabled web servers do not request Client Authentication.</p>

 

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="SSL and Tomcat"><!--()--></a><a name="SSL_and_Tomcat"><strong>SSL and Tomcat</strong></a></font></td></tr><tr><td><blockquote>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="SSL_and_Tomcat"><strong>SSL/TLS and Tomcat</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>It is important to note that configuring Tomcat to take advantage of

 secure sockets is usually only necessary when running it as a stand-alone

-web server.  When running Tomcat primarily as a Servlet/JSP container behind

+web server.  Details can be found in the

+<a href="security-howto.html">Security Considerations Document</a>.

+When running Tomcat primarily as a Servlet/JSP container behind

 another web server, such as Apache or Microsoft IIS, it is usually necessary

 to configure the primary web server to handle the SSL connections from users.

 Typically, this server will negotiate all SSL-related functionality, then

@@ -78,73 +151,40 @@
 The theory behind this design is that a server should provide some kind of

 reasonable assurance that its owner is who you think it is, particularly

 before receiving any sensitive information.  While a broader explanation of

-Certificates is beyond the scope of this document, think of a Certificate

-as a "digital driver's license" for an Internet address.  It states what

-company the site is associated with, along with some basic contact

-information about the site owner or administrator.</p>

+Certificates is beyond the scope of this document, think of a Certificate as a

+"digital passport" for an Internet address. It states which organisation the

+site is associated with, along with some basic contact information about the

+site owner or administrator.</p>

 

-<p>This "driver's license" is cryptographically signed by its owner, and is

-therefore extremely difficult for anyone else to forge.  For sites involved

-in e-commerce, or any other business transaction in which authentication of

-identity is important, a Certificate is typically purchased from a well-known

-<em>Certificate Authority</em> (CA) such as VeriSign or Thawte.  Such

-certificates can be electronically verified -- in effect, the Certificate

-Authority will vouch for the authenticity of the certificates that it grants,

-so you can believe that that Certificate is valid if you trust the Certificate

-Authority that granted it.</p>

+<p>This certificate is cryptographically signed by its owner, and is

+therefore extremely difficult for anyone else to forge. For the certificate to

+work in the visitors browsers without warnings, it needs to be signed by a

+trusted third party. These are called <em>Certificate Authorities</em> (CAs). To

+obtain a signed certificate, you need to choose a CA and follow the instructions

+your chosen CA provides to obtain your certificate. A range of CAs is available

+including some that offer certificates at no cost.</p>

 

-<p>In many cases, however, authentication is not really a concern.  An

-administrator may simply want to ensure that the data being transmitted and

-received by the server is private and cannot be snooped by anyone who may be

-eavesdropping on the connection.  Fortunately, Java provides a relatively

-simple command-line tool, called <code>keytool</code>, which can easily create

-a "self-signed" Certificate.  Self-signed Certificates are simply user

-generated Certificates which have not been officially registered with any

-well-known CA, and are therefore not really guaranteed to be authentic at all.

-Again, this may or may not even be important, depending on your needs.</p>

+<p>Java provides a relatively simple command-line tool, called

+<code>keytool</code>, which can easily create a "self-signed" Certificate.

+Self-signed Certificates are simply user generated Certificates which have not

+been signed by a well-known CA and are, therefore, not really guaranteed to be

+authentic at all. While self-signed certificates can be useful for some testing

+scenarios, they are not suitable for any form of production use.</p>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="General Tips on Running SSL"><!--()--></a><a name="General_Tips_on_Running_SSL"><strong>General Tips on Running SSL</strong></a></font></td></tr><tr><td><blockquote>

 

-<p>The first time a user attempts to access a secured page on your site,

-he or she is typically presented with a dialog containing the details of

-the certificate (such as the company and contact name), and asked if he or she

-wishes to accept the Certificate as valid and continue with the transaction.

-Some browsers will provide an option for permanently accepting a given

-Certificate as valid, in which case the user will not be bothered with a

-prompt each time they visit your site.  Other browsers do not provide this

-option.  Once approved by the user, a Certificate will be considered valid

-for at least the entire browser session.</p>

+<p>When securing a website with SSL it's important to make sure that all assets

+that the site uses are served over SSL, so that an attacker can't bypass

+the security by injecting malicious content in a javascript file or similar. To

+further enhance the security of your website, you should evaluate to use the

+HSTS header. It allows you to communicate to the browser that your site should

+always be accessed over https.</p>

 

-<p>Also, while the SSL protocol was designed to be as efficient as securely

-possible, encryption/decryption is a computationally expensive process from

-a performance standpoint.  It is not strictly necessary to run an entire

-web application over SSL, and indeed a developer can pick and choose which

-pages require a secure connection and which do not.  For a reasonably busy

-site, it is customary to only run certain pages under SSL, namely those

-pages where sensitive information could possibly be exchanged.  This would

-include things like login pages, personal information pages, and shopping

-cart checkouts, where credit card information could possibly be transmitted.

-Any page within an application can be requested over a secure socket by

-simply prefixing the address with <code>https:</code> instead of

-<code>http:</code>.  Any pages which absolutely <strong>require</strong>

-a secure connection should check the protocol type associated with the

-page request and take the appropriate action if <code>https</code> is not

-specified.</p>

-

-<p>Finally, using name-based virtual hosts on a secured connection can be

-problematic.  This is a design limitation of the SSL protocol itself.  The SSL

-handshake, where the client browser accepts the server certificate, must occur

-before the HTTP request is accessed.  As a result, the request information

-containing the virtual host name cannot be determined prior to authentication,

-and it is therefore not possible to assign multiple certificates to a single

-IP address.  If all virtual hosts on a single IP address need to authenticate

-against the same certificate, the addition of multiple virtual hosts should not

-interfere with normal SSL operations on the server.  Be aware, however, that

-most client browsers will compare the server's domain name against the domain

-name listed in the certificate, if any (applicable primarily to official,

-CA-signed certificates).  If the domain names do not match, these browsers will

-display a warning to the client user.  In general, only address-based virtual

-hosts are commonly used with SSL in a production environment.</p>

+<p>Using name-based virtual hosts on a secured connection requires careful

+configuration of the names specified in a single certificate or Tomcat 8.5

+onwards where Server Name Indication (SNI) support is available. SNI allows

+multiple certificates with different names to be associated with a single TLS

+connector.</p>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Configuration"><strong>Configuration</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -166,31 +206,27 @@
 differ only in case.

 </p>

 

-<p>To import an existing certificate into a JKS keystore, please read the

+<p>To import an existing certificate into a <code>JKS</code> keystore, please read the

 documentation (in your JDK documentation package) about <code>keytool</code>.

-Note that OpenSSL often adds readable comments before the key,

-<code>keytool</code>does not support that, so remove the OpenSSL comments if

-they exist before importing the key using <code>keytool</code>.

+Note that OpenSSL often adds readable comments before the key, but

+<code>keytool</code> does not support that. So if your certificate has

+comments before the key data, remove them before importing the certificate with

+<code>keytool</code>.

 </p>

-<p>To import an existing certificate signed by your own CA into a PKCS12 

-keystore using OpenSSL you would execute a command like:

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>openssl pkcs12 -export -in mycert.crt -inkey mykey.key \

-                        -out mycert.p12 -name tomcat -CAfile myCA.crt \

-                        -caname root -chain

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-For more advanced cases, consult the <a href="http://www.openssl.org/">OpenSSL

-documentation</a>.

-</p>

-<p>To create a new keystore from scratch, containing a single self-signed

-Certificate, execute the following from a terminal command line:</p>

+<p>To import an existing certificate signed by your own CA into a <code>PKCS12</code>

+keystore using OpenSSL you would execute a command like:</p>

+<div class="codeBox"><pre><code>openssl pkcs12 -export -in mycert.crt -inkey mykey.key

+                        -out mycert.p12 -name tomcat -CAfile myCA.crt

+                        -caname root -chain</code></pre></div>

+<p>For more advanced cases, consult the

+<a href="http://www.openssl.org/" rel="nofollow">OpenSSL documentation</a>.</p>

+

+<p>To create a new <code>JKS</code> keystore from scratch, containing a single

+self-signed Certificate, execute the following from a terminal command line:</p>

 <p>Windows:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>"%JAVA_HOME%\bin\keytool" -genkey -alias tomcat -keyalg RSA</code></pre></div>

 <p>Unix:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA</code></pre></div>

 

 <p>(The RSA algorithm should be preferred as a secure algorithm, and this

 also ensures general compatibility with other servers and components.)</p>

@@ -203,15 +239,11 @@
 reflect this new location in the <code>server.xml</code> configuration file,

 as described later.  For example:</p>

 <p>Windows:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA \

-  -keystore \path\to\my\keystore

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>"%JAVA_HOME%\bin\keytool" -genkey -alias tomcat -keyalg RSA

+  -keystore \path\to\my\keystore</code></pre></div>

 <p>Unix:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA \

-  -keystore /path/to/my/keystore

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<div class="codeBox"><pre><code>$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA

+  -keystore /path/to/my/keystore</code></pre></div>

 

 <p>After executing this command, you will first be prompted for the keystore

 password.  The default password used by Tomcat is "<code>changeit</code>"

@@ -226,21 +258,16 @@
 

 <p>Finally, you will be prompted for the <em>key password</em>, which is the

 password specifically for this Certificate (as opposed to any other

-Certificates stored in the same keystore file).  You <strong>MUST</strong>

-use the same password here as was used for the keystore password itself.

-This is a restriction of the Tomcat implementation.

-(Currently, the <code>keytool</code> prompt will tell you that pressing the

-ENTER key does this for you automatically.)</p>

+Certificates stored in the same keystore file). The <code>keytool</code> prompt

+will tell you that pressing the ENTER key automatically uses the same password

+for the key as the keystore. You are free to use the same password or to select

+a custom one. If you select a different password to the keystore password, you

+will also need to specify the custom password in the <code>server.xml</code>

+configuration file.</p>

 

 <p>If everything was successful, you now have a keystore file with a

 Certificate that can be used by your server.</p>

 

-<p><strong>Note:</strong> your private key password and keystore password

-should be the same.  If they differ, you will get an error along the lines

-of <code>java.io.IOException: Cannot recover key</code>, as documented in 

-<a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=38217">Bugzilla issue 38217</a>, 

-which contains further references for this issue.</p>

-

 </blockquote></td></tr></table>

 

 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Edit the Tomcat Configuration File"><!--()--></a><a name="Edit_the_Tomcat_Configuration_File"><strong>Edit the Tomcat Configuration File</strong></a></font></td></tr><tr><td><blockquote>

@@ -251,52 +278,49 @@
 <li>the APR implementation, which uses the OpenSSL engine by default.</li>

 </ul>

 The exact configuration details depend on which implementation is being used.

-The implementation used by Tomcat is chosen automatically unless it is overriden as described below.

-If the installation uses <a href="apr.html">APR</a> 

+If you configured Connector by specifying generic

+<code>protocol="HTTP/1.1"</code> then the implementation used by Tomcat is

+chosen automatically. If the installation uses <a href="apr.html">APR</a>

 - i.e. you have installed the Tomcat native library -

-then it will use the APR SSL implementation, otherwise it will use the Java JSSE implementation.  

+then it will use the APR SSL implementation, otherwise it will use the Java

+JSSE implementation.

 </p>

 

 <p>

-  To avoid auto configuration you can define which implementation to use by specifying a classname 

-  in the <b>protocol</b> attribute of the Connector.<br>

-  To define a Java (JSSE) connector, regardless of whether the APR library is loaded or not do:

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;-- Define a blocking Java SSL Coyote HTTP/1.1 Connector on port 8443 --&gt;

-&lt;Connector protocol="org.apache.coyote.http11.Http11Protocol"

-           port="8443" .../&gt;

+As configuration attributes for SSL support significantly differ between

+APR vs. JSSE implementations, it is <strong>recommended</strong> to

+avoid auto-selection of implementation. It is done by specifying a classname

+in the <b>protocol</b> attribute of the <a href="config/http.html">Connector</a>.</p>

 

-&lt;-- Define a non-blocking Java SSL Coyote HTTP/1.1 Connector on port 8443 --&gt;

+<p>To define a Java (JSSE) connector, regardless of whether the APR library is

+loaded or not, use one of the following:</p>

+<div class="codeBox"><pre><code>&lt;!-- Define a HTTP/1.1 Connector on port 8443, JSSE NIO implementation --&gt;

 &lt;Connector protocol="org.apache.coyote.http11.Http11NioProtocol"

            port="8443" .../&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-Alternatively, to specify an APR connector (the APR library must be available) use:

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;-- Define a APR SSL Coyote HTTP/1.1 Connector on port 8443 --&gt;

-&lt;Connector protocol="org.apache.coyote.http11.Http11AprProtocol"

-           port="8443" .../&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

 

-</p>

+&lt;!-- Define a HTTP/1.1 Connector on port 8443, JSSE BIO implementation --&gt;

+&lt;Connector protocol="org.apache.coyote.http11.Http11Protocol"

+           port="8443" .../&gt;</code></pre></div>

+<p>Alternatively, to specify an APR connector (the APR library must be available) use:</p>

+<div class="codeBox"><pre><code>&lt;!-- Define a HTTP/1.1 Connector on port 8443, APR implementation --&gt;

+&lt;Connector protocol="org.apache.coyote.http11.Http11AprProtocol"

+           port="8443" .../&gt;</code></pre></div>

 

 <p>If you are using APR, you have the option of configuring an alternative engine to OpenSSL.

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

 &lt;Listener className="org.apache.catalina.core.AprLifecycleListener"

           SSLEngine="someengine" SSLRandomSeed="somedevice" /&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 The default value is

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+<div class="codeBox"><pre><code>

 &lt;Listener className="org.apache.catalina.core.AprLifecycleListener"

           SSLEngine="on" SSLRandomSeed="builtin" /&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 So to use SSL under APR, make sure the SSLEngine attribute is set to something other than <code>off</code>.

 The default value is <code>on</code> and if you specify another value, it has to be a valid engine name.

-<br>

-If you haven't compiled in SSL support into your Tomcat Native library, then you can turn this initialization off

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;Listener className="org.apache.catalina.core.AprLifecycleListener"

-          SSLEngine="off" /&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</p>

+

+<p>

 SSLRandomSeed allows to specify a source of entropy. Productive system needs a reliable source of entropy

 but entropy may need a lot of time to be collected therefore test systems could use no blocking entropy

 sources like "/dev/urandom" that will allow quicker starts of Tomcat.

@@ -306,48 +330,43 @@
 <p>The final step is to configure the Connector in the

 <code>$CATALINA_BASE/conf/server.xml</code> file, where

 <code>$CATALINA_BASE</code> represents the base directory for the

-Tomcat 6 instance.  An example <code>&lt;Connector&gt;</code> element

+Tomcat instance.  An example <code>&lt;Connector&gt;</code> element

 for an SSL connector is included in the default <code>server.xml</code>

-file installed with Tomcat.  For JSSE, it should look something like this:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 --&gt;

-&lt;!--

-&lt;Connector 

+file installed with Tomcat.  To configure an SSL connector that uses JSSE, you

+will need to remove the comments and edit it so it looks something like

+this:</p>

+<div class="codeBox"><pre><code>

+&lt;!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 --&gt;

+&lt;Connector

+           protocol="org.apache.coyote.http11.Http11NioProtocol"

            port="8443" maxThreads="200"

            scheme="https" secure="true" SSLEnabled="true"

            keystoreFile="${user.home}/.keystore" keystorePass="changeit"

            clientAuth="false" sslProtocol="TLS"/&gt;

---&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</code></pre></div>

 <p>

-  The example above will throw an error if you have the APR and the Tomcat Native libraries in your path,

-  as Tomcat will try to use the APR connector. The APR connector uses different attributes for 

-  SSL keys and certificates. An example of an APR configuration is:

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-&lt;-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 --&gt;

-&lt;!--

-&lt;Connector 

+  The APR connector uses different attributes for many SSL settings,

+  particularly keys and certificates. An example of an APR configuration is:

+<div class="codeBox"><pre><code>

+&lt;!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 --&gt;

+&lt;Connector

+           protocol="org.apache.coyote.http11.Http11AprProtocol"

            port="8443" maxThreads="200"

            scheme="https" secure="true" SSLEnabled="true"

-           SSLCertificateFile="/usr/local/ssl/server.crt" 

+           SSLCertificateFile="/usr/local/ssl/server.crt"

            SSLCertificateKeyFile="/usr/local/ssl/server.pem"

-           clientAuth="optional" SSLProtocol="TLSv1"/&gt;

---&gt;

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+           SSLVerifyClient="optional" SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"/&gt;

+</code></pre></div>

 </p>

 

-<p>You will note that the example SSL connector elements are commented out by

-default. You can either remove the comment tags from around the the example SSL

-connector you wish to use or add a new Connector element of your own. In either

-case, you will need to configure the SSL Connector for your requirements

-and environment. The configuration options and information on which attributes

-are mandatory for the JSSE based connectors (BIO and NIO) are documented in the

-SSL Support section of the <a href="config/http.html#SSL Support">HTTP

-connector</a> configuration reference. The configuration options and information

-on which attributes are mandatory for the APR connector are documented in the

-HTTPS section of the <a href="apr.html#HTTPS">APR How-To</a>.</p>

+<p>The configuration options and information on which attributes

+are mandatory, are documented in the SSL Support section of the

+<a href="config/http.html#SSL Support">HTTP connector</a> configuration

+reference. Make sure that you use the correct attributes for the connector you

+are using. The BIO and NIO connectors use JSSE whereas the APR/native connector

+uses APR.</p>

 

-<p>The <code>port</code> attribute (default value is 8443) is the TCP/IP

+<p>The <code>port</code> attribute is the TCP/IP

 port number on which Tomcat will listen for secure connections.  You can

 change this to any port number you wish (such as to the default port for

 <code>https</code> communications, which is 443).  However, special setup

@@ -365,10 +384,7 @@
 <p>After completing these configuration changes, you must restart Tomcat as

 you normally do, and you should be in business.  You should be able to access

 any web application supported by Tomcat via SSL.  For example, try:</p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-https://localhost:8443

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-

+<div class="codeBox"><pre><code>https://localhost:8443/</code></pre></div>

 <p>and you should see the usual Tomcat splash page (unless you have modified

 the ROOT web application).  If this does not work, the following section

 contains some troubleshooting tips.</p>

@@ -376,24 +392,24 @@
 </blockquote></td></tr></table>

 

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Installing a Certificate from a Certificate Authority"><!--()--></a><a name="Installing_a_Certificate_from_a_Certificate_Authority"><strong>Installing a Certificate from a Certificate Authority</strong></a></font></td></tr><tr><td><blockquote>

-<p>To obtain and install a Certificate from a Certificate Authority (like verisign.com, thawte.com 

+<p>To obtain and install a Certificate from a Certificate Authority (like verisign.com, thawte.com

 or trustcenter.de), read the previous section and then follow these instructions:</p>

 

 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Create a local Certificate Signing Request (CSR)"><!--()--></a><a name="Create_a_local_Certificate_Signing_Request_(CSR)"><strong>Create a local Certificate Signing Request (CSR)</strong></a></font></td></tr><tr><td><blockquote>

-<p>In order to obtain a Certificate from the Certificate Authority of your choice 

-you have to create a so called Certificate Signing Request (CSR). That CSR will be used 

-by the Certificate Authority to create a Certificate that will identify your website 

+<p>In order to obtain a Certificate from the Certificate Authority of your choice

+you have to create a so called Certificate Signing Request (CSR). That CSR will be used

+by the Certificate Authority to create a Certificate that will identify your website

 as "secure". To create a CSR follow these steps:</p>

 <ul>

-<li>Create a local Certificate (as described in the previous section):

-    <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>keytool -genkey -alias tomcat -keyalg RSA \

-    -keystore &lt;your_keystore_filename&gt;</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<li>Create a local self-signed Certificate (as described in the previous section):

+    <div class="codeBox"><pre><code>keytool -genkey -alias tomcat -keyalg RSA

+    -keystore &lt;your_keystore_filename&gt;</code></pre></div>

     Note: In some cases you will have to enter the domain of your website (i.e. <code>www.myside.org</code>)

-    in the field "first- and lastname" in order to create a working Certificate. 

+    in the field "first- and lastname" in order to create a working Certificate.

 </li>

 <li>The CSR is then created with:

-    <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>keytool -certreq -keyalg RSA -alias tomcat -file certreq.csr \

-    -keystore &lt;your_keystore_filename&gt;</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <div class="codeBox"><pre><code>keytool -certreq -keyalg RSA -alias tomcat -file certreq.csr

+    -keystore &lt;your_keystore_filename&gt;</code></pre></div>

 </li>

 </ul>

 <p>Now you have a file called <code>certreq.csr</code> that you can submit to the Certificate Authority (look at the

@@ -401,8 +417,8 @@
 </blockquote></td></tr></table>

 

 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Importing the Certificate"><!--()--></a><a name="Importing_the_Certificate"><strong>Importing the Certificate</strong></a></font></td></tr><tr><td><blockquote>

-<p>Now that you have your Certificate you can import it into you local keystore. 

-First of all you have to import a so called Chain Certificate or Root Certificate into your keystore. 

+<p>Now that you have your Certificate you can import it into you local keystore.

+First of all you have to import a so called Chain Certificate or Root Certificate into your keystore.

 After that you can proceed with importing your Certificate.</p>

 

 <ul>

@@ -417,12 +433,12 @@
             http://www.thawte.com/certs/trustmap.html<br>

 </li>

 <li>Import the Chain Certificate into your keystore

-    <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>keytool -import -alias root -keystore &lt;your_keystore_filename&gt; \

-    -trustcacerts -file &lt;filename_of_the_chain_certificate&gt;</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <div class="codeBox"><pre><code>keytool -import -alias root -keystore &lt;your_keystore_filename&gt;

+    -trustcacerts -file &lt;filename_of_the_chain_certificate&gt;</code></pre></div>

 </li>

 <li>And finally import your new Certificate

-    <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>keytool -import -alias tomcat -keystore &lt;your_keystore_filename&gt; \

-    -file &lt;your_certificate_filename&gt;</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <div class="codeBox"><pre><code>keytool -import -alias tomcat -keystore &lt;your_keystore_filename&gt;

+    -file &lt;your_certificate_filename&gt;</code></pre></div>

 </li>

 </ul>

 </blockquote></td></tr></table>

@@ -441,7 +457,7 @@
     be named <code>.keystore</code> in the user home directory under which

     Tomcat is running (which may or may not be the same as yours :-).  If

     the keystore file is anywhere else, you will need to add a

-    <code>keystoreFile</code> attribute to the <code>&lt;Factory&gt;</code>

+    <code>keystoreFile</code> attribute to the <code>&lt;Connector&gt;</code>

     element in the <a href="#Edit the Tomcat Configuration File">Tomcat

     configuration file</a>.</p>

     </blockquote></li>

@@ -462,7 +478,7 @@
     </blockquote></li>

 

 <li>When Tomcat starts up, I get an exception like

-    "java.net.SocketException: SSL handshake errorjavax.net.ssl.SSLException: No

+    "java.net.SocketException: SSL handshake error javax.net.ssl.SSLException: No

     available certificate or key corresponds to the SSL cipher suites which are

     enabled."

     <blockquote>

@@ -475,6 +491,24 @@
     sensitive!</p>

     </blockquote></li>

 

+<li>My Java-based client aborts handshakes with exceptions such as

+    "java.lang.RuntimeException: Could not generate DH keypair" and

+    "java.security.InvalidAlgorithmParameterException: Prime size must be multiple

+    of 64, and can only range from 512 to 1024 (inclusive)"

+

+    <p>If you are using the APR/native connector, starting with version 1.1.34

+    it will determine the strength of ephemeral DH keys from the key size of

+    your RSA certificate. For example a 2048 bit RSA key will result in

+    using a 2048 bit primefor the DH keys. Unfortunately Java 6 only supports

+    768 bit and Java 7 only supports 1024 bit. So if your certificate has a

+    stronger key, old Java clients might produce such handshake failures.

+    As a mitigation you can either try to force them to use another cipher by

+    configuring an appropriate <code>SSLCipherSuite</code> and activate

+    <code>SSLHonorCipherOrder</code>, or embed weak DH params in your

+    certificate file. The latter approach is not recommended because it weakens

+    the SSL security (logjam attack).</p>

+    </li>

+

 </ul>

 

 <p>If you are still having problems, a good source of information is the

@@ -483,18 +517,115 @@
 information, at

 <a href="http://tomcat.apache.org/lists.html">http://tomcat.apache.org/lists.html</a>.</p>

 

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Using the SSL for session tracking in your application"><!--()--></a><a name="Using_the_SSL_for_session_tracking_in_your_application"><strong>Using the SSL for session tracking in your application</strong></a></font></td></tr><tr><td><blockquote>

+  <p>This is a new feature in the Servlet 3.0 specification. Because it uses the

+     SSL session ID associated with the physical client-server connection there

+     are some limitations. They are:

+    <ul>

+      <li>Tomcat must have a connector with the attribute

+          <strong>isSecure</strong> set to <code>true</code>.</li>

+      <li>If SSL connections are managed by a proxy or a hardware accelerator

+          they must populate the SSL request headers (see the

+          <a href="config/valve.html">SSLValve</a>) so that

+          the SSL session ID is visible to Tomcat.</li>

+      <li>If Tomcat terminates the SSL connection, it will not be possible to use

+          session replication as the SSL session IDs will be different on each

+          node.</li>

+    </ul>

+  </p>

+

+  <p>

+    To enable SSL session tracking you need to use a context listener to set the

+    tracking mode for the context to be just SSL (if any other tracking mode is

+    enabled, it will be used in preference). It might look something like:

+    <div class="codeBox"><pre><code>

+package org.apache.tomcat.example;

+

+import java.util.EnumSet;

+

+import javax.servlet.ServletContext;

+import javax.servlet.ServletContextEvent;

+import javax.servlet.ServletContextListener;

+import javax.servlet.SessionTrackingMode;

+

+public class SessionTrackingModeListener implements ServletContextListener {

+

+    @Override

+    public void contextDestroyed(ServletContextEvent event) {

+        // Do nothing

+    }

+

+    @Override

+    public void contextInitialized(ServletContextEvent event) {

+        ServletContext context = event.getServletContext();

+        EnumSet&lt;SessionTrackingMode&gt; modes =

+            EnumSet.of(SessionTrackingMode.SSL);

+

+        context.setSessionTrackingModes(modes);

+    }

+

+}

+    </code></pre></div>

+  </p>

+  <p>Note: SSL session tracking is implemented for the BIO and NIO connectors.

+     It is not yet implemented for the APR connector.</p>

+

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Miscellaneous Tips and Bits"><!--()--></a><a name="Miscellaneous_Tips_and_Bits"><strong>Miscellaneous Tips and Bits</strong></a></font></td></tr><tr><td><blockquote>

 

 <p>To access the SSL session ID from the request, use:<br>

 

   <code>

-    String sslID = (String)request.getAttribute("javax.servlet.request.ssl_session");

+    String sslID = (String)request.getAttribute("javax.servlet.request.ssl_session_id");

   </code>

 <br>

 For additional discussion on this area, please see

-<a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=22679">Bugzilla</a>.

+<a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=22679">Bugzilla</a>.

 </p>

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+  <p>To terminate an SSL session, use:

+    <div class="codeBox"><pre><code>

+// Standard HTTP session invalidation

+session.invalidate();

+

+// Invalidate the SSL Session

+org.apache.tomcat.util.net.SSLSessionManager mgr =

+    (org.apache.tomcat.util.net.SSLSessionManager)

+    request.getAttribute("javax.servlet.request.ssl_session_mgr");

+mgr.invalidateSession();

+

+// Close the connection since the SSL session will be active until the connection

+// is closed

+response.setHeader("Connection", "close");

+    </code></pre></div>

+    Note that this code is Tomcat specific due to the use of the

+    SSLSessionManager class. This is currently only available for the BIO and

+    NIO connectors, not the APR/native connector.

+  </p>

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/tribes/developers.html b/tomcat-uid/webapps/docs/tribes/developers.html
index bb76963..eb7f558 100644
--- a/tomcat-uid/webapps/docs/tribes/developers.html
+++ b/tomcat-uid/webapps/docs/tribes/developers.html
@@ -1,8 +1,108 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tribes - The Tomcat Cluster Communication Module (6.0.41) - Apache Tribes - Developers</title><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="Apache Tomcat" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="faq.html">3) FAQ</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="../api/org/apache/catalina/tribes/package-summary.html">JavaDoc</a></li></ul><p><strong>Apache Tribes Development</strong></p><ul><li><a href="membership.html">Membership</a></li><li><a href="transport.html">Transport</a></li><li><a href="interceptors.html">Interceptors</a></li><li><a href="status.html">Status</a></li><li><a href="developers.html">Developers</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tribes - The Tomcat Cluster Communication Module</h1><h2>Apache Tribes - Developers</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Developers"><strong>Developers</strong></a></font></td></tr><tr><td><blockquote>

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tribes - The Tomcat Cluster Communication Module (7.0.77) - Apache Tribes - Developers</title><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="Apache Tomcat" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="introduction.html">Tribes Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="faq.html">3) FAQ</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="../api/org/apache/catalina/tribes/package-summary.html">JavaDoc</a></li></ul><p><strong>Apache Tribes Development</strong></p><ul><li><a href="membership.html">Membership</a></li><li><a href="transport.html">Transport</a></li><li><a href="interceptors.html">Interceptors</a></li><li><a href="status.html">Status</a></li><li><a href="developers.html">Developers</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tribes - Developers</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Developers"><strong>Developers</strong></a></font></td></tr><tr><td><blockquote>

     <p>TODO</p>

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/tribes/developers.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/tribes/faq.html b/tomcat-uid/webapps/docs/tribes/faq.html
index f6d9119..b717795 100644
--- a/tomcat-uid/webapps/docs/tribes/faq.html
+++ b/tomcat-uid/webapps/docs/tribes/faq.html
@@ -1,8 +1,108 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tribes - The Tomcat Cluster Communication Module (6.0.41) - Apache Tribes - Frequently Asked Questions</title><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="Apache Tomcat" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="faq.html">3) FAQ</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="../api/org/apache/catalina/tribes/package-summary.html">JavaDoc</a></li></ul><p><strong>Apache Tribes Development</strong></p><ul><li><a href="membership.html">Membership</a></li><li><a href="transport.html">Transport</a></li><li><a href="interceptors.html">Interceptors</a></li><li><a href="status.html">Status</a></li><li><a href="developers.html">Developers</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tribes - The Tomcat Cluster Communication Module</h1><h2>Apache Tribes - Frequently Asked Questions</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Frequently Asked Questions"><!--()--></a><a name="Frequently_Asked_Questions"><strong>Frequently Asked Questions</strong></a></font></td></tr><tr><td><blockquote>

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tribes - The Tomcat Cluster Communication Module (7.0.77) - Apache Tribes - Frequently Asked Questions</title><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="Apache Tomcat" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="introduction.html">Tribes Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="faq.html">3) FAQ</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="../api/org/apache/catalina/tribes/package-summary.html">JavaDoc</a></li></ul><p><strong>Apache Tribes Development</strong></p><ul><li><a href="membership.html">Membership</a></li><li><a href="transport.html">Transport</a></li><li><a href="interceptors.html">Interceptors</a></li><li><a href="status.html">Status</a></li><li><a href="developers.html">Developers</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tribes - Frequently Asked Questions</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Frequently Asked Questions"><!--()--></a><a name="Frequently_Asked_Questions"><strong>Frequently Asked Questions</strong></a></font></td></tr><tr><td><blockquote>

     <p>TODO</p>

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/tribes/faq.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/tribes/interceptors.html b/tomcat-uid/webapps/docs/tribes/interceptors.html
index 7c6a835..6c07c0b 100644
--- a/tomcat-uid/webapps/docs/tribes/interceptors.html
+++ b/tomcat-uid/webapps/docs/tribes/interceptors.html
@@ -1,8 +1,108 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tribes - The Tomcat Cluster Communication Module (6.0.41) - Apache Tribes - Interceptors</title><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="Apache Tomcat" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="faq.html">3) FAQ</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="../api/org/apache/catalina/tribes/package-summary.html">JavaDoc</a></li></ul><p><strong>Apache Tribes Development</strong></p><ul><li><a href="membership.html">Membership</a></li><li><a href="transport.html">Transport</a></li><li><a href="interceptors.html">Interceptors</a></li><li><a href="status.html">Status</a></li><li><a href="developers.html">Developers</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tribes - The Tomcat Cluster Communication Module</h1><h2>Apache Tribes - Interceptors</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Interceptors"><strong>Interceptors</strong></a></font></td></tr><tr><td><blockquote>

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tribes - The Tomcat Cluster Communication Module (7.0.77) - Apache Tribes - Interceptors</title><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="Apache Tomcat" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="introduction.html">Tribes Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="faq.html">3) FAQ</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="../api/org/apache/catalina/tribes/package-summary.html">JavaDoc</a></li></ul><p><strong>Apache Tribes Development</strong></p><ul><li><a href="membership.html">Membership</a></li><li><a href="transport.html">Transport</a></li><li><a href="interceptors.html">Interceptors</a></li><li><a href="status.html">Status</a></li><li><a href="developers.html">Developers</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tribes - Interceptors</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Interceptors"><strong>Interceptors</strong></a></font></td></tr><tr><td><blockquote>

     <p>TODO</p>

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/tribes/interceptors.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/tribes/introduction.html b/tomcat-uid/webapps/docs/tribes/introduction.html
index 6b1fe01..a1d0fdd 100644
--- a/tomcat-uid/webapps/docs/tribes/introduction.html
+++ b/tomcat-uid/webapps/docs/tribes/introduction.html
@@ -1,7 +1,82 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tribes - The Tomcat Cluster Communication Module (6.0.41) - Apache Tribes - Introduction</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="Apache Tomcat" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="faq.html">3) FAQ</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="../api/org/apache/catalina/tribes/package-summary.html">JavaDoc</a></li></ul><p><strong>Apache Tribes Development</strong></p><ul><li><a href="membership.html">Membership</a></li><li><a href="transport.html">Transport</a></li><li><a href="interceptors.html">Interceptors</a></li><li><a href="status.html">Status</a></li><li><a href="developers.html">Developers</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tribes - The Tomcat Cluster Communication Module</h1><h2>Apache Tribes - Introduction</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tribes - The Tomcat Cluster Communication Module (7.0.77) - Apache Tribes - Introduction</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="Apache Tomcat" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="introduction.html">Tribes Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="faq.html">3) FAQ</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="../api/org/apache/catalina/tribes/package-summary.html">JavaDoc</a></li></ul><p><strong>Apache Tribes Development</strong></p><ul><li><a href="membership.html">Membership</a></li><li><a href="transport.html">Transport</a></li><li><a href="interceptors.html">Interceptors</a></li><li><a href="status.html">Status</a></li><li><a href="developers.html">Developers</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tribes - Introduction</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Quick_Start">Quick Start</a></li><li><a href="#What_is_Tribes">What is Tribes</a></li><li><a href="#Why_another_messaging_framework">Why another messaging framework</a></li><li><a href="#Feature_Overview">Feature Overview</a></li><li><a href="#Where_can_I_get_Tribes">Where can I get Tribes</a></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Quick Start"><!--()--></a><a name="Quick_Start"><strong>Quick Start</strong></a></font></td></tr><tr><td><blockquote>

 

@@ -17,7 +92,7 @@
     <li>Create a class that implements: <code>org.apache.catalina.tribes.ChannelListener</code></li>

     <li>Create a class that implements: <code>org.apache.catalina.tribes.MembershipListener</code></li>

     <li>Simple class to demonstrate how to send a message:

-      <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+      <div class="codeBox"><pre><code>

         //create a channel

         Channel myChannel = new GroupChannel();

 

@@ -40,8 +115,8 @@
         Member[] group = myChannel.getMembers();

 

         //send the message

-        channel.send(group,myMsg,Channel.SEND_OPTIONS_DEFAULT);

-      </pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+        myChannel.send(group,myMsg,Channel.SEND_OPTIONS_DEFAULT);

+      </code></pre></div>

     </li>

   </ul>

   <p>

@@ -112,9 +187,11 @@
   </p>

   <p>

     <b>Guaranteed Messaging</b><br>

-    In the default implementation of Tribes uses TCP for messaging. TCP already has guaranteed message delivery

+    In the default implementation of Tribes uses TCP or UDP for messaging. TCP already has guaranteed message delivery

     and flow control built in. I believe that the performance of Java TCP, will outperform an implementation of

-    Java/UDP/flow-control/message guarantee since the logic happens further down the stack.<br>

+    Java/UDP/flow-control/message guarantee since the logic happens further down the stack. UDP messaging has been added in for

+    sending messages over UDP instead of TCP when desired. The same guarantee scenarios as described below are still available

+    over UDP, however, when a UDP message is lost, it's considered failed.<br>

     Tribes supports both non-blocking and blocking IO operations. The recommended setting is to use non blocking

     as it promotes better parallelism when sending and receiving messages. The blocking implementation is available

     for those platforms where NIO is still a trouble child.

@@ -159,8 +236,8 @@
     message basis. Meaning, that your messages are not delivered based on some static configuration

     that remains fixed after the message framework has been started.<br>

     To give you an example of how powerful this feature is, I'll try to illustrate it with a simple example.

-    Imagine you need to send 10 different messages, you could send the the following way:

-    <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+    Imagine you need to send 10 different messages, you could send them the following way:

+    <div class="codeBox"><pre><code>

       Message_1 - asynchronous and fast, no guarantee required, fire and forget

       Message_2 - all-or-nothing, either all receivers get it, or none.

       Message_3 - encrypted and SYNC_ACK based

@@ -172,7 +249,7 @@
       Message_8 - RPC message, wait for the first reply

       Message_9 - RPC message, asynchronous, don't wait for a reply, collect them via a callback

       Message_10- sent to a member that is not part of this group

-    </pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    </code></pre></div>

     As you can imagine by now, these are just examples. The number of different semantics you can apply on a

     per-message-basis is almost limitless. Tribes allows you to set up to 28 different on a message

     and then configure Tribes to what flag results in what action on the message.<br>

@@ -224,10 +301,35 @@
   </p>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Where can I get Tribes"><!--()--></a><a name="Where_can_I_get_Tribes"><strong>Where can I get Tribes</strong></a></font></td></tr><tr><td><blockquote>

   <p>

-    Tribes ships as a module with Tomcat, and is released as part of the Apache Tomcat release.  

+    Tribes ships as a module with Tomcat, and is released as part of the Apache Tomcat release.

   </p>

 

 

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/tribes/introduction.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/tribes/membership.html b/tomcat-uid/webapps/docs/tribes/membership.html
index 9ee6cf0..4fb13eb 100644
--- a/tomcat-uid/webapps/docs/tribes/membership.html
+++ b/tomcat-uid/webapps/docs/tribes/membership.html
@@ -1,8 +1,108 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tribes - The Tomcat Cluster Communication Module (6.0.41) - Apache Tribes - Membership</title><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="Apache Tomcat" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="faq.html">3) FAQ</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="../api/org/apache/catalina/tribes/package-summary.html">JavaDoc</a></li></ul><p><strong>Apache Tribes Development</strong></p><ul><li><a href="membership.html">Membership</a></li><li><a href="transport.html">Transport</a></li><li><a href="interceptors.html">Interceptors</a></li><li><a href="status.html">Status</a></li><li><a href="developers.html">Developers</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tribes - The Tomcat Cluster Communication Module</h1><h2>Apache Tribes - Membership</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Membership"><strong>Membership</strong></a></font></td></tr><tr><td><blockquote>

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tribes - The Tomcat Cluster Communication Module (7.0.77) - Apache Tribes - Membership</title><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="Apache Tomcat" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="introduction.html">Tribes Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="faq.html">3) FAQ</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="../api/org/apache/catalina/tribes/package-summary.html">JavaDoc</a></li></ul><p><strong>Apache Tribes Development</strong></p><ul><li><a href="membership.html">Membership</a></li><li><a href="transport.html">Transport</a></li><li><a href="interceptors.html">Interceptors</a></li><li><a href="status.html">Status</a></li><li><a href="developers.html">Developers</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tribes - Membership</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Membership"><strong>Membership</strong></a></font></td></tr><tr><td><blockquote>

     <p>TODO</p>

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/tribes/membership.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/tribes/setup.html b/tomcat-uid/webapps/docs/tribes/setup.html
index 53e6e45..e8e5072 100644
--- a/tomcat-uid/webapps/docs/tribes/setup.html
+++ b/tomcat-uid/webapps/docs/tribes/setup.html
@@ -1,8 +1,108 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tribes - The Tomcat Cluster Communication Module (6.0.41) - Apache Tribes - Configuration</title><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="Apache Tomcat" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="faq.html">3) FAQ</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="../api/org/apache/catalina/tribes/package-summary.html">JavaDoc</a></li></ul><p><strong>Apache Tribes Development</strong></p><ul><li><a href="membership.html">Membership</a></li><li><a href="transport.html">Transport</a></li><li><a href="interceptors.html">Interceptors</a></li><li><a href="status.html">Status</a></li><li><a href="developers.html">Developers</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tribes - The Tomcat Cluster Communication Module</h1><h2>Apache Tribes - Configuration</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Configuration Overview"><!--()--></a><a name="Configuration_Overview"><strong>Configuration Overview</strong></a></font></td></tr><tr><td><blockquote>

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tribes - The Tomcat Cluster Communication Module (7.0.77) - Apache Tribes - Configuration</title><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="Apache Tomcat" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="introduction.html">Tribes Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="faq.html">3) FAQ</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="../api/org/apache/catalina/tribes/package-summary.html">JavaDoc</a></li></ul><p><strong>Apache Tribes Development</strong></p><ul><li><a href="membership.html">Membership</a></li><li><a href="transport.html">Transport</a></li><li><a href="interceptors.html">Interceptors</a></li><li><a href="status.html">Status</a></li><li><a href="developers.html">Developers</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tribes - Configuration</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Configuration Overview"><!--()--></a><a name="Configuration_Overview"><strong>Configuration Overview</strong></a></font></td></tr><tr><td><blockquote>

     <p>TODO</p>

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/tribes/setup.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/tribes/status.html b/tomcat-uid/webapps/docs/tribes/status.html
index c7d2d5e..67e3af0 100644
--- a/tomcat-uid/webapps/docs/tribes/status.html
+++ b/tomcat-uid/webapps/docs/tribes/status.html
@@ -1,8 +1,108 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tribes - The Tomcat Cluster Communication Module (6.0.41) - Apache Tribes - Status</title><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="Apache Tomcat" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="faq.html">3) FAQ</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="../api/org/apache/catalina/tribes/package-summary.html">JavaDoc</a></li></ul><p><strong>Apache Tribes Development</strong></p><ul><li><a href="membership.html">Membership</a></li><li><a href="transport.html">Transport</a></li><li><a href="interceptors.html">Interceptors</a></li><li><a href="status.html">Status</a></li><li><a href="developers.html">Developers</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tribes - The Tomcat Cluster Communication Module</h1><h2>Apache Tribes - Status</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Status"><strong>Status</strong></a></font></td></tr><tr><td><blockquote>

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tribes - The Tomcat Cluster Communication Module (7.0.77) - Apache Tribes - Status</title><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="Apache Tomcat" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="introduction.html">Tribes Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="faq.html">3) FAQ</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="../api/org/apache/catalina/tribes/package-summary.html">JavaDoc</a></li></ul><p><strong>Apache Tribes Development</strong></p><ul><li><a href="membership.html">Membership</a></li><li><a href="transport.html">Transport</a></li><li><a href="interceptors.html">Interceptors</a></li><li><a href="status.html">Status</a></li><li><a href="developers.html">Developers</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tribes - Status</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Status"><strong>Status</strong></a></font></td></tr><tr><td><blockquote>

     <p>TODO</p>

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/tribes/status.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/tribes/transport.html b/tomcat-uid/webapps/docs/tribes/transport.html
index 557c22e..dd689b7 100644
--- a/tomcat-uid/webapps/docs/tribes/transport.html
+++ b/tomcat-uid/webapps/docs/tribes/transport.html
@@ -1,8 +1,108 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tribes - The Tomcat Cluster Communication Module (6.0.41) - Apache Tribes - Transport</title><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="Apache Tomcat" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="faq.html">3) FAQ</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="../api/org/apache/catalina/tribes/package-summary.html">JavaDoc</a></li></ul><p><strong>Apache Tribes Development</strong></p><ul><li><a href="membership.html">Membership</a></li><li><a href="transport.html">Transport</a></li><li><a href="interceptors.html">Interceptors</a></li><li><a href="status.html">Status</a></li><li><a href="developers.html">Developers</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tribes - The Tomcat Cluster Communication Module</h1><h2>Apache Tribes - Transport</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Transport"><strong>Transport</strong></a></font></td></tr><tr><td><blockquote>

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tribes - The Tomcat Cluster Communication Module (7.0.77) - Apache Tribes - Transport</title><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="Apache Tomcat" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="introduction.html">Tribes Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="faq.html">3) FAQ</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="../api/org/apache/catalina/tribes/package-summary.html">JavaDoc</a></li></ul><p><strong>Apache Tribes Development</strong></p><ul><li><a href="membership.html">Membership</a></li><li><a href="transport.html">Transport</a></li><li><a href="interceptors.html">Interceptors</a></li><li><a href="status.html">Status</a></li><li><a href="developers.html">Developers</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tribes - Transport</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Transport"><strong>Transport</strong></a></font></td></tr><tr><td><blockquote>

     <p>TODO</p>

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="../comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/tribes/transport.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/virtual-hosting-howto.html b/tomcat-uid/webapps/docs/virtual-hosting-howto.html
index fa42f44..67bcefe 100644
--- a/tomcat-uid/webapps/docs/virtual-hosting-howto.html
+++ b/tomcat-uid/webapps/docs/virtual-hosting-howto.html
@@ -1,9 +1,84 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 6.0 (6.0.41) - Virtual Hosting and Tomcat</title><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - Virtual Hosting and Tomcat</title><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat 6.0</h1><h2>Virtual Hosting and Tomcat</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Virtual Hosting and Tomcat</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

 <ul><li><a href="#Assumptions">Assumptions</a></li><li><a href="#server.xml">server.xml</a></li><li><a href="#Webapps_Directory">Webapps Directory</a></li><li><a href="#Configuring_Your_Contexts">Configuring Your Contexts</a><ol><li><a href="#General">General</a></li><li><a href="#context.xml_-_approach__1">context.xml - approach #1</a></li><li><a href="#context.xml_-_approach__2">context.xml - approach #2</a></li><li><a href="#Further_Information">Further Information</a></li></ol></li></ul>

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Assumptions"><strong>Assumptions</strong></a></font></td></tr><tr><td><blockquote>

     <p>

@@ -14,19 +89,19 @@
     </p>

     <p>

       Also, this how-to uses Unix-style path separators and commands; if you're

-      on Windows modify accordingly. 

+      on Windows modify accordingly.

     </p>

   </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="server.xml"><strong>server.xml</strong></a></font></td></tr><tr><td><blockquote>

     <p>

       At the simplest, edit the <a href="config/engine.html">Engine</a> portion

       of your <code>server.xml</code> file to look like this:

     </p>

-    <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+    <div class="codeBox"><pre><code>

 &lt;Engine name="Catalina" defaultHost="ren"&gt;

     &lt;Host name="ren"    appBase="renapps"/&gt;

     &lt;Host name="stimpy" appBase="stimpyapps"/&gt;

 &lt;/Engine&gt;

-    </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    </code></pre></div>

     <p>

       Note that the directory structures under the appBase for each host should

       not overlap each other.

@@ -40,10 +115,10 @@
     <p>

       Create directories for each of the virtual hosts:

     </p>

-    <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+    <div class="codeBox"><pre><code>

 mkdir $CATALINA_HOME/renapps

 mkdir $CATALINA_HOME/stimpyapps

-    </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    </code></pre></div>

   </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Configuring Your Contexts"><!--()--></a><a name="Configuring_Your_Contexts"><strong>Configuring Your Contexts</strong></a></font></td></tr><tr><td><blockquote>

     <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="General"><strong>General</strong></a></font></td></tr><tr><td><blockquote>

       <p>Contexts are normally located underneath the appBase directory. For

@@ -73,10 +148,10 @@
         Create a structure under <code>$CATALINA_HOME/conf/Catalina</code>

         corresponding to your virtual hosts, e.g.:

       </p>

-      <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+      <div class="codeBox"><pre><code>

 mkdir $CATALINA_HOME/conf/Catalina/ren

 mkdir $CATALINA_HOME/conf/Catalina/stimpy

-      </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+      </code></pre></div>

       <p>

         Note that the ending directory name "Catalina" represents the

         <code>name</code> attribute of the

@@ -85,19 +160,19 @@
       <p>

         Now, for your default webapps, add:

       </p>

-      <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+      <div class="codeBox"><pre><code>

 $CATALINA_HOME/conf/Catalina/ren/ROOT.xml

 $CATALINA_HOME/conf/Catalina/stimpy/ROOT.xml

-      </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+      </code></pre></div>

       <p>

         If you want to use the Tomcat manager webapp for each host, you'll also

         need to add it here:

       </p>

-      <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+      <div class="codeBox"><pre><code>

 cd $CATALINA_HOME/conf/Catalina

 cp localhost/manager.xml ren/

 cp localhost/manager.xml stimpy/

-      </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+      </code></pre></div>

     </blockquote></td></tr></table>

     <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Further Information"><!--()--></a><a name="Further_Information"><strong>Further Information</strong></a></font></td></tr><tr><td><blockquote>

       <p>

@@ -105,6 +180,31 @@
         <a href="config/context.html">Context</a> element.

       </p>

     </blockquote></td></tr></table>

-  </blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+  </blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/virtual-hosting-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/web-socket-howto.html b/tomcat-uid/webapps/docs/web-socket-howto.html
new file mode 100644
index 0000000..8a121f5
--- /dev/null
+++ b/tomcat-uid/webapps/docs/web-socket-howto.html
@@ -0,0 +1,242 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - WebSocket How-To</title><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>WebSocket How-To</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Overview">Overview</a></li><li><a href="#Application_development">Application development</a></li><li><a href="#Production_usage">Production usage</a></li><li><a href="#Tomcat_WebSocket_specific_configuration">Tomcat WebSocket specific configuration</a></li><li><a href="#Deprecated_proprietary_API">Deprecated proprietary API</a></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Overview"><strong>Overview</strong></a></font></td></tr><tr><td><blockquote>

+<p>Tomcat provides support for WebSocket as defined by

+   <a href="http://tools.ietf.org/html/rfc6455">RFC 6455</a>.</p>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Application development"><!--()--></a><a name="Application_development"><strong>Application development</strong></a></font></td></tr><tr><td><blockquote>

+<p>Tomcat implements the Java WebSocket 1.1 API defined by <a href="http://www.jcp.org/en/jsr/detail?id=356">JSR-356</a>.</p>

+

+<p>There are several example applications that demonstrate how the WebSocket API

+   can be used. You will need to look at both the client side <a href="http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/examples/websocket/">

+   HTML</a> and the server side <a href="http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/examples/WEB-INF/classes/websocket/">

+   code</a>.</p>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Production usage"><!--()--></a><a name="Production_usage"><strong>Production usage</strong></a></font></td></tr><tr><td><blockquote>

+<p>Although the WebSocket implementation does work with any of the HTTP

+connectors, it is not recommended to the WebSocket with the BIO HTTP connector

+as the typical uses of WebSocket (large numbers of mostly idle connections) is

+not a good fit for the HTTP BIO connector which requires that one thread is

+allocated per connection regardless of whether or not the connection is idle.

+</p>

+

+<p>It has been reported (<a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56304">56304</a>) that Linux can take large numbers of

+minutes to report dropped connections. When using WebSocket with the BIO HTTP

+connector this can result in threads blocking on writes for this period. This is

+likely to be undesirable. The time taken for the connection to be reported as

+dropped can be reduced by using the kernel network parameter

+<code>/proc/sys/net/ipv4/tcp_retries2</code>. Alternatively, one of the other

+HTTP connectors may be used as they utilise non-blocking IO enabling Tomcat to

+implement its own timeout mechanism to handle these cases.</p>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat WebSocket specific configuration"><!--()--></a><a name="Tomcat_WebSocket_specific_configuration"><strong>Tomcat WebSocket specific configuration</strong></a></font></td></tr><tr><td><blockquote>

+<p>The JSR-356 Java WebSocket 1.1 implementation is only available when Tomcat

+   is running on Java 7 or later.</p>

+

+<p>Tomcat provides a number of Tomcat specific configuration options for

+   WebSocket. It is anticipated that these will be absorbed into the WebSocket

+   specification over time.</p>

+

+<p>The write timeout used when sending WebSocket messages in blocking mode

+   defaults to 20000 milliseconds (20 seconds). This may be changed by setting

+   the property <code>org.apache.tomcat.websocket.BLOCKING_SEND_TIMEOUT</code>

+   in the user properties collection attached to the WebSocket session. The

+   value assigned to this property should be a <code>Long</code> and represents

+   the timeout to use in milliseconds. For an infinite timeout, use

+   <code>-1</code>.</p>

+

+<p>If the application does not define a <code>MessageHandler.Partial</code> for

+   incoming binary messages, any incoming binary messages must be buffered so

+   the entire message can be delivered in a single call to the registered

+   <code>MessageHandler.Whole</code> for binary messages. The default buffer

+   size for binary messages is 8192 bytes. This may be changed for a web

+   application by setting the servlet context initialization parameter

+   <code>org.apache.tomcat.websocket.binaryBufferSize</code> to the desired

+   value in bytes.</p>

+

+<p>If the application does not define a <code>MessageHandler.Partial</code> for

+   incoming text messages, any incoming text messages must be buffered so the

+   entire message can be delivered in a single call to the registered

+   <code>MessageHandler.Whole</code> for text messages. The default buffer size

+   for text messages is 8192 bytes. This may be changed for a web application by

+   setting the servlet context initialization parameter

+   <code>org.apache.tomcat.websocket.textBufferSize</code> to the desired value

+   in bytes.</p>

+

+<p>The Java WebSocket specification 1.0 does not permit programmatic deployment

+   after the first endpoint has started a WebSocket handshake. By default,

+   Tomcat continues to permit additional programmatic deployment. This

+   behavior is controlled by the

+   <code>org.apache.tomcat.websocket.noAddAfterHandshake</code> servlet context

+   initialization parameter. The default may be changed by setting the

+   <code>org.apache.tomcat.websocket.STRICT_SPEC_COMPLIANCE</code> system

+   property to <code>true</code> but any explicit setting on the servlet context

+   will always take priority.</p>

+

+<p>The Java WebSocket 1.0 specification requires that callbacks for

+   asynchronous writes are performed on a different thread to the thread that

+   initiated the write. Since the container thread pool is not exposed via the

+   Servlet API, the WebSocket implementation has to provide its own thread pool.

+   This thread pool is controlled by the following servlet context

+   initialization parameters:</p>

+   <ul>

+     <li><code>org.apache.tomcat.websocket.executorCoreSize</code>: The core

+         size of the executor thread pool. If not set, the default of 0 (zero)

+         is used. Note that the maximum permitted size of the executor thread

+         pool is hard coded to <code>Integer.MAX_VALUE</code> which effectively

+         means it is unlimited.</li>

+     <li><code>org.apache.tomcat.websocket.executorKeepAliveTimeSeconds</code>:

+         The maximum time an idle thread will remain in the executor thread pool

+         until it is terminated. If not specified, the default of 60 seconds is

+         used.</li>

+   </ul>

+

+<p>When using the WebSocket client to connect to server endpoints, the timeout

+   for IO operations while establishing the connection is controlled by the

+   <code>userProperties</code> of the provided

+   <code>javax.websocket.ClientEndpointConfig</code>. The property is

+   <code>org.apache.tomcat.websocket.IO_TIMEOUT_MS</code> and is the

+   timeout as a <code>String</code> in milliseconds. The default is 5000 (5

+   seconds).</p>

+

+<p>When using the WebSocket client to connect to secure server endpoints, the

+   client SSL configuration is controlled by the <code>userProperties</code>

+   of the provided <code>javax.websocket.ClientEndpointConfig</code>. The

+   following user properties are supported:</p>

+   <ul>

+     <li><code>org.apache.tomcat.websocket.SSL_CONTEXT</code></li>

+     <li><code>org.apache.tomcat.websocket.SSL_PROTOCOLS</code></li>

+     <li><code>org.apache.tomcat.websocket.SSL_TRUSTSTORE</code></li>

+     <li><code>org.apache.tomcat.websocket.SSL_TRUSTSTORE_PWD</code></li>

+   </ul>

+   <p>The default truststore password is <code>changeit</code>.</p>

+   <p>If the <code>org.apache.tomcat.websocket.SSL_CONTEXT</code> property is

+      set then the <code>org.apache.tomcat.websocket.SSL_TRUSTSTORE</code> and

+      <code>org.apache.tomcat.websocket.SSL_TRUSTSTORE_PWD</code> properties

+      will be ignored.</p>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deprecated proprietary API"><!--()--></a><a name="Deprecated_proprietary_API"><strong>Deprecated proprietary API</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>Prior to the development of JRS-356, Tomcat provided a proprietary WebSocket

+   API. This API has been deprecated in Tomcat 7 and will be removed in Tomcat

+   8. There is unlikely to be any further development of this proprietary API

+   apart from bug fixes.</p>

+

+<p>For information on this API, please see the Javadoc for the

+   <a href="api/index.html?org/apache/catalina/websocket/package-summary.html">

+   <code>org.apache.catalina.websocket</code></a> package. The Javadoc

+   pages are not included with Tomcat binary distributions. To view them

+   locally you would have to download and install "Full documentation"

+   distribution, or build it from sources. You can

+   also read this on the Apache Tomcat web site. Start with the

+   <a href="api/index.html?org/apache/catalina/websocket/WebSocketServlet.html">

+   <code>WebSocketServlet</code></a> class.</p>

+

+<p>There are also several example applications that demonstrate how the

+   WebSocket API can be used. You'll need to look at both the client side <a href="http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/examples/websocket-deprecated/">

+   HTML</a> and the server side <a href="http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/examples/WEB-INF/classes/websocket/tc7/">

+   code</a>.</p>

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/web-socket-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/examples/jsp/chat/login.jsp b/tomcat-uid/webapps/docs/websocketapi/index.html
similarity index 60%
copy from tomcat-uid/webapps/examples/jsp/chat/login.jsp
copy to tomcat-uid/webapps/docs/websocketapi/index.html
index e1c6496..1e53ca5 100644
--- a/tomcat-uid/webapps/examples/jsp/chat/login.jsp
+++ b/tomcat-uid/webapps/docs/websocketapi/index.html
@@ -1,8 +1,5 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

-<%@page contentType="text/html; charset=UTF-8" %>

-<html>

 <!--

- Licensed to the Apache Software Foundation (ASF) under one or more

+  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

@@ -17,17 +14,21 @@
   See the License for the specific language governing permissions and

   limitations under the License.

 -->

-<head>

-   <title>JSP Chat</title>

+<!DOCTYPE html>

+<html>

+    <head>

+    <meta charset="UTF-8" />

+    <title>API docs</title>

 </head>

 

-<body bgcolor="#FFFFFF">

+<body>

 

-<form method="POST" action='chat' target="_top" name="loginForm">

-<input type="hidden" name="action" value="login">

-Nickname: <input type="text" name="nickname">

-<input type="submit">

-</form>

+The WebSocket Javadoc is not installed by default. Download and install

+the "fulldocs" package to get it.

+

+You can also access the javadoc online in the Tomcat

+<a href="http://tomcat.apache.org/tomcat-7.0-doc/">

+documentation bundle</a>.

 

 </body>

 </html>

diff --git a/tomcat-uid/webapps/docs/windows-auth-howto.html b/tomcat-uid/webapps/docs/windows-auth-howto.html
new file mode 100644
index 0000000..ce082da
--- /dev/null
+++ b/tomcat-uid/webapps/docs/windows-auth-howto.html
@@ -0,0 +1,398 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - Windows Authentication How-To</title><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Windows Authentication How-To</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Overview">Overview</a></li><li><a href="#Built-in_Tomcat_support">Built-in Tomcat support</a><ol><li><a href="#Domain_Controller">Domain Controller</a></li><li><a href="#Tomcat_instance_(Windows_server)">Tomcat instance (Windows server)</a></li><li><a href="#Tomcat_instance_(Linux_server)">Tomcat instance (Linux server)</a></li><li><a href="#Web_application">Web application</a></li><li><a href="#Client">Client</a></li><li><a href="#References">References</a></li></ol></li><li><a href="#Third_party_libraries">Third party libraries</a><ol><li><a href="#Waffle">Waffle</a></li><li><a href="#Spring_Security_-_Kerberos_Extension">Spring Security - Kerberos Extension</a></li><li><a href="#SPNEGO_project_at_SourceForge">SPNEGO project at SourceForge</a></li><li><a href="#Jespa">Jespa</a></li></ol></li><li><a href="#Reverse_proxies">Reverse proxies</a><ol><li><a href="#Microsoft_IIS">Microsoft IIS</a></li><li><a href="#Apache_httpd">Apache httpd</a></li></ol></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Overview"><strong>Overview</strong></a></font></td></tr><tr><td><blockquote>

+<p>Integrated Windows authentication is most frequently used within intranet

+environments since it requires that the server performing the authentication and

+the user being authenticated are part of the same domain. For the user to be

+authenticated automatically, the client machine used by the user must also be

+part of the domain.</p>

+<p>There are several options for implementing integrated Windows authentication

+with Apache Tomcat. They are:

+<ul>

+<li>Built-in Tomcat support.</li>

+<li>Use a third party library such as Waffle.</li>

+<li>Use a reverse proxy that supports Windows authentication to perform the

+authentication step such as IIS or httpd.</li>

+</ul>

+The configuration of each of these options is discussed in the following

+sections.</p>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Built-in Tomcat support"><!--()--></a><a name="Built-in_Tomcat_support"><strong>Built-in Tomcat support</strong></a></font></td></tr><tr><td><blockquote>

+<p>Kerberos (the basis for integrated Windows authentication) requires careful

+configuration. If the steps in this guide are followed exactly, then a working

+configuration will result. It is important that the steps below are followed

+exactly. There is very little scope for flexibility in the configuration. From

+the testing to date it is known that:</p>

+<ul>

+<li>The host name used to access the Tomcat server must match the host name in

+the SPN exactly else authentication will fail. A checksum error may be reported

+in the debug logs in this case.</li>

+<li>The client must be of the view that the server is part of the local trusted

+intranet.</li>

+<li>The SPN must be HTTP/&lt;hostname&gt; and it must be exactly the same in all

+the places it is used.</li>

+<li>The port number must not be included in the SPN.</li>

+<li>No more than one SPN may be mapped to a domain user.</li>

+<li>Tomcat must run as the domain account with which the SPN has been associated

+or as domain admin. It is <strong>NOT</strong> recommended to run Tomcat under a

+domain admin user.</li>

+<li>The domain name (<code>DEV.LOCAL</code>) is not case sensitive when used in

+the ktpass command, nor when used in jaas.conf</li>

+<li>The domain must be specified when using the ktpass command</li>

+</ul>

+<p>There are four components to the configuration of the built-in Tomcat

+support for Windows authentication. The domain controller, the server hosting

+Tomcat, the web application wishing to use Windows authentication and the client

+machine. The following sections describe the configuration required for each

+component.</p>

+<p>The names of the three machines used in the configuration examples below are

+win-dc01.dev.local (the domain controller), win-tc01.dev.local (the Tomcat

+instance) and win-pc01.dev.local (client). All are members of the DEV.LOCAL

+domain.</p>

+<p>Note: In order to use the passwords in the steps below, the domain password

+policy had to be relaxed. This is not recommended for production environments.

+</p>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Domain Controller"><!--()--></a><a name="Domain_Controller"><strong>Domain Controller</strong></a></font></td></tr><tr><td><blockquote>

+  <p>These steps assume that the server has already been configured to act as a

+  domain controller. Configuration of a Windows server as a domain controller is

+  outside the scope of this how-to. The steps to configure the domain controller

+  to enable Tomcat to support Windows authentication are as follows:

+  </p>

+  <ul>

+  <li>Create a domain user that will be mapped to the service name used by the

+  Tomcat server. In this how-to, this user is called <code>tc01</code> and has a

+  password of <code>tc01pass</code>.</li>

+  <li>Map the service principal name (SPN) to the user account. SPNs take the

+  form <code>

+  &lt;service class&gt;/&lt;host&gt;:&lt;port&gt;/&lt;service name&gt;</code>.

+  The SPN used in this how-to is <code>HTTP/win-tc01.dev.local</code>. To

+  map the user to the SPN, run the following:

+  <div class="codeBox"><pre><code>setspn -A HTTP/win-tc01.dev.local tc01</code></pre></div>

+  </li>

+  <li>Generate the keytab file that the Tomcat server will use to authenticate

+  itself to the domain controller. This file contains the Tomcat private key for

+  the service provider account and should be protected accordingly. To generate

+  the file, run the following command (all on a single line):

+  <div class="codeBox"><pre><code>ktpass /out c:\tomcat.keytab /mapuser tc01@DEV.LOCAL

+          /princ HTTP/win-tc01.dev.local@DEV.LOCAL

+          /pass tc01pass /kvno 0</code></pre></div></li>

+  <li>Create a domain user to be used on the client. In this how-to the domain

+  user is <code>test</code> with a password of <code>testpass</code>.</li>

+  </ul>

+  <p>The above steps have been tested on a domain controller running Windows

+  Server 2008 R2 64-bit Standard using the Windows Server 2003 functional level

+  for both the forest and the domain.

+  </p>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat instance (Windows server)"><!--()--></a><a name="Tomcat_instance_(Windows_server)"><strong>Tomcat instance (Windows server)</strong></a></font></td></tr><tr><td><blockquote>

+  <p>These steps assume that Tomcat and a Java 6 JDK/JRE have already been

+  installed and configured and that Tomcat is running as the tc01@DEV.LOCAL

+  user. The steps to configure the Tomcat instance for Windows authentication

+  are as follows:

+  </p>

+  <ul>

+  <li>Copy the <code>tomcat.keytab</code> file created on the domain controller

+  to <code>$CATALINA_BASE/conf/tomcat.keytab</code>.</li>

+  <li>Create the kerberos configuration file

+  <code>$CATALINA_BASE/conf/krb5.ini</code>. The file used in this how-to

+  contained:<div class="codeBox"><pre><code>[libdefaults]

+default_realm = DEV.LOCAL

+default_keytab_name = FILE:c:\apache-tomcat-7.0.x\conf\tomcat.keytab

+default_tkt_enctypes = rc4-hmac,aes256-cts-hmac-sha1-96,aes128-cts-hmac-sha1-96

+default_tgs_enctypes = rc4-hmac,aes256-cts-hmac-sha1-96,aes128-cts-hmac-sha1-96

+forwardable=true

+

+[realms]

+DEV.LOCAL = {

+        kdc = win-dc01.dev.local:88

+}

+

+[domain_realm]

+dev.local= DEV.LOCAL

+.dev.local= DEV.LOCAL</code></pre></div>

+  The location of this file can be changed by setting the

+  <code>java.security.krb5.conf</code> system property.</li>

+  <li>Create the JAAS login configuration file

+  <code>$CATALINA_BASE/conf/jaas.conf</code>. The file used in this how-to

+  contained:<div class="codeBox"><pre><code>com.sun.security.jgss.krb5.initiate {

+    com.sun.security.auth.module.Krb5LoginModule required

+    doNotPrompt=true

+    principal="HTTP/win-tc01.dev.local@DEV.LOCAL"

+    useKeyTab=true

+    keyTab="c:/apache-tomcat-7.0.x/conf/tomcat.keytab"

+    storeKey=true;

+};

+

+com.sun.security.jgss.krb5.accept {

+    com.sun.security.auth.module.Krb5LoginModule required

+    doNotPrompt=true

+    principal="HTTP/win-tc01.dev.local@DEV.LOCAL"

+    useKeyTab=true

+    keyTab="c:/apache-tomcat-7.0.x/conf/tomcat.keytab"

+    storeKey=true;

+};</code></pre></div>

+  The location of this file can be changed by setting the

+  <code>java.security.auth.login.config</code> system property. The LoginModule

+  used is a JVM specific one so ensure that the LoginModule specified matches

+  the JVM being used. The name of the login configuration must match the

+  value used by the <a href="config/valve.html#SPNEGO_Valve">authentication

+  valve</a>.</li>

+  </ul>

+  <p>The SPNEGO authenticator will work with any <a href="config/realm.html">

+  Realm</a> but if used with the JNDI Realm, by default the JNDI Realm will use

+  the user's delegated credentials to connect to the Active Directory.

+  </p>

+  <p>The above steps have been tested on a Tomcat server running Windows Server

+  2008 R2 64-bit Standard with an Oracle 1.6.0_24 64-bit JDK.</p>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat instance (Linux server)"><!--()--></a><a name="Tomcat_instance_(Linux_server)"><strong>Tomcat instance (Linux server)</strong></a></font></td></tr><tr><td><blockquote>

+  <p>This was tested with:</p>

+  <ul>

+  <li>Java 1.7.0, update 45, 64-bit</li>

+  <li>Ubuntu Server 12.04.3 LTS 64-bit</li>

+  <li>Tomcat 8.0.x (r1546570)</li>

+  </ul>

+  <p>It should work with any Tomcat 7 release from 7.0.12 onwards although it is

+  recommended that the latest stable release is used.</p>

+  <p>The configuration is the same as for Windows but with the following

+  changes:</p>

+  <ul>

+  <li>The Linux server does not have to be part of the Windows domain.</li>

+  <li>The path to the keytab file in krb5.ini and jass.conf should be updated

+      to reflect the path to the keytab file on the Linux server using Linux

+      style file paths (e.g. /usr/local/tomcat/...).</li>

+  </ul>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Web application"><!--()--></a><a name="Web_application"><strong>Web application</strong></a></font></td></tr><tr><td><blockquote>

+  <p>The web application needs to be configured to the use Tomcat specific

+  authentication method of <code>SPNEGO</code> (rather than BASIC etc.) in

+  web.xml. As with the other authenticators, behaviour can be customised by

+  explicitly configuring the <a href="config/valve.html#SPNEGO_Valve">

+  authentication valve</a> and setting attributes on the Valve.</p>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Client"><strong>Client</strong></a></font></td></tr><tr><td><blockquote>

+  <p>The client must be configured to use Kerberos authentication. For Internet

+  Explorer this means making sure that the Tomcat instance is in the "Local

+  intranet" security domain and that it is configured (Tools &gt; Internet

+  Options &gt; Advanced) with integrated Windows authentication enabled. Note that

+  this <strong>will not</strong> work if you use the same machine for the client

+  and the Tomcat instance as Internet Explorer will use the unsupported NTLM

+  protocol.</p>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="References"><strong>References</strong></a></font></td></tr><tr><td><blockquote>

+  <p>Correctly configuring Kerberos authentication can be tricky. The following

+  references may prove helpful. Advice is also always available from the

+  <a href="http://tomcat.apache.org/lists.html#tomcat-users">Tomcat users

+  mailing list</a>.</p>

+  <ol>

+  <li><a href="http://www.adopenstatic.com/cs/blogs/ken/archive/2006/10/19/512.aspx">

+      IIS and Kerberos</a></li>

+  <li><a href="http://spnego.sourceforge.net/index.html">

+      SPNEGO project at SourceForge</a></li>

+  <li><a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jgss/tutorials/index.html">

+      Oracle JGSS tutorial</a></li>

+  <li><a href="https://cwiki.apache.org/confluence/display/GMOxDOC21/Using+SPNEGO+in+Geronimo#UsingSPNEGOinGeronimo-SettinguptheDomainControllerMachine">

+      Geronimo configuration for Windows authentication</a></li>

+  <li><a href="http://blogs.msdn.com/b/openspecification/archive/2010/11/17/encryption-type-selection-in-kerberos-exchanges.aspx">

+      Encryption Selection in Kerberos Exchanges</a></li>

+  <li><a href="http://support.microsoft.com/kb/977321">Supported Kerberos Cipher

+      Suites</a></li>

+  </ol>

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Third party libraries"><!--()--></a><a name="Third_party_libraries"><strong>Third party libraries</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Waffle"><strong>Waffle</strong></a></font></td></tr><tr><td><blockquote>

+  <p>Full details of this solution can be found through the

+  <a href="http://waffle.codeplex.com/" rel="nofollow">Waffle web site</a>. The

+  key features are:</p>

+  <ul>

+  <li>Drop-in solution</li>

+  <li>Simple configuration (no JAAS or Kerberos keytab configuration required)

+  </li>

+  <li>Uses a native library</li>

+  </ul>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Spring Security - Kerberos Extension"><!--()--></a><a name="Spring_Security_-_Kerberos_Extension"><strong>Spring Security - Kerberos Extension</strong></a></font></td></tr><tr><td><blockquote>

+  <p>Full details of this solution can be found through the

+  <a href="http://static.springsource.org/spring-security/site/extensions/krb/index.html" rel="nofollow"> Kerberos extension web site</a>. The key features are:</p>

+  <ul>

+  <li>Extension to Spring Security</li>

+  <li>Requires a Kerberos keytab file to be generated</li>

+  <li>Pure Java solution</li>

+  </ul>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="SPNEGO project at SourceForge"><!--()--></a><a name="SPNEGO_project_at_SourceForge"><strong>SPNEGO project at SourceForge</strong></a></font></td></tr><tr><td><blockquote>

+  <p>Full details of this solution can be found through the

+  <a href="http://spnego.sourceforge.net/index.html/" rel="nofollow">project

+  site</a>. The key features are:</p>

+  <ul>

+  <li>Uses Kerberos</li>

+  <li>Pure Java solution</li>

+  </ul>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Jespa"><strong>Jespa</strong></a></font></td></tr><tr><td><blockquote>

+  <p>Full details of this solution can be found through the

+  <a href="http://www.ioplex.com/" rel="nofollow">project web site</a>The key

+  features are:</p>

+  <ul>

+  <li>Pure Java solution</li>

+  <li>Advanced Active Directory integration</li>

+  </ul>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Reverse proxies"><!--()--></a><a name="Reverse_proxies"><strong>Reverse proxies</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Microsoft IIS"><!--()--></a><a name="Microsoft_IIS"><strong>Microsoft IIS</strong></a></font></td></tr><tr><td><blockquote>

+  <p>There are three steps to configuring IIS to provide Windows authentication.

+  They are:</p>

+  <ol>

+  <li>Configure IIS as a reverse proxy for Tomcat (see the

+  <a href="http://tomcat.apache.org/connectors-doc/webserver_howto/iis.html">

+  IIS Web Server How-To)</a>.</li>

+  <li>Configure IIS to use Windows authentication</li>

+  <li>Configure Tomcat to use the authentication user information from IIS by

+  setting the tomcatAuthentication attribute on the <a href="config/ajp.html">

+  AJP connector</a> to <code>false</code>. Alternatively, set the

+  tomcatAuthorization attribute to <code>true</code> to allow IIS to

+  authenticate, while Tomcat performs the authorization.</li>

+  </ol>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Apache httpd"><!--()--></a><a name="Apache_httpd"><strong>Apache httpd</strong></a></font></td></tr><tr><td><blockquote>

+  <p>Apache httpd does not support Windows authentication out of the box but

+  there are a number of third-party modules that can be used. These include:</p>

+  <ol>

+  <li><a href="http://sourceforge.net/projects/mod-auth-sspi/" rel="nofollow">mod_auth_sspi</a> for use on Windows platforms.</li>

+  <li><a href="http://adldap.sourceforge.net/wiki/doku.php?id=mod_auth_ntlm_winbind" rel="nofollow">mod_auth_ntlm_winbind</a> for non-Windows platforms. Known to

+  work with httpd 2.0.x on 32-bit platforms. Some users have reported stability

+  issues with both httpd 2.2.x builds and 64-bit Linux builds.</li>

+  </ol>

+  <p>There are three steps to configuring httpd to provide Windows

+  authentication. They are:</p>

+  <ol>

+  <li>Configure httpd as a reverse proxy for Tomcat (see the

+  <a href="http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html">

+  Apache httpd Web Server How-To)</a>.</li>

+  <li>Configure httpd to use Windows authentication</li>

+  <li>Configure Tomcat to use the authentication user information from httpd by

+  setting the tomcatAuthentication attribute on the <a href="config/ajp.html">

+  AJP connector</a> to <code>false</code>.</li>

+  </ol>

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/windows-auth-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/docs/windows-service-howto.html b/tomcat-uid/webapps/docs/windows-service-howto.html
index e211f20..2c2c257 100644
--- a/tomcat-uid/webapps/docs/windows-service-howto.html
+++ b/tomcat-uid/webapps/docs/windows-service-howto.html
@@ -1,68 +1,144 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 6.0 (6.0.41) - Windows service HOW-TO</title><meta name="author" content="Mladen Turk"><style type="text/css" media="print">

-			.noPrint {display: none;}

-			td#mainBody {width: 100%;}

-		</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - Windows service HOW-TO</title><meta name="author" content="Mladen Turk"><style type="text/css" media="print">

+    .noPrint {display: none;}

+    td#mainBody {width: 100%;}

+</style><style type="text/css">

+code {background-color:rgb(224,255,255);padding:0 0.1em;}

+code.attributeName, code.propertyName {background-color:transparent;}

+

+

+table {

+  border-collapse: collapse;

+  text-align: left;

+}

+table *:not(table) {

+  /* Prevent border-collapsing for table child elements like <div> */

+  border-collapse: separate;

+}

+

+th {

+  text-align: left;

+}

+

+

+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {

+  background-color: transparent;

+}

+div.codeBox {

+  overflow: auto;

+  margin: 1em 0;

+}

+div.codeBox pre {

+  margin: 0;

+  padding: 4px;

+  border: 1px solid #999;

+  border-radius: 5px;

+  background-color: #eff8ff;

+  display: table; /* To prevent <pre>s from taking the complete available width. */

+  /*

+  When it is officially supported, use the following CSS instead of display: table

+  to prevent big <pre>s from exceeding the browser window:

+  max-width: available;

+  width: min-content;

+  */

+}

+

+div.codeBox pre.wrap {

+  white-space: pre-wrap;

+}

+

+

+table.defaultTable tr, table.detail-table tr {

+    border: 1px solid #CCC;

+}

+

+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {

+    background-color: #FAFBFF;

+}

+

+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {

+    background-color: #EEEFFF;

+}

+

+table.defaultTable th, table.detail-table th {

+  background-color: #88b;

+  color: #fff;

+}

+

+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {

+  padding: 5px 8px;

+}

+

+

+p.notice {

+    border: 1px solid rgb(255, 0, 0);

+    background-color: rgb(238, 238, 238);

+    color: rgb(0, 51, 102);

+    padding: 0.5em;

+    margin: 1em 2em 1em 1em;

+}

+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

       The Apache Tomcat Servlet/JSP Container

-    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat 6.0</h1><h2>Windows service HOW-TO</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

-<ul><li><a href="#Tomcat6_service_application">Tomcat6 service application</a></li><li><a href="#Tomcat6w_monitor_application">Tomcat6w monitor application</a></li><li><a href="#Command_line_arguments">Command line arguments</a></li><li><a href="#Command_line_parameters">Command line parameters</a></li><li><a href="#Installing_services">Installing services</a></li><li><a href="#Updating_services">Updating services</a></li><li><a href="#Removing_services">Removing services</a></li><li><a href="#Debugging_services">Debugging services</a></li></ul>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat6 service application"><!--()--></a><a name="Tomcat6_service_application"><strong>Tomcat6 service application</strong></a></font></td></tr><tr><td><blockquote>

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Windows service HOW-TO</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Tomcat_service_application">Tomcat service application</a></li><li><a href="#Tomcat_monitor_application">Tomcat monitor application</a></li><li><a href="#Command_line_arguments">Command line arguments</a></li><li><a href="#Command_line_parameters">Command line parameters</a></li><li><a href="#Installing_services">Installing services</a></li><li><a href="#Updating_services">Updating services</a></li><li><a href="#Removing_services">Removing services</a></li><li><a href="#Debugging_services">Debugging services</a></li><li><a href="#Multiple_Instances">Multiple Instances</a></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat service application"><!--()--></a><a name="Tomcat_service_application"><strong>Tomcat service application</strong></a></font></td></tr><tr><td><blockquote>

 <p>

-    <b>Tomcat6</b> is a service application for running Tomcat6 as NT service.

+    <b>Tomcat7</b> is a service application for running Tomcat

+    7 as a Windows service.

 </p>

-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat6w monitor application"><!--()--></a><a name="Tomcat6w_monitor_application"><strong>Tomcat6w monitor application</strong></a></font></td></tr><tr><td><blockquote>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat monitor application"><!--()--></a><a name="Tomcat_monitor_application"><strong>Tomcat monitor application</strong></a></font></td></tr><tr><td><blockquote>

 <p>

-    <b>Tomcat6w</b> is a GUI application for monitoring and configuring Tomcat

-    services.

-</p>    

+    <b>Tomcat7w</b> is a GUI application for monitoring and

+    configuring Tomcat services.

+</p>

     <p>The available command line options are:</p>

-<p> 

-    <table>

-    <tr><th>//ES//</th>

+

+    <table class="defaultTable">

+    <tr><td><b>//ES//</b></td>

         <td>Edit service configuration</td>

         <td>This is the default operation. It is called if the no option is

             provided but the executable is renamed to <b>servicenameW.exe</b></td>

     </tr>

-    <tr><th>//MS//</th>

+    <tr><td><b>//MS//</b></td>

         <td>Monitor service</td>

         <td>Put the icon in the system tray</td>

     </tr>

     </table>

-</p>

+

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Command line arguments"><!--()--></a><a name="Command_line_arguments"><strong>Command line arguments</strong></a></font></td></tr><tr><td><blockquote>

 <p>

     Each command line directive is in the form of <b>//XX//ServiceName</b>

 </p>

     <p>The available command line options are:</p>

-<p> 

-    <table>

-    <tr><th>//TS//</th>

+

+    <table class="defaultTable">

+    <tr><td><b>//TS//</b></td>

         <td>Run the service as console application</td>

         <td>This is the default operation. It is called if the no option is

             provided. The ServiceName is the name of the executable without

-            exe suffix, meaning Tomcat6</td>

+            exe suffix, meaning Tomcat7</td>

     </tr>

-    <tr><th>//RS//</th>

+    <tr><td><b>//RS//</b></td>

         <td>Run the service</td>

         <td>Called only from ServiceManager</td>

     </tr>

-    <tr><th>//SS//</th>

+    <tr><td><b>//SS//</b></td>

         <td>Stop the service</td>

         <td></td>

     </tr>

-    <tr><th>//US//</th>

+    <tr><td><b>//US//</b></td>

         <td>Update service parameters</td>

         <td></td>

     </tr>

-    <tr><th>//IS//</th>

+    <tr><td><b>//IS//</b></td>

         <td>Install service</td>

         <td></td>

     </tr>

-    <tr><th>//DS//</th>

+    <tr><td><b>//DS//</b></td>

         <td>Delete service</td>

         <td>Stops the service if running</td>

-    </tr>        

+    </tr>

     </table>

-</p> 

+

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Command line parameters"><!--()--></a><a name="Command_line_parameters"><strong>Command line parameters</strong></a></font></td></tr><tr><td><blockquote>

 <p>

     Each command parameter is prefixed with <b>--</b>.

@@ -70,20 +146,19 @@
     be appended to the existing option.

     If the environment variable with the same name as command line parameter but

     prefixed with <code>PR_</code> exists it will take precedence.

-    For example:

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>set PR_CLASSPATH=xx.jar</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-</p>    

-<p>is equivalent to providing

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>--Classpath=xx.jar</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-</p>

+    For example:</p>

+<div class="codeBox"><pre><code>set PR_CLASSPATH=xx.jar</code></pre></div>

+

+<p>is equivalent to providing</p>

+<div class="codeBox"><pre><code>--Classpath=xx.jar</code></pre></div>

 <p> as command line parameter.</p>

-<p> 

-    <table>

+

+    <table class="defaultTable">

     <tr>

     <th>ParameterName</th>

-	<th>Default</th>

-	<th>Description</th>

-	</tr> 

+    <th>Default</th>

+    <th>Description</th>

+    </tr>

     <tr>

     <td>--Description</td>

     <td></td>

@@ -123,8 +198,8 @@
     <td>--User</td>

     <td></td>

     <td>User account used for running executable. It is used only for

-    	StartMode <b>java</b> or <b>exe</b> and enables running applications

-    	as service under account without LogonAsService privilege.</td>

+        StartMode <b>java</b> or <b>exe</b> and enables running applications

+        as service under account without LogonAsService privilege.</td>

     </tr>

     <tr>

     <td>--Password</td>

@@ -286,7 +361,7 @@
     <td>Redirected stderr filename.

         If named <b>auto</b> then file is created inside <b>LogPath</b> with the

         name <b>service-stderr.YEAR-MONTH-DAY.log</b>.</td>

-    </tr>    

+    </tr>

     <tr>

     <td>--PidFile</td>

     <td></td>

@@ -294,82 +369,164 @@
         created in the <b>LogPath</b> directory</td>

     </tr>

     </table>

-</p> 

+

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Installing services"><!--()--></a><a name="Installing_services"><strong>Installing services</strong></a></font></td></tr><tr><td><blockquote>

 <p>

 The safest way to manually install the service is to use the provided

 <b>service.bat</b> script. Administrator privileges are required to run this

-script.

+script. If necessary, you can use the <code>/user</code> switch to specify

+a user to use for the installation of the service.

 </p>

 <p>

 <strong>NOTE:</strong> On Windows Vista or any later operating system with User

 Account Control (UAC) enabled you will be asked for additional privileges

-when 'Tomcat6.exe' is launched by the script.<br>

+when 'Tomcat7.exe' is launched by the script.<br>

 If you want to pass additional options to service installer as

 <code>PR_*</code> environment variables, you have to either configure them

 globally in OS, or launch the program that sets them with elevated privileges

 (e.g. right-click on cmd.exe and select "Run as administrator"; on Windows 8

 (or later) or Windows Server 2012 (or later), you can open an elevated command

 prompt for the current directory from the Explorer

-by clicking on the "File" menu bar). See issue <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=56143">56143</a> for details.

+by clicking on the "File" menu bar). See issue <a href="http://bz.apache.org/bugzilla/show_bug.cgi?id=56143">56143</a> for details.

 </p>

+

+<div class="codeBox"><pre><code>Install the service named 'Tomcat7'

+C:\&gt; service.bat install</code></pre></div>

+

+<p>There is a 2nd optional parameter that lets you specify the name of the

+service, as displayed in Windows services.</p>

+

+<div class="codeBox"><pre><code>Install the service named 'MyService'

+C:\&gt; service.bat install MyService</code></pre></div>

+

 <p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-Install the service named 'Tomcat6'

-C:\&gt; service.bat install

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-</p>

-<p>

-If using tomcat6.exe, you need to use the <b>//IS//</b> parameter.

-</p>

-<p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-Install the service named 'Tomcat6'

-C:\&gt; tomcat6 //IS//Tomcat6 --DisplayName="Apache Tomcat 6" \

-C:\&gt; --Install="C:\Program Files\Tomcat\bin\tomcat6.exe" --Jvm=auto \

-C:\&gt; --StartMode=jvm --StopMode=jvm \

-C:\&gt; --StartClass=org.apache.catalina.startup.Bootstrap --StartParams=start \

-C:\&gt; --StopClass=org.apache.catalina.startup.Bootstrap --StopParams=stop

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-</p>

+If using tomcat7.exe, you need to use the <b>//IS//</b> parameter.</p>

+

+<div class="codeBox"><pre><code>Install the service named 'Tomcat7'

+C:\&gt; tomcat7 //IS//Tomcat7 --DisplayName="Apache Tomcat 7" ^

+     --Install="C:\Program Files\Tomcat\bin\tomcat7.exe" --Jvm=auto ^

+     --StartMode=jvm --StopMode=jvm ^

+     --StartClass=org.apache.catalina.startup.Bootstrap --StartParams=start ^

+     --StopClass=org.apache.catalina.startup.Bootstrap --StopParams=stop</code></pre></div>

+

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Updating services"><!--()--></a><a name="Updating_services"><strong>Updating services</strong></a></font></td></tr><tr><td><blockquote>

 <p>

 To update the service parameters, you need to use the <b>//US//</b> parameter.

 </p>

-<p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-Update the service named 'Tomcat6

-C:\&gt; tomcat6 //US//Tomcat6 --Description="Apache Tomcat Server - http://tomcat.apache.org/ " \

-C:\&gt; --Startup=auto --Classpath=%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\bin\bootstrap.jar

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<div class="codeBox"><pre><code>Update the service named 'Tomcat7'

+C:\&gt; tomcat7 //US//Tomcat7 --Description="Apache Tomcat Server - http://tomcat.apache.org/ " ^

+     --Startup=auto --Classpath=%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\bin\bootstrap.jar</code></pre></div>

+

+<p>If you gave the service an optional name, you need to specify it like this:

 </p>

+

+<div class="codeBox"><pre><code>Update the service named 'MyService'

+C:\&gt; tomcat7 //US//MyService --Description="Apache Tomcat Server - http://tomcat.apache.org/ " ^

+     --Startup=auto --Classpath=%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\bin\bootstrap.jar</code></pre></div>

+

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Removing services"><!--()--></a><a name="Removing_services"><strong>Removing services</strong></a></font></td></tr><tr><td><blockquote>

 <p>

 To remove the service, you need to use the <b>//DS//</b> parameter.<br>

-If the service is running it will be stopped and then deleted.

+If the service is running it will be stopped and then deleted.</p>

+

+<div class="codeBox"><pre><code>Remove the service named 'Tomcat7'

+C:\&gt; tomcat7 //DS//Tomcat7</code></pre></div>

+

+<p>If you gave the service an optional name, you need to specify it like this:

 </p>

-<p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-Remove the service named 'Tomcat6'

-C:\&gt; tomcat6 //DS//Tomcat6

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-</p>

+

+<div class="codeBox"><pre><code>Remove the service named 'MyService'

+C:\&gt; tomcat7 //DS//MyService</code></pre></div>

+

 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Debugging services"><!--()--></a><a name="Debugging_services"><strong>Debugging services</strong></a></font></td></tr><tr><td><blockquote>

 <p>

 To run the service in console mode, you need to use the <b>//TS//</b> parameter.

 The service shutdown can be initiated by pressing <b>CTRL+C</b> or

 <b>CTRL+BREAK</b>.

-If you rename the tomcat6.exe to testservice.exe then you can just execute the

-testservice.exe and this command mode will be executed by default.

+If you rename the tomcat7.exe to testservice.exe then you can just execute the

+testservice.exe and this command mode will be executed by default.</p>

+

+<div class="codeBox"><pre><code>Run the service named 'Tomcat7' in console mode

+C:\&gt; tomcat7 //TS//Tomcat7 [additional arguments]

+Or simply execute:

+C:\&gt; tomcat7</code></pre></div>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Multiple Instances"><!--()--></a><a name="Multiple_Instances"><strong>Multiple Instances</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+Tomcat supports installation of multiple instances. You can have a single

+installation of Tomcat with multiple instances running on different IP/port

+combinations, or multiple Tomcat versions, each running one or more instances on

+different IP/ports.</p>

+<p>

+Each instance folder will need the following structure:

+</p>

+<ul>

+<li>conf</li>

+<li>logs</li>

+<li>temp</li>

+<li>webapps</li>

+<li>work</li>

+</ul>

+<p>

+At a minimum, conf should contain a copy of the following files from

+CATALINA_HOME\conf\. Any files not copied and edited, will be picked up by

+default from CATALINA_HOME\conf, i.e. CATALINA_BASE\conf files override defaults

+from CATALINA_HOME\conf.</p>

+<ul>

+<li>server.xml</li>

+<li>web.xml</li>

+</ul>

+<p>

+You must edit CATALINA_BASE\conf\server.xml to specify a unique IP/port for the

+instance to listen on. Find the line that contains

+<code>&lt;Connector port="8080" ...</code> and add an address attribute and/or

+update the port number so as to specify a unique IP/port combination.</p>

+<p>

+To install an instance, first set the CATALINA_HOME environment variable to the

+name of the Tomcat installation directory. Then create a second environment

+variable CATALINA_BASE and point this to the instance folder. Then run "service

+install" command specifying a service name.</p>

+

+<div class="codeBox"><pre><code>set CATALINA_HOME=c:\tomcat_7

+set CATALINA_BASE=c:\tomcat_7\instances\instance1

+service install instance1</code></pre></div>

+

+<p>

+To modify the service settings, you can run <b>tomcat7w //ES//instance1</b>.

 </p>

 <p>

-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

-Run the service named 'Tomcat6' in console mode

-C:\&gt; tomcat6 //TS//Tomcat6 [additional arguments]

-Or simply execute:

-C:\&gt; tomcat6

-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

-</p>

-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

-        Copyright &copy; 1999-2014, Apache Software Foundation

+For additional instances, create additional instance folder, update the

+CATALINA_BASE environment variable, and run the service install again.</p>

+

+<div class="codeBox"><pre><code>set CATALINA_BASE=c:\tomcat_7\instances\instance2

+service install instance2</code></pre></div>

+

+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions

+              on improving documentation for Apache Tomcat.<br><br>

+              If you have trouble and need help, read

+              <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page

+              and ask your question on the tomcat-users

+              <a href="http://tomcat.apache.org/lists.html">mailing list</a>.

+              Do not ask such questions here. This is not a Q&amp;A section.<br><br>

+              The Apache Comments System is explained <a href="./comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/windows-service-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2017, Apache Software Foundation

         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/CookieExample.class b/tomcat-uid/webapps/examples/WEB-INF/classes/CookieExample.class
index bc8e321..5b481e7 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/CookieExample.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/CookieExample.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/CookieExample.java b/tomcat-uid/webapps/examples/WEB-INF/classes/CookieExample.java
index 5d7d5ce..b3e1c09 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/CookieExample.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/CookieExample.java
@@ -15,10 +15,15 @@
 * limitations under the License.

 */

 

-import java.io.*;

-import java.util.*;

-import javax.servlet.*;

-import javax.servlet.http.*;

+import java.io.IOException;

+import java.io.PrintWriter;

+import java.util.ResourceBundle;

+

+import javax.servlet.ServletException;

+import javax.servlet.http.Cookie;

+import javax.servlet.http.HttpServlet;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

 

 import util.HTMLFilter;

 

@@ -30,29 +35,42 @@
 

 public class CookieExample extends HttpServlet {

 

-    ResourceBundle rb = ResourceBundle.getBundle("LocalStrings");

-    

+    private static final long serialVersionUID = 1L;

+

+    private static final ResourceBundle RB = ResourceBundle.getBundle("LocalStrings");

+

+    @Override

     public void doGet(HttpServletRequest request,

                       HttpServletResponse response)

         throws IOException, ServletException

     {

+

+        String cookieName = request.getParameter("cookiename");

+        String cookieValue = request.getParameter("cookievalue");

+        Cookie aCookie = null;

+        if (cookieName != null && cookieValue != null) {

+            aCookie = new Cookie(cookieName, cookieValue);

+            aCookie.setPath(request.getContextPath() + "/");

+            response.addCookie(aCookie);

+        }

+

         response.setContentType("text/html");

 

         PrintWriter out = response.getWriter();

         out.println("<html>");

         out.println("<head>");

 

-        String title = rb.getString("cookies.title");

+        String title = RB.getString("cookies.title");

         out.println("<title>" + title + "</title>");

         out.println("</head>");

         out.println("<body bgcolor=\"white\">");

 

-	// relative links

+        // relative links

 

         // XXX

         // making these absolute till we work out the

-        // addition of a PathInfo issue 

-	

+        // addition of a PathInfo issue

+

         out.println("<a href=\"../cookies.html\">");

         out.println("<img src=\"../images/code.gif\" height=24 " +

                     "width=24 align=right border=0 alt=\"view code\"></a>");

@@ -64,47 +82,44 @@
 

         Cookie[] cookies = request.getCookies();

         if ((cookies != null) && (cookies.length > 0)) {

-            out.println(rb.getString("cookies.cookies") + "<br>");

+            out.println(RB.getString("cookies.cookies") + "<br>");

             for (int i = 0; i < cookies.length; i++) {

                 Cookie cookie = cookies[i];

                 out.print("Cookie Name: " + HTMLFilter.filter(cookie.getName())

                           + "<br>");

-                out.println("  Cookie Value: " 

+                out.println("  Cookie Value: "

                             + HTMLFilter.filter(cookie.getValue())

                             + "<br><br>");

             }

         } else {

-            out.println(rb.getString("cookies.no-cookies"));

+            out.println(RB.getString("cookies.no-cookies"));

         }

 

-        String cookieName = request.getParameter("cookiename");

-        String cookieValue = request.getParameter("cookievalue");

-        if (cookieName != null && cookieValue != null) {

-            Cookie cookie = new Cookie(cookieName, cookieValue);

-            response.addCookie(cookie);

+        if (aCookie != null) {

             out.println("<P>");

-            out.println(rb.getString("cookies.set") + "<br>");

-            out.print(rb.getString("cookies.name") + "  " 

+            out.println(RB.getString("cookies.set") + "<br>");

+            out.print(RB.getString("cookies.name") + "  "

                       + HTMLFilter.filter(cookieName) + "<br>");

-            out.print(rb.getString("cookies.value") + "  " 

+            out.print(RB.getString("cookies.value") + "  "

                       + HTMLFilter.filter(cookieValue));

         }

-        

+

         out.println("<P>");

-        out.println(rb.getString("cookies.make-cookie") + "<br>");

+        out.println(RB.getString("cookies.make-cookie") + "<br>");

         out.print("<form action=\"");

         out.println("CookieExample\" method=POST>");

-        out.print(rb.getString("cookies.name") + "  ");

+        out.print(RB.getString("cookies.name") + "  ");

         out.println("<input type=text length=20 name=cookiename><br>");

-        out.print(rb.getString("cookies.value") + "  ");

+        out.print(RB.getString("cookies.value") + "  ");

         out.println("<input type=text length=20 name=cookievalue><br>");

         out.println("<input type=submit></form>");

-            

-            

+

+

         out.println("</body>");

         out.println("</html>");

     }

 

+    @Override

     public void doPost(HttpServletRequest request,

                       HttpServletResponse response)

         throws IOException, ServletException

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/HelloWorldExample.class b/tomcat-uid/webapps/examples/WEB-INF/classes/HelloWorldExample.class
index 0d3c85e..41e3c40 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/HelloWorldExample.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/HelloWorldExample.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/HelloWorldExample.java b/tomcat-uid/webapps/examples/WEB-INF/classes/HelloWorldExample.java
index 3702542..9902e3b 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/HelloWorldExample.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/HelloWorldExample.java
@@ -14,11 +14,14 @@
 * See the License for the specific language governing permissions and

 * limitations under the License.

 */

+import java.io.IOException;

+import java.io.PrintWriter;

+import java.util.ResourceBundle;

 

-import java.io.*;

-import java.util.*;

-import javax.servlet.*;

-import javax.servlet.http.*;

+import javax.servlet.ServletException;

+import javax.servlet.http.HttpServlet;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

 

 /**

  * The simplest possible servlet.

@@ -28,7 +31,9 @@
 

 public class HelloWorldExample extends HttpServlet {

 

+    private static final long serialVersionUID = 1L;

 

+    @Override

     public void doGet(HttpServletRequest request,

                       HttpServletResponse response)

         throws IOException, ServletException

@@ -41,22 +46,22 @@
         out.println("<html>");

         out.println("<head>");

 

-	    String title = rb.getString("helloworld.title");

+        String title = rb.getString("helloworld.title");

 

-	    out.println("<title>" + title + "</title>");

+        out.println("<title>" + title + "</title>");

         out.println("</head>");

         out.println("<body bgcolor=\"white\">");

 

-	// note that all links are created to be relative. this

-	// ensures that we can move the web application that this

-	// servlet belongs to to a different place in the url

-	// tree and not have any harmful side effects.

+        // note that all links are created to be relative. this

+        // ensures that we can move the web application that this

+        // servlet belongs to to a different place in the url

+        // tree and not have any harmful side effects.

 

         // XXX

         // making these absolute till we work out the

         // addition of a PathInfo issue

 

-	    out.println("<a href=\"../helloworld.html\">");

+        out.println("<a href=\"../helloworld.html\">");

         out.println("<img src=\"../images/code.gif\" height=24 " +

                     "width=24 align=right border=0 alt=\"view code\"></a>");

         out.println("<a href=\"../index.html\">");

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/LocalStrings_es.properties b/tomcat-uid/webapps/examples/WEB-INF/classes/LocalStrings_es.properties
index f5a1261..009e34d 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/LocalStrings_es.properties
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/LocalStrings_es.properties
@@ -12,40 +12,31 @@
 # 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.

-

-# Default localized string information

-# Localized para Locale es_ES

-

-helloworld.title=Hola Mundo!

-

-requestinfo.title=Ejemplo de Informacion de Request

-requestinfo.label.method=Metodo:

-requestinfo.label.requesturi=Request URI:

-requestinfo.label.protocol=Protocolo:

-requestinfo.label.pathinfo=Path Info:

-requestinfo.label.remoteaddr=Direccion Remota:

-

-requestheader.title=Ejemplo de Cabecera de Request

-

-requestparams.title=Ejemplo de parametros de Request

-requestparams.params-in-req=Parametros en este Request:

-requestparams.no-params=No hay parametro. por favor usa alguno

-requestparams.firstname=Nombre:

-requestparams.lastname=Apellidos:

-

-cookies.title=Ejemplo de Cookies

-cookies.cookies=Tu navegador esta enviando los siguientes cookies:

-cookies.no-cookies=Tu navegador no esta enviando cookies

-cookies.make-cookie=Crea un cookie para enviarlo a tu navegador

-cookies.name=Nombre:

-cookies.value=Valor:

-cookies.set=Acabas de enviar a tu navegador estos cookies:

-

-sessions.title=ejemplo de Sesiones

-sessions.id=ID de Sesion:

-sessions.created=Creado:

-sessions.lastaccessed=Ultimo Acceso:

-sessions.data=Lo siguientes datos estan en tu sesion:

-sessions.adddata=A\u00f1ade datos a tu sesion:

-sessions.dataname=Nombre del atributo de sesion:

-sessions.datavalue=Valor del atributo de sesion:

+helloworld.title = Hola Mundo\!

+requestinfo.title = Ejemplo de Informacion de Requerimiento\:

+requestinfo.label.method = M\u00E9todo\:

+requestinfo.label.requesturi = URI de Requerimiento\:

+requestinfo.label.protocol = Protocolo\:

+requestinfo.label.pathinfo = Info de Ruta\:

+requestinfo.label.remoteaddr = Direccion Remota\:

+requestheader.title = Ejemplo de Cabecera de Requerimiento\:

+requestparams.title = Ejemplo de par\u00E1metros de Requerimiento\:

+requestparams.params-in-req = Par\u00E1metros en este Request\:

+requestparams.no-params = No hay p\u00E1rametro. Por favor, usa alguno

+requestparams.firstname = Nombre\:

+requestparams.lastname = Apellidos\:

+cookies.title = Ejemplo de Cookies

+cookies.cookies = Tu navegador est\u00E1 enviando los siguientes cookies\:

+cookies.no-cookies = Tu navegador no est\u00E1 enviando cookies

+cookies.make-cookie = Crea un cookie para enviarlo a tu navegador

+cookies.name = Nombre\:

+cookies.value = Valor\:

+cookies.set = Acabas de enviar a tu navegador estos cookies\:

+sessions.title = Ejemplo de Sesiones

+sessions.id = ID de Sesi\u00F3n\:

+sessions.created = Creado\:

+sessions.lastaccessed = Ultimo Acceso\:

+sessions.data = Lo siguientes datos est\u00E1n en tu sesi\u00F3n\:

+sessions.adddata = A\u00F1ade datos a tu sesi\u00F3n\:

+sessions.dataname = Nombre del atributo de sesi\u00F3n\:

+sessions.datavalue = Valor del atributo de sesi\u00F3n\:

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/RequestHeaderExample.class b/tomcat-uid/webapps/examples/WEB-INF/classes/RequestHeaderExample.class
index 8270f63..23151e8 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/RequestHeaderExample.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/RequestHeaderExample.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/RequestHeaderExample.java b/tomcat-uid/webapps/examples/WEB-INF/classes/RequestHeaderExample.java
index 2a550f2..2010767 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/RequestHeaderExample.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/RequestHeaderExample.java
@@ -15,11 +15,19 @@
 * limitations under the License.

 */

 

-import java.io.*;

-import java.util.*;

-import javax.servlet.*;

-import javax.servlet.http.*;

+import java.io.IOException;

+import java.io.PrintWriter;

+import java.util.Enumeration;

+import java.util.Locale;

+import java.util.ResourceBundle;

 

+import javax.servlet.ServletException;

+import javax.servlet.http.HttpServlet;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

+import javax.servlet.http.HttpSession;

+

+import util.CookieFilter;

 import util.HTMLFilter;

 

 /**

@@ -30,8 +38,11 @@
 

 public class RequestHeaderExample extends HttpServlet {

 

-    ResourceBundle rb = ResourceBundle.getBundle("LocalStrings");

-    

+    private static final long serialVersionUID = 1L;

+

+    private static final ResourceBundle RB = ResourceBundle.getBundle("LocalStrings");

+

+    @Override

     public void doGet(HttpServletRequest request,

                       HttpServletResponse response)

         throws IOException, ServletException

@@ -42,17 +53,17 @@
         out.println("<html>");

         out.println("<head>");

 

-        String title = rb.getString("requestheader.title");

+        String title = RB.getString("requestheader.title");

         out.println("<title>" + title + "</title>");

         out.println("</head>");

         out.println("<body bgcolor=\"white\">");

 

-	// all links relative

+        // all links relative

 

         // XXX

         // making these absolute till we work out the

-        // addition of a PathInfo issue 

-	

+        // addition of a PathInfo issue

+

         out.println("<a href=\"../reqheaders.html\">");

         out.println("<img src=\"../images/code.gif\" height=24 " +

                     "width=24 align=right border=0 alt=\"view code\"></a>");

@@ -62,19 +73,29 @@
 

         out.println("<h3>" + title + "</h3>");

         out.println("<table border=0>");

-        Enumeration e = request.getHeaderNames();

+        Enumeration<String> e = request.getHeaderNames();

         while (e.hasMoreElements()) {

-            String headerName = (String)e.nextElement();

+            String headerName = e.nextElement();

             String headerValue = request.getHeader(headerName);

             out.println("<tr><td bgcolor=\"#CCCCCC\">");

             out.println(HTMLFilter.filter(headerName));

             out.println("</td><td>");

-            out.println(HTMLFilter.filter(headerValue));

+            if (headerName.toLowerCase(Locale.ENGLISH).contains("cookie")) {

+                HttpSession session = request.getSession(false);

+                String sessionId = null;

+                if (session != null) {

+                    sessionId = session.getId();

+                }

+                out.println(HTMLFilter.filter(CookieFilter.filter(headerValue, sessionId)));

+            } else {

+                out.println(HTMLFilter.filter(headerValue));

+            }

             out.println("</td></tr>");

         }

         out.println("</table>");

     }

 

+    @Override

     public void doPost(HttpServletRequest request,

                       HttpServletResponse response)

         throws IOException, ServletException

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/RequestInfoExample.class b/tomcat-uid/webapps/examples/WEB-INF/classes/RequestInfoExample.class
index e93ed68..b060caf 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/RequestInfoExample.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/RequestInfoExample.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/RequestInfoExample.java b/tomcat-uid/webapps/examples/WEB-INF/classes/RequestInfoExample.java
index 86313e5..1f429e8 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/RequestInfoExample.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/RequestInfoExample.java
@@ -15,10 +15,14 @@
 * limitations under the License.

 */

 

-import java.io.*;

-import java.util.*;

-import javax.servlet.*;

-import javax.servlet.http.*;

+import java.io.IOException;

+import java.io.PrintWriter;

+import java.util.ResourceBundle;

+

+import javax.servlet.ServletException;

+import javax.servlet.http.HttpServlet;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

 

 import util.HTMLFilter;

 

@@ -30,9 +34,11 @@
 

 public class RequestInfoExample extends HttpServlet {

 

+    private static final long serialVersionUID = 1L;

 

-    ResourceBundle rb = ResourceBundle.getBundle("LocalStrings");

+    private static final ResourceBundle RB = ResourceBundle.getBundle("LocalStrings");

 

+    @Override

     public void doGet(HttpServletRequest request,

                       HttpServletResponse response)

         throws IOException, ServletException

@@ -43,7 +49,7 @@
         out.println("<html>");

         out.println("<head>");

 

-        String title = rb.getString("requestinfo.title");

+        String title = RB.getString("requestinfo.title");

         out.println("<title>" + title + "</title>");

         out.println("</head>");

         out.println("<body bgcolor=\"white\">");

@@ -64,23 +70,23 @@
 

         out.println("<h3>" + title + "</h3>");

         out.println("<table border=0><tr><td>");

-        out.println(rb.getString("requestinfo.label.method"));

+        out.println(RB.getString("requestinfo.label.method"));

         out.println("</td><td>");

         out.println(HTMLFilter.filter(request.getMethod()));

         out.println("</td></tr><tr><td>");

-        out.println(rb.getString("requestinfo.label.requesturi"));

+        out.println(RB.getString("requestinfo.label.requesturi"));

         out.println("</td><td>");

         out.println(HTMLFilter.filter(request.getRequestURI()));

         out.println("</td></tr><tr><td>");

-        out.println(rb.getString("requestinfo.label.protocol"));

+        out.println(RB.getString("requestinfo.label.protocol"));

         out.println("</td><td>");

         out.println(HTMLFilter.filter(request.getProtocol()));

         out.println("</td></tr><tr><td>");

-        out.println(rb.getString("requestinfo.label.pathinfo"));

+        out.println(RB.getString("requestinfo.label.pathinfo"));

         out.println("</td><td>");

         out.println(HTMLFilter.filter(request.getPathInfo()));

         out.println("</td></tr><tr><td>");

-        out.println(rb.getString("requestinfo.label.remoteaddr"));

+        out.println(RB.getString("requestinfo.label.remoteaddr"));

         out.println("</td><td>");

         out.println(HTMLFilter.filter(request.getRemoteAddr()));

         out.println("</td></tr>");

@@ -98,6 +104,7 @@
         out.println("</table>");

     }

 

+    @Override

     public void doPost(HttpServletRequest request,

                       HttpServletResponse response)

         throws IOException, ServletException

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/RequestParamExample.class b/tomcat-uid/webapps/examples/WEB-INF/classes/RequestParamExample.class
index dccd0ba..a0233b4 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/RequestParamExample.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/RequestParamExample.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/RequestParamExample.java b/tomcat-uid/webapps/examples/WEB-INF/classes/RequestParamExample.java
index 2b8b77c..a4c5c67 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/RequestParamExample.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/RequestParamExample.java
@@ -15,10 +15,14 @@
 * limitations under the License.

 */

 

-import java.io.*;

-import java.util.*;

-import javax.servlet.*;

-import javax.servlet.http.*;

+import java.io.IOException;

+import java.io.PrintWriter;

+import java.util.ResourceBundle;

+

+import javax.servlet.ServletException;

+import javax.servlet.http.HttpServlet;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

 

 import util.HTMLFilter;

 

@@ -30,9 +34,11 @@
 

 public class RequestParamExample extends HttpServlet {

 

+    private static final long serialVersionUID = 1L;

 

-    ResourceBundle rb = ResourceBundle.getBundle("LocalStrings");

-    

+    private static final ResourceBundle RB = ResourceBundle.getBundle("LocalStrings");

+

+    @Override

     public void doGet(HttpServletRequest request,

                       HttpServletResponse response)

         throws IOException, ServletException

@@ -43,19 +49,19 @@
         out.println("<html>");

         out.println("<head>");

 

-        String title = rb.getString("requestparams.title");

+        String title = RB.getString("requestparams.title");

         out.println("<title>" + title + "</title>");

         out.println("</head>");

         out.println("<body bgcolor=\"white\">");

 

         // img stuff not req'd for source code html showing

 

-	// all links relative

+       // all links relative

 

         // XXX

         // making these absolute till we work out the

-        // addition of a PathInfo issue 

-	

+        // addition of a PathInfo issue

+

         out.println("<a href=\"../reqparams.html\">");

         out.println("<img src=\"../images/code.gif\" height=24 " +

                     "width=24 align=right border=0 alt=\"view code\"></a>");

@@ -66,23 +72,23 @@
         out.println("<h3>" + title + "</h3>");

         String firstName = request.getParameter("firstname");

         String lastName = request.getParameter("lastname");

-        out.println(rb.getString("requestparams.params-in-req") + "<br>");

+        out.println(RB.getString("requestparams.params-in-req") + "<br>");

         if (firstName != null || lastName != null) {

-            out.println(rb.getString("requestparams.firstname"));

+            out.println(RB.getString("requestparams.firstname"));

             out.println(" = " + HTMLFilter.filter(firstName) + "<br>");

-            out.println(rb.getString("requestparams.lastname"));

+            out.println(RB.getString("requestparams.lastname"));

             out.println(" = " + HTMLFilter.filter(lastName));

         } else {

-            out.println(rb.getString("requestparams.no-params"));

+            out.println(RB.getString("requestparams.no-params"));

         }

         out.println("<P>");

         out.print("<form action=\"");

         out.print("RequestParamExample\" ");

         out.println("method=POST>");

-        out.println(rb.getString("requestparams.firstname"));

+        out.println(RB.getString("requestparams.firstname"));

         out.println("<input type=text size=20 name=firstname>");

         out.println("<br>");

-        out.println(rb.getString("requestparams.lastname"));

+        out.println(RB.getString("requestparams.lastname"));

         out.println("<input type=text size=20 name=lastname>");

         out.println("<br>");

         out.println("<input type=submit>");

@@ -92,6 +98,7 @@
         out.println("</html>");

     }

 

+    @Override

     public void doPost(HttpServletRequest request,

                       HttpServletResponse response)

         throws IOException, ServletException

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/SessionExample.class b/tomcat-uid/webapps/examples/WEB-INF/classes/SessionExample.class
index 372e463..232cc36 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/SessionExample.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/SessionExample.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/SessionExample.java b/tomcat-uid/webapps/examples/WEB-INF/classes/SessionExample.java
index 33f4f8f..cca91e0 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/SessionExample.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/SessionExample.java
@@ -15,10 +15,17 @@
 * limitations under the License.

 */

 

-import java.io.*;

-import java.util.*;

-import javax.servlet.*;

-import javax.servlet.http.*;

+import java.io.IOException;

+import java.io.PrintWriter;

+import java.util.Date;

+import java.util.Enumeration;

+import java.util.ResourceBundle;

+

+import javax.servlet.ServletException;

+import javax.servlet.http.HttpServlet;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

+import javax.servlet.http.HttpSession;

 

 import util.HTMLFilter;

 

@@ -30,8 +37,11 @@
 

 public class SessionExample extends HttpServlet {

 

-    ResourceBundle rb = ResourceBundle.getBundle("LocalStrings");

-    

+    private static final long serialVersionUID = 1L;

+

+    private static final ResourceBundle RB = ResourceBundle.getBundle("LocalStrings");

+

+    @Override

     public void doGet(HttpServletRequest request,

                       HttpServletResponse response)

         throws IOException, ServletException

@@ -42,18 +52,18 @@
         out.println("<html>");

         out.println("<head>");

 

-        String title = rb.getString("sessions.title");

+        String title = RB.getString("sessions.title");

         out.println("<title>" + title + "</title>");

         out.println("</head>");

         out.println("<body bgcolor=\"white\">");

 

         // img stuff not req'd for source code html showing

-	// relative links everywhere!

+        // relative links everywhere!

 

         // XXX

         // making these absolute till we work out the

-        // addition of a PathInfo issue 

-	

+        // addition of a PathInfo issue

+

         out.println("<a href=\"../sessions.html\">");

         out.println("<img src=\"../images/code.gif\" height=24 " +

                     "width=24 align=right border=0 alt=\"view code\"></a>");

@@ -64,11 +74,11 @@
         out.println("<h3>" + title + "</h3>");

 

         HttpSession session = request.getSession(true);

-        out.println(rb.getString("sessions.id") + " " + session.getId());

+        out.println(RB.getString("sessions.id") + " " + session.getId());

         out.println("<br>");

-        out.println(rb.getString("sessions.created") + " ");

+        out.println(RB.getString("sessions.created") + " ");

         out.println(new Date(session.getCreationTime()) + "<br>");

-        out.println(rb.getString("sessions.lastaccessed") + " ");

+        out.println(RB.getString("sessions.lastaccessed") + " ");

         out.println(new Date(session.getLastAccessedTime()));

 

         String dataName = request.getParameter("dataname");

@@ -78,24 +88,24 @@
         }

 

         out.println("<P>");

-        out.println(rb.getString("sessions.data") + "<br>");

-        Enumeration names = session.getAttributeNames();

+        out.println(RB.getString("sessions.data") + "<br>");

+        Enumeration<String> names = session.getAttributeNames();

         while (names.hasMoreElements()) {

-            String name = (String) names.nextElement(); 

+            String name = names.nextElement();

             String value = session.getAttribute(name).toString();

-            out.println(HTMLFilter.filter(name) + " = " 

+            out.println(HTMLFilter.filter(name) + " = "

                         + HTMLFilter.filter(value) + "<br>");

         }

 

         out.println("<P>");

         out.print("<form action=\"");

-	out.print(response.encodeURL("SessionExample"));

+        out.print(response.encodeURL("SessionExample"));

         out.print("\" ");

         out.println("method=POST>");

-        out.println(rb.getString("sessions.dataname"));

+        out.println(RB.getString("sessions.dataname"));

         out.println("<input type=text size=20 name=dataname>");

         out.println("<br>");

-        out.println(rb.getString("sessions.datavalue"));

+        out.println(RB.getString("sessions.datavalue"));

         out.println("<input type=text size=20 name=datavalue>");

         out.println("<br>");

         out.println("<input type=submit>");

@@ -103,13 +113,13 @@
 

         out.println("<P>GET based form:<br>");

         out.print("<form action=\"");

-	out.print(response.encodeURL("SessionExample"));

+        out.print(response.encodeURL("SessionExample"));

         out.print("\" ");

         out.println("method=GET>");

-        out.println(rb.getString("sessions.dataname"));

+        out.println(RB.getString("sessions.dataname"));

         out.println("<input type=text size=20 name=dataname>");

         out.println("<br>");

-        out.println(rb.getString("sessions.datavalue"));

+        out.println(RB.getString("sessions.datavalue"));

         out.println("<input type=text size=20 name=datavalue>");

         out.println("<br>");

         out.println("<input type=submit>");

@@ -118,11 +128,12 @@
         out.print("<p><a href=\"");

         out.print(HTMLFilter.filter(response.encodeURL("SessionExample?dataname=foo&datavalue=bar")));

         out.println("\" >URL encoded </a>");

-	

+

         out.println("</body>");

         out.println("</html>");

     }

 

+    @Override

     public void doPost(HttpServletRequest request,

                       HttpServletResponse response)

         throws IOException, ServletException

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/async/Async0$1.class b/tomcat-uid/webapps/examples/WEB-INF/classes/async/Async0$1.class
new file mode 100644
index 0000000..021733f
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/async/Async0$1.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/async/Async0.class b/tomcat-uid/webapps/examples/WEB-INF/classes/async/Async0.class
new file mode 100644
index 0000000..16fde39
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/async/Async0.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/async/Async0.java b/tomcat-uid/webapps/examples/WEB-INF/classes/async/Async0.java
new file mode 100644
index 0000000..ea4df76
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/async/Async0.java
@@ -0,0 +1,67 @@
+/*

+* 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.

+*/

+package async;

+

+import java.io.IOException;

+

+import javax.servlet.AsyncContext;

+import javax.servlet.ServletException;

+import javax.servlet.http.HttpServlet;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

+

+import org.apache.juli.logging.Log;

+import org.apache.juli.logging.LogFactory;

+

+public class Async0 extends HttpServlet {

+

+    private static final long serialVersionUID = 1L;

+

+    private static final Log log = LogFactory.getLog(Async0.class);

+

+    @Override

+    protected void service(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException {

+        if (Boolean.TRUE.equals(req.getAttribute("dispatch"))) {

+            log.info("Received dispatch, completing on the worker thread.");

+            log.info("After complete called started:"+req.isAsyncStarted());

+            resp.getWriter().write("Async dispatch worked:+"+System.currentTimeMillis()+"\n");

+        } else {

+            resp.setContentType("text/plain");

+            final AsyncContext actx = req.startAsync();

+            actx.setTimeout(Long.MAX_VALUE);

+            Runnable run = new Runnable() {

+                @Override

+                public void run() {

+                    try {

+                        req.setAttribute("dispatch", Boolean.TRUE);

+                        Thread.currentThread().setName("Async0-Thread");

+                        log.info("Putting AsyncThread to sleep");

+                        Thread.sleep(2*1000);

+                        log.info("Dispatching");

+                        actx.dispatch();

+                    }catch (InterruptedException x) {

+                        log.error("Async1",x);

+                    }catch (IllegalStateException x) {

+                        log.error("Async1",x);

+                    }

+                }

+            };

+            Thread t = new Thread(run);

+            t.start();

+        }

+    }

+}

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/async/Async1$1.class b/tomcat-uid/webapps/examples/WEB-INF/classes/async/Async1$1.class
new file mode 100644
index 0000000..531cadb
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/async/Async1$1.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/async/Async1.class b/tomcat-uid/webapps/examples/WEB-INF/classes/async/Async1.class
new file mode 100644
index 0000000..eb85ea0
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/async/Async1.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/async/Async1.java b/tomcat-uid/webapps/examples/WEB-INF/classes/async/Async1.java
new file mode 100644
index 0000000..9403a3a
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/async/Async1.java
@@ -0,0 +1,62 @@
+/*

+* 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.

+*/

+package async;

+

+import java.io.IOException;

+

+import javax.servlet.AsyncContext;

+import javax.servlet.ServletException;

+import javax.servlet.http.HttpServlet;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

+

+import org.apache.juli.logging.Log;

+import org.apache.juli.logging.LogFactory;

+

+public class Async1 extends HttpServlet {

+

+    private static final long serialVersionUID = 1L;

+

+    private static final Log log = LogFactory.getLog(Async1.class);

+

+    @Override

+    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

+        final AsyncContext actx = req.startAsync();

+        actx.setTimeout(30*1000);

+        Runnable run = new Runnable() {

+            @Override

+            public void run() {

+                try {

+                    String path = "/jsp/async/async1.jsp";

+                    Thread.currentThread().setName("Async1-Thread");

+                    log.info("Putting AsyncThread to sleep");

+                    Thread.sleep(2*1000);

+                    log.info("Dispatching to "+path);

+                    actx.dispatch(path);

+                }catch (InterruptedException x) {

+                    log.error("Async1",x);

+                }catch (IllegalStateException x) {

+                    log.error("Async1",x);

+                }

+            }

+        };

+        Thread t = new Thread(run);

+        t.start();

+    }

+

+

+}

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/async/Async2$1.class b/tomcat-uid/webapps/examples/WEB-INF/classes/async/Async2$1.class
new file mode 100644
index 0000000..10cfa14
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/async/Async2$1.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/async/Async2.class b/tomcat-uid/webapps/examples/WEB-INF/classes/async/Async2.class
new file mode 100644
index 0000000..d79bb88
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/async/Async2.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/async/Async2.java b/tomcat-uid/webapps/examples/WEB-INF/classes/async/Async2.java
new file mode 100644
index 0000000..649afbc
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/async/Async2.java
@@ -0,0 +1,64 @@
+/*

+* 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.

+*/

+package async;

+

+import java.io.IOException;

+

+import javax.servlet.AsyncContext;

+import javax.servlet.ServletException;

+import javax.servlet.http.HttpServlet;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

+

+import org.apache.juli.logging.Log;

+import org.apache.juli.logging.LogFactory;

+

+public class Async2 extends HttpServlet {

+

+    private static final long serialVersionUID = 1L;

+

+    private static final Log log = LogFactory.getLog(Async2.class);

+

+    @Override

+    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

+        final AsyncContext actx = req.startAsync();

+        actx.setTimeout(30*1000);

+        Runnable run = new Runnable() {

+            @Override

+            public void run() {

+                try {

+                    Thread.currentThread().setName("Async2-Thread");

+                    log.info("Putting AsyncThread to sleep");

+                    Thread.sleep(2*1000);

+                    log.info("Writing data.");

+                    actx.getResponse().getWriter().write("Output from background thread. Time:"+System.currentTimeMillis()+"\n");

+                    actx.complete();

+                }catch (InterruptedException x) {

+                    log.error("Async2",x);

+                }catch (IllegalStateException x) {

+                    log.error("Async2",x);

+                }catch (IOException x) {

+                    log.error("Async2",x);

+                }

+            }

+        };

+        Thread t = new Thread(run);

+        t.start();

+    }

+

+

+}

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/async/Async3.class b/tomcat-uid/webapps/examples/WEB-INF/classes/async/Async3.class
new file mode 100644
index 0000000..bd90d90
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/async/Async3.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/async/Async3.java b/tomcat-uid/webapps/examples/WEB-INF/classes/async/Async3.java
new file mode 100644
index 0000000..39e0fe5
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/async/Async3.java
@@ -0,0 +1,39 @@
+/*

+* 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.

+*/

+package async;

+

+import java.io.IOException;

+

+import javax.servlet.AsyncContext;

+import javax.servlet.ServletException;

+import javax.servlet.http.HttpServlet;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

+

+public class Async3 extends HttpServlet {

+

+    private static final long serialVersionUID = 1L;

+

+    @Override

+    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

+        final AsyncContext actx = req.startAsync();

+        actx.setTimeout(30*1000);

+        actx.dispatch("/jsp/async/async3.jsp");

+    }

+

+

+}

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/async/AsyncStockServlet.class b/tomcat-uid/webapps/examples/WEB-INF/classes/async/AsyncStockServlet.class
new file mode 100644
index 0000000..117f084
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/async/AsyncStockServlet.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/async/AsyncStockServlet.java b/tomcat-uid/webapps/examples/WEB-INF/classes/async/AsyncStockServlet.java
new file mode 100644
index 0000000..ad4c43e
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/async/AsyncStockServlet.java
@@ -0,0 +1,131 @@
+/*

+ *  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.

+ */

+package async;

+

+import java.io.IOException;

+import java.io.PrintWriter;

+import java.util.ArrayList;

+import java.util.Iterator;

+import java.util.concurrent.ConcurrentLinkedQueue;

+import java.util.concurrent.atomic.AtomicInteger;

+

+import javax.servlet.AsyncContext;

+import javax.servlet.AsyncEvent;

+import javax.servlet.AsyncListener;

+import javax.servlet.ServletException;

+import javax.servlet.http.HttpServlet;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

+

+import async.Stockticker.Stock;

+import async.Stockticker.TickListener;

+

+public class AsyncStockServlet extends HttpServlet implements TickListener, AsyncListener{

+

+    private static final long serialVersionUID = 1L;

+

+    public static final String POLL = "POLL";

+    public static final String LONG_POLL = "LONG-POLL";

+    public static final String STREAM = "STREAM";

+

+    static ArrayList<Stock> ticks = new ArrayList<Stock>();

+    static ConcurrentLinkedQueue<AsyncContext> clients = new ConcurrentLinkedQueue<AsyncContext>();

+    static AtomicInteger clientcount = new AtomicInteger(0);

+    static Stockticker ticker = new Stockticker();

+

+    public AsyncStockServlet() {

+        System.out.println("AsyncStockServlet created");

+    }

+

+

+    @Override

+    protected void service(HttpServletRequest req, HttpServletResponse resp)

+            throws ServletException, IOException {

+        if (req.isAsyncStarted()) {

+            req.getAsyncContext().complete();

+        } else if (req.isAsyncSupported()) {

+            AsyncContext actx = req.startAsync();

+            actx.addListener(this);

+            resp.setContentType("text/plain");

+            clients.add(actx);

+            if (clientcount.incrementAndGet()==1) {

+                ticker.addTickListener(this);

+            }

+        } else {

+            new Exception("Async Not Supported").printStackTrace();

+            resp.sendError(400,"Async is not supported.");

+        }

+    }

+

+

+    @Override

+    public void tick(Stock stock) {

+        ticks.add((Stock)stock.clone());

+        Iterator<AsyncContext> it = clients.iterator();

+        while (it.hasNext()) {

+            AsyncContext actx = it.next();

+            try {

+                writeStock(actx, stock);

+            } catch (Exception e) {

+                // Ignore. The async error handling will deal with this.

+            }

+        }

+    }

+

+    public void writeStock(AsyncContext actx, Stock stock) {

+        HttpServletResponse response = (HttpServletResponse)actx.getResponse();

+        try {

+            PrintWriter writer = response.getWriter();

+            writer.write("STOCK#");//make client parsing easier

+            writer.write(stock.getSymbol());

+            writer.write("#");

+            writer.write(stock.getValueAsString());

+            writer.write("#");

+            writer.write(stock.getLastChangeAsString());

+            writer.write("#");

+            writer.write(String.valueOf(stock.getCnt()));

+            writer.write("\n");

+            writer.flush();

+            response.flushBuffer();

+        }catch (IOException x) {

+            try {actx.complete();}catch (Exception ignore){/* Ignore */}

+        }

+    }

+

+    @Override

+    public void onComplete(AsyncEvent event) throws IOException {

+        if (clients.remove(event.getAsyncContext()) && clientcount.decrementAndGet()==0) {

+            ticker.removeTickListener(this);

+        }

+    }

+

+    @Override

+    public void onError(AsyncEvent event) throws IOException {

+        event.getAsyncContext().complete();

+    }

+

+    @Override

+    public void onTimeout(AsyncEvent event) throws IOException {

+        event.getAsyncContext().complete();

+    }

+

+

+    @Override

+    public void onStartAsync(AsyncEvent event) throws IOException {

+        // NOOP

+    }

+}

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/async/Stockticker$Stock.class b/tomcat-uid/webapps/examples/WEB-INF/classes/async/Stockticker$Stock.class
new file mode 100644
index 0000000..bf771c3
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/async/Stockticker$Stock.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/async/Stockticker$TickListener.class b/tomcat-uid/webapps/examples/WEB-INF/classes/async/Stockticker$TickListener.class
new file mode 100644
index 0000000..928b52f
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/async/Stockticker$TickListener.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/async/Stockticker.class b/tomcat-uid/webapps/examples/WEB-INF/classes/async/Stockticker.class
new file mode 100644
index 0000000..7a99163
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/async/Stockticker.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/async/Stockticker.java b/tomcat-uid/webapps/examples/WEB-INF/classes/async/Stockticker.java
new file mode 100644
index 0000000..0bebf86
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/async/Stockticker.java
@@ -0,0 +1,188 @@
+/*

+ *  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.

+ */

+package async;

+

+import java.text.DecimalFormat;

+import java.util.ArrayList;

+import java.util.Random;

+import java.util.concurrent.atomic.AtomicInteger;

+

+public class Stockticker implements Runnable {

+        public volatile boolean run = true;

+        protected AtomicInteger counter = new AtomicInteger(0);

+        ArrayList<TickListener> listeners = new ArrayList<TickListener>();

+        protected volatile Thread ticker = null;

+        protected volatile int ticknr = 0;

+

+        public synchronized void start() {

+            run = true;

+            ticker = new Thread(this);

+            ticker.setName("Ticker Thread");

+            ticker.start();

+        }

+

+        public synchronized void stop() {

+            run = false;

+            try {

+                ticker.join();

+            }catch (InterruptedException x) {

+                Thread.interrupted();

+            }

+

+            ticker = null;

+        }

+

+        public void addTickListener(TickListener listener) {

+            if (listeners.add(listener)) {

+                if (counter.incrementAndGet()==1) start();

+            }

+

+        }

+

+        public void removeTickListener(TickListener listener) {

+            if (listeners.remove(listener)) {

+                if (counter.decrementAndGet()==0) stop();

+            }

+        }

+

+        @Override

+        public void run() {

+            try {

+

+                Stock[] stocks = new Stock[] { new Stock("GOOG", 435.43),

+                        new Stock("YHOO", 27.88), new Stock("ASF", 1015.55), };

+                Random r = new Random(System.currentTimeMillis());

+                while (run) {

+                    for (int j = 0; j < 1; j++) {

+                        int i = r.nextInt() % 3;

+                        if (i < 0)

+                            i = i * (-1);

+                        Stock stock = stocks[i];

+                        double change = r.nextDouble();

+                        boolean plus = r.nextBoolean();

+                        if (plus) {

+                            stock.setValue(stock.getValue() + change);

+                        } else {

+                            stock.setValue(stock.getValue() - change);

+                        }

+                        stock.setCnt(++ticknr);

+                        for (TickListener l : listeners) {

+                            l.tick(stock);

+                        }

+

+                    }

+                    Thread.sleep(850);

+                }

+            } catch (InterruptedException ix) {

+                // Ignore

+            } catch (Exception x) {

+                x.printStackTrace();

+            }

+        }

+

+

+    public static interface TickListener {

+        public void tick(Stock stock);

+    }

+

+    public static final class Stock implements Cloneable {

+        protected static DecimalFormat df = new DecimalFormat("0.00");

+        protected String symbol = "";

+        protected double value = 0.0d;

+        protected double lastchange = 0.0d;

+        protected int cnt = 0;

+

+        public Stock(String symbol, double initvalue) {

+            this.symbol = symbol;

+            this.value = initvalue;

+        }

+

+        public void setCnt(int c) {

+            this.cnt = c;

+        }

+

+        public int getCnt() {

+            return cnt;

+        }

+

+        public String getSymbol() {

+            return symbol;

+        }

+

+        public double getValue() {

+            return value;

+        }

+

+        public void setValue(double value) {

+            double old = this.value;

+            this.value = value;

+            this.lastchange = value - old;

+        }

+

+        public String getValueAsString() {

+            return df.format(value);

+        }

+

+        public double getLastChange() {

+            return this.lastchange;

+        }

+

+        public void setLastChange(double lastchange) {

+            this.lastchange = lastchange;

+        }

+

+        public String getLastChangeAsString() {

+            return df.format(lastchange);

+        }

+

+        @Override

+        public int hashCode() {

+            return symbol.hashCode();

+        }

+

+        @Override

+        public boolean equals(Object other) {

+            if (other instanceof Stock) {

+                return this.symbol.equals(((Stock) other).symbol);

+            }

+

+            return false;

+        }

+

+        @Override

+        public String toString() {

+            StringBuilder buf = new StringBuilder("STOCK#");

+            buf.append(getSymbol());

+            buf.append("#");

+            buf.append(getValueAsString());

+            buf.append("#");

+            buf.append(getLastChangeAsString());

+            buf.append("#");

+            buf.append(String.valueOf(getCnt()));

+            return buf.toString();

+

+        }

+

+        @Override

+        public Object clone() {

+            Stock s = new Stock(this.getSymbol(), this.getValue());

+            s.setLastChange(this.getLastChange());

+            s.setCnt(this.cnt);

+            return s;

+        }

+    }

+}

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/cal/Entries.class b/tomcat-uid/webapps/examples/WEB-INF/classes/cal/Entries.class
index ab44434..30bed2f 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/cal/Entries.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/cal/Entries.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/cal/Entries.java b/tomcat-uid/webapps/examples/WEB-INF/classes/cal/Entries.java
index ea0867b..443cd60 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/cal/Entries.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/cal/Entries.java
@@ -1,72 +1,60 @@
 /*

-* 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.

-*/

+ * 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.

+ */

 package cal;

 

 import java.util.Hashtable;

-import javax.servlet.http.*;

+

+import javax.servlet.http.HttpServletRequest;

 

 public class Entries {

 

-  private Hashtable entries;

-  private static final String[] time = {"8am", "9am", "10am", "11am", "12pm", 

-					"1pm", "2pm", "3pm", "4pm", "5pm", "6pm",

-					"7pm", "8pm" };

-  public static final int rows = 12;

+    private Hashtable<String, Entry> entries;

+    private static final String[] time = { "8am", "9am", "10am", "11am",

+            "12pm", "1pm", "2pm", "3pm", "4pm", "5pm", "6pm", "7pm", "8pm" };

+    public static final int rows = 12;

 

-  public Entries () {   

-   entries = new Hashtable (rows);

-   for (int i=0; i < rows; i++) {

-     entries.put (time[i], new Entry(time[i]));

-   }

-  }

-

-  public int getRows () {

-    return rows;

-  }

-

-  public Entry getEntry (int index) {

-    return (Entry)this.entries.get(time[index]);

-  }

-

-  public int getIndex (String tm) {

-    for (int i=0; i<rows; i++)

-      if(tm.equals(time[i])) return i;

-    return -1;

-  }

-

-  public void processRequest (HttpServletRequest request, String tm) {

-    int index = getIndex (tm);

-    if (index >= 0) {

-      String descr = request.getParameter ("description");

-      ((Entry)entries.get(time[index])).setDescription (descr);

+    public Entries() {

+        entries = new Hashtable<String, Entry>(rows);

+        for (int i = 0; i < rows; i++) {

+            entries.put(time[i], new Entry(time[i]));

+        }

     }

-  }

+

+    public int getRows() {

+        return rows;

+    }

+

+    public Entry getEntry(int index) {

+        return this.entries.get(time[index]);

+    }

+

+    public int getIndex(String tm) {

+        for (int i = 0; i < rows; i++)

+            if (tm.equals(time[i]))

+                return i;

+        return -1;

+    }

+

+    public void processRequest(HttpServletRequest request, String tm) {

+        int index = getIndex(tm);

+        if (index >= 0) {

+            String descr = request.getParameter("description");

+            entries.get(time[index]).setDescription(descr);

+        }

+    }

 

 }

-

-

-

-

-

-

-

-

-

-

-

-

-

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/cal/Entry.class b/tomcat-uid/webapps/examples/WEB-INF/classes/cal/Entry.class
index b4619a6..44c493d 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/cal/Entry.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/cal/Entry.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/cal/Entry.java b/tomcat-uid/webapps/examples/WEB-INF/classes/cal/Entry.java
index d4596d9..e6403b2 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/cal/Entry.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/cal/Entry.java
@@ -1,55 +1,53 @@
 /*

-* 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.

-*/

+ * 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.

+ */

 

 package cal;

 

 public class Entry {

 

-  String hour;

-  String description;

-  String color;

+    String hour;

+    String description;

 

-  public Entry (String hour) {

-    this.hour = hour;

-    this.description = "";

+    public Entry(String hour) {

+        this.hour = hour;

+        this.description = "";

 

-  }

+    }

 

-  public String getHour () {

-    return this.hour;

-  }

+    public String getHour() {

+        return this.hour;

+    }

 

-  public String getColor () {

-    if (description.equals("")) return "lightblue";

-    else return "red";

-  }

+    public String getColor() {

+        if (description.equals("")) {

+            return "lightblue";

+        }

+        return "red";

+    }

 

-  public String getDescription () {

-    if (description.equals("")) return "None";

-    else return this.description;

-  }

+    public String getDescription() {

+        if (description.equals("")) {

+            return "None";

+        }

+        return this.description;

+    }

 

-  public void setDescription (String descr) {

-    description = descr;

-  }

- 

+    public void setDescription(String descr) {

+        description = descr;

+    }

+

 }

-

-

-

-

-

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/cal/JspCalendar.class b/tomcat-uid/webapps/examples/WEB-INF/classes/cal/JspCalendar.class
index dfd95e1..e1c6efa 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/cal/JspCalendar.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/cal/JspCalendar.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/cal/JspCalendar.java b/tomcat-uid/webapps/examples/WEB-INF/classes/cal/JspCalendar.java
index b2db6c0..dff319c 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/cal/JspCalendar.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/cal/JspCalendar.java
@@ -17,138 +17,135 @@
 

 package cal;

 

-import java.util.*;

+import java.util.Calendar;

+import java.util.Date;

 

 public class JspCalendar {

     Calendar  calendar = null;

-    Date currentDate;

 

     public JspCalendar() {

-	calendar = Calendar.getInstance();

-	Date trialTime = new Date();

-	calendar.setTime(trialTime);

+        calendar = Calendar.getInstance();

+        Date trialTime = new Date();

+        calendar.setTime(trialTime);

     }

 

 

     public int getYear() {

-	return calendar.get(Calendar.YEAR);

+        return calendar.get(Calendar.YEAR);

     }

-    

+

     public String getMonth() {

-	int m = getMonthInt();

-	String[] months = new String [] { "January", "February", "March",

-					"April", "May", "June",

-					"July", "August", "September",

-					"October", "November", "December" };

-	if (m > 12)

-	    return "Unknown to Man";

-	

-	return months[m - 1];

+        int m = getMonthInt();

+        String[] months = new String [] { "January", "February", "March",

+                                        "April", "May", "June",

+                                        "July", "August", "September",

+                                        "October", "November", "December" };

+        if (m > 12)

+            return "Unknown to Man";

+

+        return months[m - 1];

 

     }

 

     public String getDay() {

-	int x = getDayOfWeek();

-	String[] days = new String[] {"Sunday", "Monday", "Tuesday", "Wednesday", 

-				      "Thursday", "Friday", "Saturday"};

+        int x = getDayOfWeek();

+        String[] days = new String[] {"Sunday", "Monday", "Tuesday", "Wednesday",

+                                      "Thursday", "Friday", "Saturday"};

 

-	if (x > 7)

-	    return "Unknown to Man";

+        if (x > 7)

+            return "Unknown to Man";

 

-	return days[x - 1];

+        return days[x - 1];

 

     }

-    

+

     public int getMonthInt() {

-	return 1 + calendar.get(Calendar.MONTH);

+        return 1 + calendar.get(Calendar.MONTH);

     }

 

     public String getDate() {

-	return getMonthInt() + "/" + getDayOfMonth() + "/" +  getYear();	

+        return getMonthInt() + "/" + getDayOfMonth() + "/" +  getYear();

     }

 

     public String getCurrentDate() {

         Date dt = new Date ();

-	calendar.setTime (dt);

-	return getMonthInt() + "/" + getDayOfMonth() + "/" +  getYear();

+        calendar.setTime (dt);

+        return getMonthInt() + "/" + getDayOfMonth() + "/" +  getYear();

 

     }

 

     public String getNextDate() {

         calendar.set (Calendar.DAY_OF_MONTH, getDayOfMonth() + 1);

-	return getDate ();

+        return getDate ();

     }

 

     public String getPrevDate() {

         calendar.set (Calendar.DAY_OF_MONTH, getDayOfMonth() - 1);

-	return getDate ();

+        return getDate ();

     }

 

     public String getTime() {

-	return getHour() + ":" + getMinute() + ":" + getSecond();

+        return getHour() + ":" + getMinute() + ":" + getSecond();

     }

 

     public int getDayOfMonth() {

-	return calendar.get(Calendar.DAY_OF_MONTH);

+        return calendar.get(Calendar.DAY_OF_MONTH);

     }

 

     public int getDayOfYear() {

-	return calendar.get(Calendar.DAY_OF_YEAR);

+        return calendar.get(Calendar.DAY_OF_YEAR);

     }

 

     public int getWeekOfYear() {

-	return calendar.get(Calendar.WEEK_OF_YEAR);

+        return calendar.get(Calendar.WEEK_OF_YEAR);

     }

 

     public int getWeekOfMonth() {

-	return calendar.get(Calendar.WEEK_OF_MONTH);

+        return calendar.get(Calendar.WEEK_OF_MONTH);

     }

 

     public int getDayOfWeek() {

-	return calendar.get(Calendar.DAY_OF_WEEK);

+        return calendar.get(Calendar.DAY_OF_WEEK);

     }

-     

+

     public int getHour() {

-	return calendar.get(Calendar.HOUR_OF_DAY);

+        return calendar.get(Calendar.HOUR_OF_DAY);

     }

-    

+

     public int getMinute() {

-	return calendar.get(Calendar.MINUTE);

+        return calendar.get(Calendar.MINUTE);

     }

 

 

     public int getSecond() {

-	return calendar.get(Calendar.SECOND);

+        return calendar.get(Calendar.SECOND);

     }

 

-  

+

     public int getEra() {

-	return calendar.get(Calendar.ERA);

+        return calendar.get(Calendar.ERA);

     }

 

     public String getUSTimeZone() {

-	String[] zones = new String[] {"Hawaii", "Alaskan", "Pacific",

-				       "Mountain", "Central", "Eastern"};

-	

-	return zones[10 + getZoneOffset()];

+        String[] zones = new String[] {"Hawaii", "Alaskan", "Pacific",

+                                       "Mountain", "Central", "Eastern"};

+

+        return zones[10 + getZoneOffset()];

     }

 

     public int getZoneOffset() {

-	return calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000);

+        return calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000);

     }

 

 

     public int getDSTOffset() {

-	return calendar.get(Calendar.DST_OFFSET)/(60*60*1000);

+        return calendar.get(Calendar.DST_OFFSET)/(60*60*1000);

     }

 

-    

+

     public int getAMPM() {

-	return calendar.get(Calendar.AM_PM);

+        return calendar.get(Calendar.AM_PM);

     }

 }

 

 

-

-

-

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/cal/TableBean.class b/tomcat-uid/webapps/examples/WEB-INF/classes/cal/TableBean.class
index 8afd547..fdd37a8 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/cal/TableBean.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/cal/TableBean.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/cal/TableBean.java b/tomcat-uid/webapps/examples/WEB-INF/classes/cal/TableBean.java
index f55327c..1c32e68 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/cal/TableBean.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/cal/TableBean.java
@@ -1,100 +1,101 @@
 /*

-* 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.

-*/

+ * 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.

+ */

 package cal;

 

-import javax.servlet.http.*;

 import java.util.Hashtable;

 

+import javax.servlet.http.HttpServletRequest;

+

 public class TableBean {

 

-  Hashtable table;

-  JspCalendar JspCal;

-  Entries entries;

-  String date;

-  String name = null;

-  String email = null;

-  boolean processError = false;

+    Hashtable<String, Entries> table;

+    JspCalendar JspCal;

+    Entries entries;

+    String date;

+    String name = null;

+    String email = null;

+    boolean processError = false;

 

-  public TableBean () {

-    this.table = new Hashtable (10);

-    this.JspCal = new JspCalendar ();

-    this.date = JspCal.getCurrentDate ();

-  }

-

-  public void setName (String nm) {

-    this.name = nm;

-  }

-

-  public String getName () {

-    return this.name;

-  }

-  

-  public void setEmail (String mail) {

-    this.email = mail;

-  }

-

-  public String getEmail () {

-    return this.email;

-  }

-

-  public String getDate () {

-    return this.date;

-  }

-

-  public Entries getEntries () {

-    return this.entries;

-  }

-

-  public void processRequest (HttpServletRequest request) {

-

-    // Get the name and e-mail.

-    this.processError = false;

-    if (name == null || name.equals("")) setName(request.getParameter ("name"));  

-    if (email == null || email.equals("")) setEmail(request.getParameter ("email"));

-    if (name == null || email == null ||

-		name.equals("") || email.equals("")) {

-      this.processError = true;

-      return;

+    public TableBean() {

+        this.table = new Hashtable<String, Entries>(10);

+        this.JspCal = new JspCalendar();

+        this.date = JspCal.getCurrentDate();

     }

 

-    // Get the date.

-    String dateR = request.getParameter ("date");

-    if (dateR == null) date = JspCal.getCurrentDate ();

-    else if (dateR.equalsIgnoreCase("next")) date = JspCal.getNextDate ();

-    else if (dateR.equalsIgnoreCase("prev")) date = JspCal.getPrevDate ();

-

-    entries = (Entries) table.get (date);

-    if (entries == null) {

-      entries = new Entries ();

-      table.put (date, entries);

+    public void setName(String nm) {

+        this.name = nm;

     }

 

-    // If time is provided add the event.

-	String time = request.getParameter("time");

-    if (time != null) entries.processRequest (request, time);

-  }

+    public String getName() {

+        return this.name;

+    }

 

-  public boolean getProcessError () {

-    return this.processError;

-  }

+    public void setEmail(String mail) {

+        this.email = mail;

+    }

+

+    public String getEmail() {

+        return this.email;

+    }

+

+    public String getDate() {

+        return this.date;

+    }

+

+    public Entries getEntries() {

+        return this.entries;

+    }

+

+    public void processRequest(HttpServletRequest request) {

+

+        // Get the name and e-mail.

+        this.processError = false;

+        if (name == null || name.equals(""))

+            setName(request.getParameter("name"));

+        if (email == null || email.equals(""))

+            setEmail(request.getParameter("email"));

+        if (name == null || email == null || name.equals("")

+                || email.equals("")) {

+            this.processError = true;

+            return;

+        }

+

+        // Get the date.

+        String dateR = request.getParameter("date");

+        if (dateR == null)

+            date = JspCal.getCurrentDate();

+        else if (dateR.equalsIgnoreCase("next"))

+            date = JspCal.getNextDate();

+        else if (dateR.equalsIgnoreCase("prev"))

+            date = JspCal.getPrevDate();

+

+        entries = table.get(date);

+        if (entries == null) {

+            entries = new Entries();

+            table.put(date, entries);

+        }

+

+        // If time is provided add the event.

+        String time = request.getParameter("time");

+        if (time != null)

+            entries.processRequest(request, time);

+    }

+

+    public boolean getProcessError() {

+        return this.processError;

+    }

 }

-

-

-

-

-

-

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/chat/ChatServlet$MessageSender.class b/tomcat-uid/webapps/examples/WEB-INF/classes/chat/ChatServlet$MessageSender.class
index 6712d68..c4be561 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/chat/ChatServlet$MessageSender.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/chat/ChatServlet$MessageSender.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/chat/ChatServlet.class b/tomcat-uid/webapps/examples/WEB-INF/classes/chat/ChatServlet.class
index 752adba..ea047bd 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/chat/ChatServlet.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/chat/ChatServlet.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/chat/ChatServlet.java b/tomcat-uid/webapps/examples/WEB-INF/classes/chat/ChatServlet.java
index 11d3757..d92092d 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/chat/ChatServlet.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/chat/ChatServlet.java
@@ -5,9 +5,9 @@
  * 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.

@@ -24,14 +24,14 @@
 import java.io.PrintWriter;

 import java.util.ArrayList;

 

-import org.apache.catalina.CometEvent;

-import org.apache.catalina.CometProcessor;

-

 import javax.servlet.ServletException;

 import javax.servlet.http.HttpServlet;

 import javax.servlet.http.HttpServletRequest;

 import javax.servlet.http.HttpServletResponse;

 

+import org.apache.catalina.comet.CometEvent;

+import org.apache.catalina.comet.CometProcessor;

+

 

 /**

  * Helper class to implement Comet functionality.

@@ -39,20 +39,24 @@
 public class ChatServlet

     extends HttpServlet implements CometProcessor {

 

+    private static final long serialVersionUID = 1L;

+

     private static final String CHARSET = "UTF-8";

 

-    protected ArrayList<HttpServletResponse> connections = 

+    protected ArrayList<HttpServletResponse> connections =

         new ArrayList<HttpServletResponse>();

-    protected MessageSender messageSender = null;

-    

+    protected transient MessageSender messageSender = null;

+

+    @Override

     public void init() throws ServletException {

         messageSender = new MessageSender();

-        Thread messageSenderThread = 

+        Thread messageSenderThread =

             new Thread(messageSender, "MessageSender[" + getServletContext().getContextPath() + "]");

         messageSenderThread.setDaemon(true);

         messageSenderThread.start();

     }

 

+    @Override

     public void destroy() {

         connections.clear();

         messageSender.stop();

@@ -61,11 +65,12 @@
 

     /**

      * Process the given Comet event.

-     * 

+     *

      * @param event The Comet event that will be processed

      * @throws IOException

      * @throws ServletException

      */

+    @Override

     public void event(CometEvent event)

         throws IOException, ServletException {

 

@@ -73,7 +78,7 @@
         // mixing Comet stuff with regular connection processing

         HttpServletRequest request = event.getHttpServletRequest();

         HttpServletResponse response = event.getHttpServletResponse();

-        

+

         if (event.getEventType() == CometEvent.EventType.BEGIN) {

             String action = request.getParameter("action");

             if (action != null) {

@@ -83,22 +88,20 @@
                     response.sendRedirect("index.jsp");

                     event.close();

                     return;

-                } else {

-                    String nickname = (String) request.getSession(true).getAttribute("nickname");

-                    String message = request.getParameter("message");

-                    messageSender.send(nickname, message);

-                    response.sendRedirect("post.jsp");

-                    event.close();

-                    return;

                 }

-            } else {

-                if (request.getSession(true).getAttribute("nickname") == null) {

-                    // Redirect to "login"

-                    log("Redirect to login for session: " + request.getSession(true).getId());

-                    response.sendRedirect("login.jsp");

-                    event.close();

-                    return;

-                }

+                String nickname = (String) request.getSession(true).getAttribute("nickname");

+                String message = request.getParameter("message");

+                messageSender.send(nickname, message);

+                response.sendRedirect("post.jsp");

+                event.close();

+                return;

+            }

+            if (request.getSession(true).getAttribute("nickname") == null) {

+                // Redirect to "login"

+                log("Redirect to login for session: " + request.getSession(true).getId());

+                response.sendRedirect("login.jsp");

+                event.close();

+                return;

             }

             begin(event, request, response);

         } else if (event.getEventType() == CometEvent.EventType.ERROR) {

@@ -110,8 +113,9 @@
         }

     }

 

-    protected void begin(CometEvent event, HttpServletRequest request, HttpServletResponse response)

-        throws IOException, ServletException {

+    protected void begin(@SuppressWarnings("unused") CometEvent event,

+            HttpServletRequest request, HttpServletResponse response)

+        throws IOException {

         log("Begin for session: " + request.getSession(true).getId());

 

         response.setContentType("text/html; charset=" + CHARSET);

@@ -128,38 +132,38 @@
 

         messageSender.send("Tomcat", request.getSession(true).getAttribute("nickname") + " joined the chat.");

     }

-    

+

     protected void end(CometEvent event, HttpServletRequest request, HttpServletResponse response)

-        throws IOException, ServletException {

+        throws IOException {

         log("End for session: " + request.getSession(true).getId());

         synchronized(connections) {

             connections.remove(response);

         }

-        

+

         PrintWriter writer = response.getWriter();

         writer.println("</body></html>");

-        

+

         event.close();

     }

-    

+

     protected void error(CometEvent event, HttpServletRequest request, HttpServletResponse response)

-        throws IOException, ServletException {

+        throws IOException {

         log("Error for session: " + request.getSession(true).getId());

         synchronized(connections) {

             connections.remove(response);

         }

         event.close();

     }

-    

+

     protected void read(CometEvent event, HttpServletRequest request, HttpServletResponse response)

-        throws IOException, ServletException {

+        throws IOException {

         InputStream is = request.getInputStream();

         byte[] buf = new byte[512];

         while (is.available() > 0) {

             log("Available: " + is.available());

             int n = is.read(buf);

             if (n > 0) {

-                log("Read " + n + " bytes: " + new String(buf, 0, n) 

+                log("Read " + n + " bytes: " + new String(buf, 0, n)

                         + " for session: " + request.getSession(true).getId());

             } else if (n < 0) {

                 log("End of file: " + n);

@@ -169,6 +173,7 @@
         }

     }

 

+    @Override

     protected void service(HttpServletRequest request, HttpServletResponse response)

         throws IOException, ServletException {

         // Compatibility method: equivalent method using the regular connection model

@@ -180,7 +185,7 @@
         writer.println("Configure a connector that supports Comet and try again.");

         writer.println("</body></html>");

     }

-    

+

 

     /**

      * Poller class.

@@ -189,10 +194,11 @@
 

         protected boolean running = true;

         protected ArrayList<String> messages = new ArrayList<String>();

-        

+

         public MessageSender() {

+            // Default contructor

         }

-        

+

         public void stop() {

             running = false;

             synchronized (messages) {

@@ -200,14 +206,6 @@
             }

         }

 

-        /**

-         * Add specified socket and associated pool to the poller. The socket will

-         * be added to a temporary array, and polled first after a maximum amount

-         * of time equal to pollTime (in most cases, latency will be much lower,

-         * however).

-         *

-         * @param socket to add to the poller

-         */

         public void send(String user, String message) {

             synchronized (messages) {

                 messages.add("[" + user + "]: " + message);

@@ -219,6 +217,7 @@
          * The background thread that listens for incoming TCP/IP connections and

          * hands them off to an appropriate processor.

          */

+        @Override

         public void run() {

 

             // Loop until we receive a shutdown command

@@ -226,7 +225,7 @@
                 String[] pendingMessages;

                 synchronized (messages) {

                     try {

-                        if (messages.size() == 0) {

+                        if (running && messages.size() == 0) {

                             messages.wait();

                         }

                     } catch (InterruptedException e) {

@@ -261,7 +260,7 @@
      * in HTML.

      *

      * @param message The message string to be filtered

-     * @author Copied from org.apache.catalina.util.RequestUtil#filter(String) 

+     * @author Copied from org.apache.catalina.util.RequestUtil#filter(String)

      */

     protected static String filter(String message) {

         if (message == null)

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/checkbox/CheckTest.class b/tomcat-uid/webapps/examples/WEB-INF/classes/checkbox/CheckTest.class
index 87011a7..e5fc31c 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/checkbox/CheckTest.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/checkbox/CheckTest.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/checkbox/CheckTest.java b/tomcat-uid/webapps/examples/WEB-INF/classes/checkbox/CheckTest.java
index 70623e2..c25448b 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/checkbox/CheckTest.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/checkbox/CheckTest.java
@@ -22,10 +22,10 @@
     String b[] = new String[] { "1", "2", "3", "4" };

 

     public String[] getFruit() {

-	return b;

+        return b;

     }

 

     public void setFruit(String [] b) {

-	this.b = b;

+        this.b = b;

     }

 }

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/colors/ColorGameBean.class b/tomcat-uid/webapps/examples/WEB-INF/classes/colors/ColorGameBean.class
index 408dc45..bed4bf3 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/colors/ColorGameBean.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/colors/ColorGameBean.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/colors/ColorGameBean.java b/tomcat-uid/webapps/examples/WEB-INF/classes/colors/ColorGameBean.java
index 5748217..6e2d741 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/colors/ColorGameBean.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/colors/ColorGameBean.java
@@ -16,8 +16,6 @@
 */

 package colors;

 

-import javax.servlet.http.*;

-

 public class ColorGameBean {

 

     private String background = "yellow";

@@ -26,90 +24,90 @@
     private String color2 = background;

     private String hint = "no";

     private int attempts = 0;

-	private int intval = 0;

+        private int intval = 0;

     private boolean tookHints = false;

 

-    public void processRequest(HttpServletRequest request) {

+    public void processRequest() {

 

-	// background = "yellow";

-	// foreground = "red";

+        // background = "yellow";

+        // foreground = "red";

 

-	if (! color1.equals(foreground)) {

-	    if (color1.equalsIgnoreCase("black") ||

-			color1.equalsIgnoreCase("cyan")) {

-			background = color1;

-		}

-	}

+        if (! color1.equals(foreground)) {

+            if (color1.equalsIgnoreCase("black") ||

+                        color1.equalsIgnoreCase("cyan")) {

+                        background = color1;

+                }

+        }

 

-	if (! color2.equals(background)) {

-	    if (color2.equalsIgnoreCase("black") ||

-			color2.equalsIgnoreCase("cyan")) {

-			foreground = color2;

-	    }

-	}

+        if (! color2.equals(background)) {

+            if (color2.equalsIgnoreCase("black") ||

+                        color2.equalsIgnoreCase("cyan")) {

+                        foreground = color2;

+            }

+        }

 

-	attempts++;

+        attempts++;

     }

 

     public void setColor2(String x) {

-	color2 = x;

+        color2 = x;

     }

 

     public void setColor1(String x) {

-	color1 = x;

+        color1 = x;

     }

 

     public void setAction(String x) {

-	if (!tookHints)

-	    tookHints = x.equalsIgnoreCase("Hint");

-	hint = x;

+        if (!tookHints)

+            tookHints = x.equalsIgnoreCase("Hint");

+        hint = x;

     }

 

     public String getColor2() {

-	 return background;

+         return background;

     }

 

     public String getColor1() {

-	 return foreground;

+         return foreground;

     }

 

     public int getAttempts() {

-	return attempts;

+        return attempts;

     }

 

     public boolean getHint() {

-	return hint.equalsIgnoreCase("Hint");

+        return hint.equalsIgnoreCase("Hint");

     }

 

     public boolean getSuccess() {

-	if (background.equalsIgnoreCase("black") ||

-	    background.equalsIgnoreCase("cyan")) {

-	

-	    if (foreground.equalsIgnoreCase("black") ||

-		foreground.equalsIgnoreCase("cyan"))

-		return true;

-	    else

-		return false;

-	}

+        if (background.equalsIgnoreCase("black") ||

+            background.equalsIgnoreCase("cyan")) {

 

-	return false;

+            if (foreground.equalsIgnoreCase("black") ||

+                foreground.equalsIgnoreCase("cyan")) {

+                return true;

+            }

+            return false;

+        }

+

+        return false;

     }

 

     public boolean getHintTaken() {

-	return tookHints;

+        return tookHints;

     }

 

     public void reset() {

-	foreground = "red";

-	background = "yellow";

+        foreground = "red";

+        background = "yellow";

     }

 

     public void setIntval(int value) {

-	intval = value;

-	}

+        intval = value;

+        }

 

     public int getIntval() {

-	return intval;

-	}

+        return intval;

+        }

 }

 

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilter.class b/tomcat-uid/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilter.class
index 619a1a2..f81aba7 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilter.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilter.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilter.java b/tomcat-uid/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilter.java
index fc298e2..350393a 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilter.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilter.java
@@ -14,11 +14,14 @@
 * See the License for the specific language governing permissions and

 * limitations under the License.

 */

-

 package compressionFilters;

 

 import java.io.IOException;

+import java.util.ArrayList;

 import java.util.Enumeration;

+import java.util.List;

+import java.util.StringTokenizer;

+

 import javax.servlet.Filter;

 import javax.servlet.FilterChain;

 import javax.servlet.FilterConfig;

@@ -28,7 +31,6 @@
 import javax.servlet.http.HttpServletRequest;

 import javax.servlet.http.HttpServletResponse;

 

-

 /**

  * Implementation of <code>javax.servlet.Filter</code> used to compress

  * the ServletResponse if it is bigger than a threshold.

@@ -36,7 +38,7 @@
  * @author Amy Roh

  * @author Dmitri Valdin

  */

-public class CompressionFilter implements Filter{

+public class CompressionFilter implements Filter {

 

     /**

      * The filter configuration object we are associated with.  If this value

@@ -45,18 +47,32 @@
     private FilterConfig config = null;

 

     /**

-     * Minimal reasonable threshold

+     * Minimal reasonable threshold.

      */

     private int minThreshold = 128;

 

-

     /**

-     * The threshold number to compress

+     * The threshold number to compress.

      */

-    protected int compressionThreshold;

+    protected int compressionThreshold = 0;

 

     /**

-     * Debug level for this filter

+     * Minimal reasonable buffer.

+     */

+    private int minBuffer = 8192;  // 8KB is what tomcat would use by default anyway

+

+    /**

+     * The compression buffer size to avoid chunking.

+     */

+    protected int compressionBuffer = 0;

+

+    /**

+     * The mime types to compress.

+     */

+    protected String[] compressionMimeTypes = {"text/html", "text/xml", "text/plain"};

+

+    /**

+     * Debug level for this filter.

      */

     private int debug = 0;

 

@@ -65,7 +81,7 @@
      *

      * @param filterConfig The filter configuration object

      */

-

+    @Override

     public void init(FilterConfig filterConfig) {

 

         config = filterConfig;

@@ -73,9 +89,8 @@
             String value = filterConfig.getInitParameter("debug");

             if (value!=null) {

                 debug = Integer.parseInt(value);

-            } else {

-                debug = 0;

             }

+

             String str = filterConfig.getInitParameter("compressionThreshold");

             if (str!=null) {

                 compressionThreshold = Integer.parseInt(str);

@@ -86,12 +101,43 @@
                     }

                     compressionThreshold = minThreshold;

                 }

-            } else {

-                compressionThreshold = 0;

             }

 

-        } else {

-            compressionThreshold = 0;

+            str = filterConfig.getInitParameter("compressionBuffer");

+            if (str!=null) {

+                compressionBuffer = Integer.parseInt(str);

+                if (compressionBuffer < minBuffer) {

+                    if (debug > 0) {

+                        System.out.println("compressionBuffer should be >= " + minBuffer);

+                        System.out.println("compressionBuffer set to " + minBuffer);

+                    }

+                    compressionBuffer = minBuffer;

+                }

+            }

+

+            str = filterConfig.getInitParameter("compressionMimeTypes");

+            if (str!=null) {

+                List<String> values = new ArrayList<String>();

+                StringTokenizer st = new StringTokenizer(str, ",");

+

+                while (st.hasMoreTokens()) {

+                    String token = st.nextToken().trim();

+                    if (token.length() > 0) {

+                        values.add(token);

+                    }

+                }

+

+                if (values.size() > 0) {

+                    compressionMimeTypes = values.toArray(

+                            new String[values.size()]);

+                } else {

+                    compressionMimeTypes = null;

+                }

+

+                if (debug > 0) {

+                    System.out.println("compressionMimeTypes set to " + compressionMimeTypes);

+                }

+            }

         }

 

     }

@@ -99,6 +145,7 @@
     /**

     * Take this filter out of service.

     */

+    @Override

     public void destroy() {

 

         this.config = null;

@@ -121,7 +168,7 @@
      * It then invokes the next entity in the chain using the FilterChain object

      * (<code>chain.doFilter()</code>), <br>

      **/

-

+    @Override

     public void doFilter ( ServletRequest request, ServletResponse response,

                         FilterChain chain ) throws IOException, ServletException {

 

@@ -131,7 +178,7 @@
 

         if (compressionThreshold == 0) {

             if (debug > 0) {

-                System.out.println("doFilter gets called, but compressionTreshold is set to 0 - no compression");

+                System.out.println("doFilter got called, but compressionThreshold is set to 0 - no compression");

             }

             chain.doFilter(request, response);

             return;

@@ -144,7 +191,7 @@
             }

 

             // Are we allowed to compress ?

-            String s = (String) ((HttpServletRequest)request).getParameter("gzip");

+            String s = ((HttpServletRequest)request).getParameter("gzip");

             if ("false".equals(s)) {

                 if (debug > 0) {

                     System.out.println("got parameter gzip=false --> don't compress, just chain filter");

@@ -153,10 +200,10 @@
                 return;

             }

 

-            Enumeration e =

+            Enumeration<String> e =

                 ((HttpServletRequest)request).getHeaders("Accept-Encoding");

             while (e.hasMoreElements()) {

-                String name = (String)e.nextElement();

+                String name = e.nextElement();

                 if (name.indexOf("gzip") != -1) {

                     if (debug > 0) {

                         System.out.println("supports compression");

@@ -164,24 +211,20 @@
                     supportCompression = true;

                 } else {

                     if (debug > 0) {

-                        System.out.println("no support for compresion");

+                        System.out.println("no support for compression");

                     }

                 }

             }

         }

 

-        if (!supportCompression) {

-            if (debug > 0) {

-                System.out.println("doFilter gets called wo compression");

-            }

-            chain.doFilter(request, response);

-            return;

-        } else {

+        if (supportCompression) {

             if (response instanceof HttpServletResponse) {

                 CompressionServletResponseWrapper wrappedResponse =

                     new CompressionServletResponseWrapper((HttpServletResponse)response);

                 wrappedResponse.setDebugLevel(debug);

                 wrappedResponse.setCompressionThreshold(compressionThreshold);

+                wrappedResponse.setCompressionBuffer(compressionBuffer);

+                wrappedResponse.setCompressionMimeTypes(compressionMimeTypes);

                 if (debug > 0) {

                     System.out.println("doFilter gets called with compression");

                 }

@@ -192,6 +235,12 @@
                 }

                 return;

             }

+        } else {

+            if (debug > 0) {

+                System.out.println("doFilter gets called w/o compression");

+            }

+            chain.doFilter(request, response);

+            return;

         }

     }

 

@@ -206,12 +255,12 @@
     }

 

     /**

-     * Return filter config

      * Required by Weblogic 6.1

+     *

+     * @return the FilterConfig that was used to initialise this filter.

      */

     public FilterConfig getFilterConfig() {

         return config;

     }

-

 }

 

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilterTestServlet.class b/tomcat-uid/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilterTestServlet.class
index a48332d..ce695cb 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilterTestServlet.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilterTestServlet.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilterTestServlet.java b/tomcat-uid/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilterTestServlet.java
index 9f6090a..700cd1f 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilterTestServlet.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilterTestServlet.java
@@ -14,13 +14,16 @@
 * See the License for the specific language governing permissions and

 * limitations under the License.

 */

-

 package compressionFilters;

 

 import java.io.IOException;

 import java.util.Enumeration;

-import javax.servlet.*;

-import javax.servlet.http.*;

+

+import javax.servlet.ServletException;

+import javax.servlet.ServletOutputStream;

+import javax.servlet.http.HttpServlet;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

 

 /**

  * Very Simple test servlet to test compression filter

@@ -28,15 +31,18 @@
  */

 public class CompressionFilterTestServlet extends HttpServlet {

 

+    private static final long serialVersionUID = 1L;

+

+    @Override

     public void doGet(HttpServletRequest request, HttpServletResponse response)

         throws ServletException, IOException {

 

         ServletOutputStream out = response.getOutputStream();

         response.setContentType("text/plain");

 

-        Enumeration e = ((HttpServletRequest)request).getHeaders("Accept-Encoding");

+        Enumeration<String> e = request.getHeaders("Accept-Encoding");

         while (e.hasMoreElements()) {

-            String name = (String)e.nextElement();

+            String name = e.nextElement();

             out.println(name);

             if (name.indexOf("gzip") != -1) {

                 out.println("gzip supported -- able to compress");

@@ -48,6 +54,11 @@
 

 

         out.println("Compression Filter Test Servlet");

+        out.println("Minimum content length for compression is 128 bytes");

+        out.println("**********  32 bytes  **********");

+        out.println("**********  32 bytes  **********");

+        out.println("**********  32 bytes  **********");

+        out.println("**********  32 bytes  **********");

         out.close();

     }

 

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/compressionFilters/CompressionResponseStream.class b/tomcat-uid/webapps/examples/WEB-INF/classes/compressionFilters/CompressionResponseStream.class
index a52f332..3d05f19 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/compressionFilters/CompressionResponseStream.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/compressionFilters/CompressionResponseStream.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/compressionFilters/CompressionResponseStream.java b/tomcat-uid/webapps/examples/WEB-INF/classes/compressionFilters/CompressionResponseStream.java
index 120b82a..a79027a 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/compressionFilters/CompressionResponseStream.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/compressionFilters/CompressionResponseStream.java
@@ -19,9 +19,8 @@
 import java.io.IOException;

 import java.io.OutputStream;

 import java.util.zip.GZIPOutputStream;

-import javax.servlet.ServletOutputStream;

-import javax.servlet.http.HttpServletResponse;

 

+import javax.servlet.ServletOutputStream;

 

 /**

  * Implementation of <b>ServletOutputStream</b> that works with

@@ -30,25 +29,24 @@
  * @author Amy Roh

  * @author Dmitri Valdin

  */

-public class CompressionResponseStream

-    extends ServletOutputStream {

-

+public class CompressionResponseStream extends ServletOutputStream {

 

     // ----------------------------------------------------------- Constructors

 

-

     /**

      * Construct a servlet output stream associated with the specified Response.

      *

-     * @param response The associated response

+     * @param responseWrapper The associated response wrapper

+     * @param originalOutput the output stream

      */

-    public CompressionResponseStream(HttpServletResponse response) throws IOException{

+    public CompressionResponseStream(

+            CompressionServletResponseWrapper responseWrapper,

+            ServletOutputStream originalOutput) {

 

         super();

         closed = false;

-        this.response = response;

-        this.output = response.getOutputStream();

-

+        this.response = responseWrapper;

+        this.output = originalOutput;

     }

 

 

@@ -62,6 +60,16 @@
     protected int compressionThreshold = 0;

 

     /**

+     * The compression buffer size to avoid chunking

+     */

+    protected int compressionBuffer = 0;

+

+    /**

+     * The mime types to compress

+     */

+    protected String[] compressionMimeTypes = {"text/html", "text/xml", "text/plain"};

+

+    /**

      * Debug level

      */

     private int debug = 0;

@@ -95,10 +103,10 @@
     /**

      * The response with which this servlet output stream is associated.

      */

-    protected HttpServletResponse response = null;

+    protected CompressionServletResponseWrapper response = null;

 

     /**

-     * The underlying servket output stream to which we should write data.

+     * The underlying servlet output stream to which we should write data.

      */

     protected ServletOutputStream output = null;

 

@@ -116,11 +124,31 @@
     /**

      * Set the compressionThreshold number and create buffer for this size

      */

-    protected void setBuffer(int threshold) {

-        compressionThreshold = threshold;

-        buffer = new byte[compressionThreshold];

+    protected void setCompressionThreshold(int compressionThreshold) {

+        this.compressionThreshold = compressionThreshold;

+        buffer = new byte[this.compressionThreshold];

         if (debug > 1) {

-            System.out.println("buffer is set to "+compressionThreshold);

+            System.out.println("compressionThreshold is set to "+ this.compressionThreshold);

+        }

+    }

+

+    /**

+     * The compression buffer size to avoid chunking

+     */

+    protected void setCompressionBuffer(int compressionBuffer) {

+        this.compressionBuffer = compressionBuffer;

+        if (debug > 1) {

+            System.out.println("compressionBuffer is set to "+ this.compressionBuffer);

+        }

+    }

+

+    /**

+     * Set supported mime types

+     */

+    public void setCompressionMimeTypes(String[] compressionMimeTypes) {

+        this.compressionMimeTypes = compressionMimeTypes;

+        if (debug > 1) {

+            System.out.println("compressionMimeTypes is set to " + this.compressionMimeTypes);

         }

     }

 

@@ -128,6 +156,7 @@
      * Close this output stream, causing any buffered data to be flushed and

      * any further output data to throw an IOException.

      */

+    @Override

     public void close() throws IOException {

 

         if (debug > 1) {

@@ -162,6 +191,7 @@
      * Flush any buffered data for this output stream, which also causes the

      * response to be committed.

      */

+    @Override

     public void flush() throws IOException {

 

         if (debug > 1) {

@@ -199,6 +229,7 @@
      *

      * @exception IOException if an input/output error occurs

      */

+    @Override

     public void write(int b) throws IOException {

 

         if (debug > 1) {

@@ -224,6 +255,7 @@
      *

      * @exception IOException if an input/output error occurs

      */

+    @Override

     public void write(byte b[]) throws IOException {

 

         write(b, 0, b.length);

@@ -241,6 +273,7 @@
      *

      * @exception IOException if an input/output error occurs

      */

+    @Override

     public void write(byte b[], int off, int len) throws IOException {

 

         if (debug > 1) {

@@ -293,12 +326,53 @@
             if (debug > 1) {

                 System.out.println("new GZIPOutputStream");

             }

+

+            boolean alreadyCompressed = false;

+            String contentEncoding = response.getHeader("Content-Encoding");

+            if (contentEncoding != null) {

+                if (contentEncoding.contains("gzip")) {

+                    alreadyCompressed = true;

+                    if (debug > 0) {

+                        System.out.println("content is already compressed");

+                    }

+                } else {

+                    if (debug > 0) {

+                        System.out.println("content is not compressed yet");

+                    }

+                }

+            }

+

+            boolean compressibleMimeType = false;

+            // Check for compatible MIME-TYPE

+            if (compressionMimeTypes != null) {

+                if (startsWithStringArray(compressionMimeTypes, response.getContentType())) {

+                    compressibleMimeType = true;

+                    if (debug > 0) {

+                        System.out.println("mime type " + response.getContentType() + " is compressible");

+                    }

+                } else {

+                    if (debug > 0) {

+                        System.out.println("mime type " + response.getContentType() + " is not compressible");

+                    }

+                }

+            }

+

             if (response.isCommitted()) {

                 if (debug > 1)

                     System.out.print("Response already committed. Using original output stream");

                 gzipstream = output;

+            } else if (alreadyCompressed) {

+                if (debug > 1)

+                    System.out.print("Response already compressed. Using original output stream");

+                gzipstream = output;

+            } else if (!compressibleMimeType) {

+                if (debug > 1)

+                    System.out.print("Response mime type is not compressible. Using original output stream");

+                gzipstream = output;

             } else {

                 response.addHeader("Content-Encoding", "gzip");

+                response.setContentLength(-1);  // don't use any preset content-length as it will be wrong after gzipping

+                response.setBufferSize(compressionBuffer);

                 gzipstream = new GZIPOutputStream(output);

             }

         }

@@ -319,4 +393,20 @@
 

     }

 

+    /**

+     * Checks if any entry in the string array starts with the specified value

+     *

+     * @param sArray the StringArray

+     * @param value string

+     */

+    private boolean startsWithStringArray(String sArray[], String value) {

+        if (value == null)

+           return false;

+        for (int i = 0; i < sArray.length; i++) {

+            if (value.startsWith(sArray[i])) {

+                return true;

+            }

+        }

+        return false;

+    }

 }

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/compressionFilters/CompressionServletResponseWrapper.class b/tomcat-uid/webapps/examples/WEB-INF/classes/compressionFilters/CompressionServletResponseWrapper.class
index 838e08c..1198e42 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/compressionFilters/CompressionServletResponseWrapper.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/compressionFilters/CompressionServletResponseWrapper.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/compressionFilters/CompressionServletResponseWrapper.java b/tomcat-uid/webapps/examples/WEB-INF/classes/compressionFilters/CompressionServletResponseWrapper.java
index e2cd66b..1e28d44 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/compressionFilters/CompressionServletResponseWrapper.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/compressionFilters/CompressionServletResponseWrapper.java
@@ -19,6 +19,9 @@
 import java.io.IOException;

 import java.io.OutputStreamWriter;

 import java.io.PrintWriter;

+import java.util.HashMap;

+import java.util.Map;

+

 import javax.servlet.ServletOutputStream;

 import javax.servlet.http.HttpServletResponse;

 import javax.servlet.http.HttpServletResponseWrapper;

@@ -30,7 +33,8 @@
  * @author Amy Roh

  * @author Dmitri Valdin

  */

-public class CompressionServletResponseWrapper extends HttpServletResponseWrapper {

+public class CompressionServletResponseWrapper

+        extends HttpServletResponseWrapper {

 

     // ----------------------------------------------------- Constructor

 

@@ -38,7 +42,6 @@
      * Calls the parent constructor which creates a ServletResponse adaptor

      * wrapping the given response object.

      */

-

     public CompressionServletResponseWrapper(HttpServletResponse response) {

         super(response);

         origResponse = response;

@@ -80,43 +83,61 @@
     /**

      * The threshold number to compress

      */

-    protected int threshold = 0;

+    protected int compressionThreshold = 0;

+

+    /**

+     * The compression buffer size

+     */

+    protected int compressionBuffer = 8192;  // 8KB default

+

+    /**

+     * The mime types to compress

+     */

+    protected String[] compressionMimeTypes = {"text/html", "text/xml", "text/plain"};

 

     /**

      * Debug level

      */

-    private int debug = 0;

+    protected int debug = 0;

 

     /**

-     * Content type

+     * keeps a copy of all headers set

      */

-    protected String contentType = null;

+    private Map<String,String> headerCopies = new HashMap<String,String>();

+

 

     // --------------------------------------------------------- Public Methods

 

 

     /**

-     * Set content type

-     */

-    public void setContentType(String contentType) {

-        if (debug > 1) {

-            System.out.println("setContentType to "+contentType);

-        }

-        this.contentType = contentType;

-        origResponse.setContentType(contentType);

-    }

-

-

-    /**

      * Set threshold number

      */

     public void setCompressionThreshold(int threshold) {

         if (debug > 1) {

             System.out.println("setCompressionThreshold to " + threshold);

         }

-        this.threshold = threshold;

+        this.compressionThreshold = threshold;

     }

 

+    /**

+     * Set compression buffer

+     */

+    public void setCompressionBuffer(int buffer) {

+        if (debug > 1) {

+            System.out.println("setCompressionBuffer to " + buffer);

+        }

+        this.compressionBuffer = buffer;

+    }

+

+    /**

+     * Set compressible mime types

+     */

+    public void setCompressionMimeTypes(String[] mimeTypes) {

+        if (debug > 1) {

+            System.out.println("setCompressionMimeTypes to " + mimeTypes);

+        }

+        this.compressionMimeTypes = mimeTypes;

+    }

 

     /**

      * Set debug level

@@ -137,12 +158,14 @@
             System.out.println("createOutputStream gets called");

         }

 

-        CompressionResponseStream stream = new CompressionResponseStream(origResponse);

+        CompressionResponseStream stream = new CompressionResponseStream(

+                this, origResponse.getOutputStream());

         stream.setDebugLevel(debug);

-        stream.setBuffer(threshold);

+        stream.setCompressionThreshold(compressionThreshold);

+        stream.setCompressionBuffer(compressionBuffer);

+        stream.setCompressionMimeTypes(compressionMimeTypes);

 

         return stream;

-

     }

 

 

@@ -158,6 +181,7 @@
                     stream.close();

             }

         } catch (IOException e) {

+            // Ignore

         }

     }

 

@@ -170,9 +194,10 @@
      *

      * @exception IOException if an input/output error occurs

      */

+    @Override

     public void flushBuffer() throws IOException {

         if (debug > 1) {

-            System.out.println("flush buffer @ CompressionServletResponseWrapper");

+            System.out.println("flush buffer @ GZipServletResponseWrapper");

         }

         ((CompressionResponseStream)stream).flush();

 

@@ -185,6 +210,7 @@
      *  already been called for this response

      * @exception IOException if an input/output error occurs

      */

+    @Override

     public ServletOutputStream getOutputStream() throws IOException {

 

         if (writer != null)

@@ -207,6 +233,7 @@
      *  already been called for this response

      * @exception IOException if an input/output error occurs

      */

+    @Override

     public PrintWriter getWriter() throws IOException {

 

         if (writer != null)

@@ -219,7 +246,6 @@
         if (debug > 1) {

             System.out.println("stream is set to "+stream+" in getWriter");

         }

-        //String charset = getCharsetFromContentType(contentType);

         String charEnc = origResponse.getCharacterEncoding();

         if (debug > 1) {

             System.out.println("character encoding is " + charEnc);

@@ -231,13 +257,29 @@
         } else {

             writer = new PrintWriter(stream);

         }

-        

+

         return (writer);

+    }

 

+    @Override

+    public String getHeader(String name) {

+        return headerCopies.get(name);

+    }

+

+    @Override

+    public void addHeader(String name, String value) {

+        if (headerCopies.containsKey(name)) {

+            String existingValue = headerCopies.get(name);

+            if ((existingValue != null) && (existingValue.length() > 0)) headerCopies.put(name, existingValue + "," + value);

+            else headerCopies.put(name, value);

+        } else headerCopies.put(name, value);

+        super.addHeader(name, value);

     }

 

 

-    public void setContentLength(int length) {

+    @Override

+    public void setHeader(String name, String value) {

+        headerCopies.put(name, value);

+        super.setHeader(name, value);

     }

-

 }

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/dates/JspCalendar.class b/tomcat-uid/webapps/examples/WEB-INF/classes/dates/JspCalendar.class
index 7ae66d3..56cd2b5 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/dates/JspCalendar.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/dates/JspCalendar.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/dates/JspCalendar.java b/tomcat-uid/webapps/examples/WEB-INF/classes/dates/JspCalendar.java
index 22e1f86..9c90bbd 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/dates/JspCalendar.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/dates/JspCalendar.java
@@ -16,137 +16,138 @@
 */

 package dates;

 

-import java.util.*;

+import java.util.Calendar;

+import java.util.Date;

 

 public class JspCalendar {

     Calendar  calendar = null;

 

     public JspCalendar() {

-	calendar = Calendar.getInstance();

-	Date trialTime = new Date();

-	calendar.setTime(trialTime);

+        calendar = Calendar.getInstance();

+        Date trialTime = new Date();

+        calendar.setTime(trialTime);

     }

 

     public int getYear() {

-	return calendar.get(Calendar.YEAR);

+        return calendar.get(Calendar.YEAR);

     }

-    

+

     public String getMonth() {

-	int m = getMonthInt();

-	String[] months = new String [] { "January", "February", "March",

-					"April", "May", "June",

-					"July", "August", "September",

-					"October", "November", "December" };

-	if (m > 12)

-	    return "Unknown to Man";

-	

-	return months[m - 1];

+        int m = getMonthInt();

+        String[] months = new String [] { "January", "February", "March",

+                                        "April", "May", "June",

+                                        "July", "August", "September",

+                                        "October", "November", "December" };

+        if (m > 12)

+            return "Unknown to Man";

+

+        return months[m - 1];

 

     }

 

     public String getDay() {

-	int x = getDayOfWeek();

-	String[] days = new String[] {"Sunday", "Monday", "Tuesday", "Wednesday", 

-				      "Thursday", "Friday", "Saturday"};

+        int x = getDayOfWeek();

+        String[] days = new String[] {"Sunday", "Monday", "Tuesday", "Wednesday",

+                                      "Thursday", "Friday", "Saturday"};

 

-	if (x > 7)

-	    return "Unknown to Man";

+        if (x > 7)

+            return "Unknown to Man";

 

-	return days[x - 1];

+        return days[x - 1];

 

     }

-    

+

     public int getMonthInt() {

-	return 1 + calendar.get(Calendar.MONTH);

+        return 1 + calendar.get(Calendar.MONTH);

     }

 

     public String getDate() {

-	return getMonthInt() + "/" + getDayOfMonth() + "/" +  getYear();

+        return getMonthInt() + "/" + getDayOfMonth() + "/" +  getYear();

 

     }

 

     public String getTime() {

-	return getHour() + ":" + getMinute() + ":" + getSecond();

+        return getHour() + ":" + getMinute() + ":" + getSecond();

     }

 

     public int getDayOfMonth() {

-	return calendar.get(Calendar.DAY_OF_MONTH);

+        return calendar.get(Calendar.DAY_OF_MONTH);

     }

 

     public int getDayOfYear() {

-	return calendar.get(Calendar.DAY_OF_YEAR);

+        return calendar.get(Calendar.DAY_OF_YEAR);

     }

 

     public int getWeekOfYear() {

-	return calendar.get(Calendar.WEEK_OF_YEAR);

+        return calendar.get(Calendar.WEEK_OF_YEAR);

     }

 

     public int getWeekOfMonth() {

-	return calendar.get(Calendar.WEEK_OF_MONTH);

+        return calendar.get(Calendar.WEEK_OF_MONTH);

     }

 

     public int getDayOfWeek() {

-	return calendar.get(Calendar.DAY_OF_WEEK);

+        return calendar.get(Calendar.DAY_OF_WEEK);

     }

-     

+

     public int getHour() {

-	return calendar.get(Calendar.HOUR_OF_DAY);

+        return calendar.get(Calendar.HOUR_OF_DAY);

     }

-    

+

     public int getMinute() {

-	return calendar.get(Calendar.MINUTE);

+        return calendar.get(Calendar.MINUTE);

     }

 

 

     public int getSecond() {

-	return calendar.get(Calendar.SECOND);

+        return calendar.get(Calendar.SECOND);

     }

 

     public static void main(String args[]) {

-	JspCalendar db = new JspCalendar();

-	p("date: " + db.getDayOfMonth());

-	p("year: " + db.getYear());

-	p("month: " + db.getMonth());

-	p("time: " + db.getTime());

-	p("date: " + db.getDate());

-	p("Day: " + db.getDay());

-	p("DayOfYear: " + db.getDayOfYear());

-	p("WeekOfYear: " + db.getWeekOfYear());

-	p("era: " + db.getEra());

-	p("ampm: " + db.getAMPM());

-	p("DST: " + db.getDSTOffset());

-	p("ZONE Offset: " + db.getZoneOffset());

-	p("TIMEZONE: " + db.getUSTimeZone());

+        JspCalendar db = new JspCalendar();

+        p("date: " + db.getDayOfMonth());

+        p("year: " + db.getYear());

+        p("month: " + db.getMonth());

+        p("time: " + db.getTime());

+        p("date: " + db.getDate());

+        p("Day: " + db.getDay());

+        p("DayOfYear: " + db.getDayOfYear());

+        p("WeekOfYear: " + db.getWeekOfYear());

+        p("era: " + db.getEra());

+        p("ampm: " + db.getAMPM());

+        p("DST: " + db.getDSTOffset());

+        p("ZONE Offset: " + db.getZoneOffset());

+        p("TIMEZONE: " + db.getUSTimeZone());

     }

 

     private static void p(String x) {

-	System.out.println(x);

+        System.out.println(x);

     }

 

 

     public int getEra() {

-	return calendar.get(Calendar.ERA);

+        return calendar.get(Calendar.ERA);

     }

 

     public String getUSTimeZone() {

-	String[] zones = new String[] {"Hawaii", "Alaskan", "Pacific",

-				       "Mountain", "Central", "Eastern"};

-	

-	return zones[10 + getZoneOffset()];

+        String[] zones = new String[] {"Hawaii", "Alaskan", "Pacific",

+                                       "Mountain", "Central", "Eastern"};

+

+        return zones[10 + getZoneOffset()];

     }

 

     public int getZoneOffset() {

-	return calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000);

+        return calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000);

     }

 

 

     public int getDSTOffset() {

-	return calendar.get(Calendar.DST_OFFSET)/(60*60*1000);

+        return calendar.get(Calendar.DST_OFFSET)/(60*60*1000);

     }

 

-    

+

     public int getAMPM() {

-	return calendar.get(Calendar.AM_PM);

+        return calendar.get(Calendar.AM_PM);

     }

 }

 

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/error/Smart.class b/tomcat-uid/webapps/examples/WEB-INF/classes/error/Smart.class
index 5445742..fd96ee2 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/error/Smart.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/error/Smart.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/error/Smart.java b/tomcat-uid/webapps/examples/WEB-INF/classes/error/Smart.java
index 3af3a38..67aff03 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/error/Smart.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/error/Smart.java
@@ -1,32 +1,30 @@
 /*

-* 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.

-*/

-

-

+ * 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.

+ */

 package error;

 

 public class Smart {

 

-  String name = "JSP";

+    String name = "JSP";

 

-  public String getName () {

-	return name;

-  }	

+    public String getName() {

+        return name;

+    }

 

-  public void setName (String name) {

-	this.name = name;

-  }	

+    public void setName(String name) {

+        this.name = name;

+    }

 }

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/examples/ExampleTagBase.class b/tomcat-uid/webapps/examples/WEB-INF/classes/examples/ExampleTagBase.class
index 35edd28..4ac9330 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/examples/ExampleTagBase.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/examples/ExampleTagBase.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/examples/ExampleTagBase.java b/tomcat-uid/webapps/examples/WEB-INF/classes/examples/ExampleTagBase.java
index 13bcd16..d339adb 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/examples/ExampleTagBase.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/examples/ExampleTagBase.java
@@ -16,52 +16,59 @@
 */

 package examples;

 

-import javax.servlet.jsp.*;

-import javax.servlet.jsp.tagext.*;

+import javax.servlet.jsp.JspException;

+import javax.servlet.jsp.tagext.BodyContent;

+import javax.servlet.jsp.tagext.BodyTagSupport;

+import javax.servlet.jsp.tagext.Tag;

 

 public abstract class ExampleTagBase extends BodyTagSupport {

 

+    private static final long serialVersionUID = 1L;

+

+    @Override

     public void setParent(Tag parent) {

         this.parent = parent;

     }

 

+    @Override

     public void setBodyContent(BodyContent bodyOut) {

         this.bodyOut = bodyOut;

     }

 

-    public void setPageContext(PageContext pageContext) {

-        this.pageContext = pageContext;

-    }

-

+    @Override

     public Tag getParent() {

         return this.parent;

     }

-    

+

+    @Override

     public int doStartTag() throws JspException {

         return SKIP_BODY;

     }

 

+    @Override

     public int doEndTag() throws JspException {

         return EVAL_PAGE;

     }

-    

 

-    // Default implementations for BodyTag methods as well

-    // just in case a tag decides to implement BodyTag.

+

+    @Override

     public void doInitBody() throws JspException {

+        // Default implementations for BodyTag methods as well

+        // just in case a tag decides to implement BodyTag.

     }

 

+    @Override

     public int doAfterBody() throws JspException {

         return SKIP_BODY;

     }

 

+    @Override

     public void release() {

         bodyOut = null;

         pageContext = null;

         parent = null;

     }

-    

+

     protected BodyContent bodyOut;

-    protected PageContext pageContext;

     protected Tag parent;

 }

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/examples/FooTag.class b/tomcat-uid/webapps/examples/WEB-INF/classes/examples/FooTag.class
index d60a6bd..3d6d760 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/examples/FooTag.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/examples/FooTag.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/examples/FooTag.java b/tomcat-uid/webapps/examples/WEB-INF/classes/examples/FooTag.java
index 4e11f30..c8fdb0a 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/examples/FooTag.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/examples/FooTag.java
@@ -16,9 +16,11 @@
 */

 package examples;

 

-import javax.servlet.jsp.*;

 import java.io.IOException;

 

+import javax.servlet.jsp.JspException;

+import javax.servlet.jsp.JspTagException;

+

 /**

  * Example1: the simplest tag

  * Collect attributes and call into some actions

@@ -26,20 +28,21 @@
  * <foo att1="..." att2="...." att3="...." />

  */

 

-public class FooTag 

-    extends ExampleTagBase 

-{

+public class FooTag extends ExampleTagBase {

+

+    private static final long serialVersionUID = 1L;

+

     private String atts[] = new String[3];

     int i = 0;

-    

+

     private final void setAtt(int index, String value) {

         atts[index] = value;

     }

-    

+

     public void setAtt1(String value) {

         setAtt(0, value);

     }

-    

+

     public void setAtt2(String value) {

         setAtt(1, value);

     }

@@ -47,29 +50,33 @@
     public void setAtt3(String value) {

         setAtt(2, value);

     }

-    

+

     /**

      * Process start tag

      *

      * @return EVAL_BODY_INCLUDE

      */

+    @Override

     public int doStartTag() throws JspException {

         i = 0;

-	return EVAL_BODY_BUFFERED;

+        return EVAL_BODY_BUFFERED;

     }

 

+    @Override

     public void doInitBody() throws JspException {

         pageContext.setAttribute("member", atts[i]);

         i++;

     }

-    

+

+    @Override

     public int doAfterBody() throws JspException {

         try {

             if (i == 3) {

                 bodyOut.writeOut(bodyOut.getEnclosingWriter());

                 return SKIP_BODY;

-            } else

-                pageContext.setAttribute("member", atts[i]);

+            }

+

+            pageContext.setAttribute("member", atts[i]);

             i++;

             return EVAL_BODY_BUFFERED;

         } catch (IOException ex) {

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/examples/FooTagExtraInfo.class b/tomcat-uid/webapps/examples/WEB-INF/classes/examples/FooTagExtraInfo.class
index 5ca9cfb..ead843e 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/examples/FooTagExtraInfo.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/examples/FooTagExtraInfo.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/examples/FooTagExtraInfo.java b/tomcat-uid/webapps/examples/WEB-INF/classes/examples/FooTagExtraInfo.java
index 99e5dfb..1ae0492 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/examples/FooTagExtraInfo.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/examples/FooTagExtraInfo.java
@@ -16,11 +16,14 @@
 */

 package examples;

 

-import javax.servlet.jsp.tagext.*;

+import javax.servlet.jsp.tagext.TagData;

+import javax.servlet.jsp.tagext.TagExtraInfo;

+import javax.servlet.jsp.tagext.VariableInfo;

 

 public class FooTagExtraInfo extends TagExtraInfo {

+    @Override

     public VariableInfo[] getVariableInfo(TagData data) {

-        return new VariableInfo[] 

+        return new VariableInfo[]

             {

                 new VariableInfo("member",

                                  "String",

@@ -30,4 +33,4 @@
     }

 }

 

-        

+

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/examples/LogTag.class b/tomcat-uid/webapps/examples/WEB-INF/classes/examples/LogTag.class
index 92abeab..7b62ca8 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/examples/LogTag.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/examples/LogTag.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/examples/LogTag.java b/tomcat-uid/webapps/examples/WEB-INF/classes/examples/LogTag.java
index 961cfc8..32584fd 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/examples/LogTag.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/examples/LogTag.java
@@ -16,19 +16,20 @@
 */

 package examples;

 

-

-import javax.servlet.jsp.*;

-

 import java.io.IOException;

 

+import javax.servlet.jsp.JspException;

+import javax.servlet.jsp.JspTagException;

+

 /**

- * Log the contents of the body. Could be used to handle errors etc. 

+ * Log the contents of the body. Could be used to handle errors etc.

  */

-public class LogTag 

-    extends ExampleTagBase

-{

+public class LogTag extends ExampleTagBase {

+

+    private static final long serialVersionUID = 1L;

+

     boolean toBrowser = false;

-    

+

     public void setToBrowser(String value) {

         if (value == null)

             toBrowser = false;

@@ -38,10 +39,12 @@
             toBrowser = false;

     }

 

+    @Override

     public int doStartTag() throws JspException {

         return EVAL_BODY_BUFFERED;

     }

-    

+

+    @Override

     public int doAfterBody() throws JspException {

         try {

             String s = bodyOut.getString();

@@ -55,6 +58,4 @@
     }

 }

 

-    

-        

-    

+

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/examples/ShowSource.class b/tomcat-uid/webapps/examples/WEB-INF/classes/examples/ShowSource.class
index c02b3ff..5e4fba6 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/examples/ShowSource.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/examples/ShowSource.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/examples/ShowSource.java b/tomcat-uid/webapps/examples/WEB-INF/classes/examples/ShowSource.java
index 8afbf09..195e32d 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/examples/ShowSource.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/examples/ShowSource.java
@@ -16,43 +16,45 @@
 */

 package examples;

 

+import java.io.IOException;

+import java.io.InputStream;

+import java.util.Locale;

 

-import javax.servlet.jsp.*;

-import javax.servlet.jsp.tagext.*;

-

-import java.io.*;

+import javax.servlet.jsp.JspException;

+import javax.servlet.jsp.JspTagException;

+import javax.servlet.jsp.JspWriter;

+import javax.servlet.jsp.tagext.TagSupport;

 

 /**

  * Display the sources of the JSP file.

  */

-public class ShowSource

-    extends TagSupport

-{

+public class ShowSource extends TagSupport {

+

+    private static final long serialVersionUID = 1L;

+

     String jspFile;

-    

+

     public void setJspFile(String jspFile) {

         this.jspFile = jspFile;

     }

 

+    @Override

     public int doEndTag() throws JspException {

-	if ((jspFile.indexOf( ".." ) >= 0) ||

-            (jspFile.toUpperCase().indexOf("/WEB-INF/") != 0) ||

-            (jspFile.toUpperCase().indexOf("/META-INF/") != 0))

-	    throw new JspTagException("Invalid JSP file " + jspFile);

+        if ((jspFile.indexOf( ".." ) >= 0) ||

+            (jspFile.toUpperCase(Locale.ENGLISH).indexOf("/WEB-INF/") != 0) ||

+            (jspFile.toUpperCase(Locale.ENGLISH).indexOf("/META-INF/") != 0))

+            throw new JspTagException("Invalid JSP file " + jspFile);

 

-        InputStream in

-            = pageContext.getServletContext().getResourceAsStream(jspFile);

-

+        InputStream in = pageContext.getServletContext().getResourceAsStream(

+                jspFile);

         if (in == null)

-            throw new JspTagException("Unable to find JSP file: "+jspFile);

-

-        JspWriter out = pageContext.getOut();

-

+            throw new JspTagException("Unable to find JSP file: " + jspFile);

 

         try {

+            JspWriter out = pageContext.getOut();

             out.println("<body>");

             out.println("<pre>");

-            for(int ch = in.read(); ch != -1; ch = in.read())

+            for (int ch = in.read(); ch != -1; ch = in.read())

                 if (ch == '<')

                     out.print("&lt;");

                 else

@@ -60,12 +62,16 @@
             out.println("</pre>");

             out.println("</body>");

         } catch (IOException ex) {

-            throw new JspTagException("IOException: "+ex.toString());

+            throw new JspTagException("IOException: " + ex.toString());

+        } finally {

+            try {

+                in.close();

+            } catch (IOException e) {

+                throw new JspTagException("Can't close inputstream: ", e);

+            }

         }

         return super.doEndTag();

     }

 }

 

-    

-        

-    

+

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/examples/ValuesTag.class b/tomcat-uid/webapps/examples/WEB-INF/classes/examples/ValuesTag.class
new file mode 100644
index 0000000..cc4d3ff
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/examples/ValuesTag.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/examples/ValuesTag.java b/tomcat-uid/webapps/examples/WEB-INF/classes/examples/ValuesTag.java
new file mode 100644
index 0000000..20468dc
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/examples/ValuesTag.java
@@ -0,0 +1,79 @@
+/*

+ * 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.

+ */

+package examples;

+

+import java.io.IOException;

+

+import javax.servlet.jsp.JspException;

+import javax.servlet.jsp.JspTagException;

+import javax.servlet.jsp.JspWriter;

+import javax.servlet.jsp.tagext.TagSupport;

+

+/**

+ * Accept and display a value.

+ */

+public class ValuesTag extends TagSupport {

+

+    private static final long serialVersionUID = 1L;

+

+    // Using "-1" as the default value,

+    // in the assumption that it won't be used as the value.

+    // Cannot use null here, because null is an important case

+    // that should be present in the tests.

+    private Object objectValue = "-1";

+    private String stringValue = "-1";

+    private long longValue = -1;

+    private double doubleValue = -1;

+

+    public void setObject(Object objectValue) {

+        this.objectValue = objectValue;

+    }

+

+    public void setString(String stringValue) {

+        this.stringValue = stringValue;

+    }

+

+    public void setLong(long longValue) {

+        this.longValue = longValue;

+    }

+

+    public void setDouble(double doubleValue) {

+        this.doubleValue = doubleValue;

+    }

+

+    @Override

+    public int doEndTag() throws JspException {

+        JspWriter out = pageContext.getOut();

+

+        try {

+            if (!"-1".equals(objectValue)) {

+                out.print(objectValue);

+            } else if (!"-1".equals(stringValue)) {

+                out.print(stringValue);

+            } else if (longValue != -1) {

+                out.print(longValue);

+            } else if (doubleValue != -1) {

+                out.print(doubleValue);

+            } else {

+                out.print("-1");

+            }

+        } catch (IOException ex) {

+            throw new JspTagException("IOException: " + ex.toString(), ex);

+        }

+        return super.doEndTag();

+    }

+}

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/filters/ExampleFilter.class b/tomcat-uid/webapps/examples/WEB-INF/classes/filters/ExampleFilter.class
index 10a6710..12e41d8 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/filters/ExampleFilter.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/filters/ExampleFilter.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/filters/ExampleFilter.java b/tomcat-uid/webapps/examples/WEB-INF/classes/filters/ExampleFilter.java
index 0601b87..59764ef 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/filters/ExampleFilter.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/filters/ExampleFilter.java
@@ -19,6 +19,7 @@
 

 

 import java.io.IOException;

+

 import javax.servlet.Filter;

 import javax.servlet.FilterChain;

 import javax.servlet.FilterConfig;

@@ -67,6 +68,7 @@
     /**

      * Take this filter out of service.

      */

+    @Override

     public void destroy() {

 

         this.attribute = null;

@@ -80,27 +82,28 @@
      * current filter stack, including the ultimately invoked servlet.

      *

      * @param request The servlet request we are processing

-     * @param result The servlet response we are creating

+     * @param response The servlet response we are creating

      * @param chain The filter chain we are processing

      *

      * @exception IOException if an input/output error occurs

      * @exception ServletException if a servlet error occurs

      */

+    @Override

     public void doFilter(ServletRequest request, ServletResponse response,

                          FilterChain chain)

-	throws IOException, ServletException {

+        throws IOException, ServletException {

 

-	// Store ourselves as a request attribute (if requested)

-	if (attribute != null)

-	    request.setAttribute(attribute, this);

+        // Store ourselves as a request attribute (if requested)

+        if (attribute != null)

+            request.setAttribute(attribute, this);

 

-	// Time and log the subsequent processing

-	long startTime = System.currentTimeMillis();

+        // Time and log the subsequent processing

+        long startTime = System.currentTimeMillis();

         chain.doFilter(request, response);

-	long stopTime = System.currentTimeMillis();

-	filterConfig.getServletContext().log

-	    (this.toString() + ": " + (stopTime - startTime) +

-	     " milliseconds");

+        long stopTime = System.currentTimeMillis();

+        filterConfig.getServletContext().log

+            (this.toString() + ": " + (stopTime - startTime) +

+             " milliseconds");

 

     }

 

@@ -108,12 +111,13 @@
     /**

      * Place this filter into service.

      *

-     * @param filterConfig The filter configuration object

+     * @param fConfig The filter configuration object

      */

-    public void init(FilterConfig filterConfig) throws ServletException {

+    @Override

+    public void init(FilterConfig fConfig) throws ServletException {

 

-	this.filterConfig = filterConfig;

-        this.attribute = filterConfig.getInitParameter("attribute");

+        this.filterConfig = fConfig;

+        this.attribute = fConfig.getInitParameter("attribute");

 

     }

 

@@ -121,14 +125,15 @@
     /**

      * Return a String representation of this object.

      */

+    @Override

     public String toString() {

 

-	if (filterConfig == null)

-	    return ("InvokerFilter()");

-	StringBuffer sb = new StringBuffer("InvokerFilter(");

-	sb.append(filterConfig);

-	sb.append(")");

-	return (sb.toString());

+        if (filterConfig == null)

+            return ("TimingFilter()");

+        StringBuilder sb = new StringBuilder("TimingFilter(");

+        sb.append(filterConfig);

+        sb.append(")");

+        return (sb.toString());

 

     }

 

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/filters/RequestDumperFilter.class b/tomcat-uid/webapps/examples/WEB-INF/classes/filters/RequestDumperFilter.class
deleted file mode 100644
index 5b244bf..0000000
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/filters/RequestDumperFilter.class
+++ /dev/null
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/filters/RequestDumperFilter.java b/tomcat-uid/webapps/examples/WEB-INF/classes/filters/RequestDumperFilter.java
deleted file mode 100644
index 7c45a40..0000000
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/filters/RequestDumperFilter.java
+++ /dev/null
@@ -1,198 +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.

-*/

-

-

-package filters;

-

-

-import java.io.IOException;

-import java.io.PrintWriter;

-import java.io.StringWriter;

-import java.sql.Timestamp;

-import java.util.Enumeration;

-import java.util.Locale;

-import javax.servlet.Filter;

-import javax.servlet.FilterChain;

-import javax.servlet.FilterConfig;

-import javax.servlet.ServletException;

-import javax.servlet.ServletRequest;

-import javax.servlet.ServletResponse;

-import javax.servlet.http.Cookie;

-import javax.servlet.http.HttpServletRequest;

-

-

-/**

- * Example filter that dumps interesting state information about a request

- * to the associated servlet context log file, before allowing the servlet

- * to process the request in the usual way.  This can be installed as needed

- * to assist in debugging problems.

- *

- * @author Craig McClanahan

- */

-public final class RequestDumperFilter implements Filter {

-

-

-    // ----------------------------------------------------- Instance Variables

-

-

-    /**

-     * The filter configuration object we are associated with.  If this value

-     * is null, this filter instance is not currently configured.

-     */

-    private FilterConfig filterConfig = null;

-

-

-    // --------------------------------------------------------- Public Methods

-

-

-    /**

-     * Take this filter out of service.

-     */

-    public void destroy() {

-

-        this.filterConfig = null;

-

-    }

-

-

-    /**

-     * Time the processing that is performed by all subsequent filters in the

-     * current filter stack, including the ultimately invoked servlet.

-     *

-     * @param request The servlet request we are processing

-     * @param result The servlet response we are creating

-     * @param chain The filter chain we are processing

-     *

-     * @exception IOException if an input/output error occurs

-     * @exception ServletException if a servlet error occurs

-     */

-    public void doFilter(ServletRequest request, ServletResponse response,

-                         FilterChain chain)

-	throws IOException, ServletException {

-

-        if (filterConfig == null)

-	    return;

-

-	// Render the generic servlet request properties

-	StringWriter sw = new StringWriter();

-	PrintWriter writer = new PrintWriter(sw);

-	writer.println("Request Received at " +

-		       (new Timestamp(System.currentTimeMillis())));

-	writer.println(" characterEncoding=" + request.getCharacterEncoding());

-	writer.println("     contentLength=" + request.getContentLength());

-	writer.println("       contentType=" + request.getContentType());

-	writer.println("            locale=" + request.getLocale());

-	writer.print("           locales=");

-	Enumeration locales = request.getLocales();

-	boolean first = true;

-	while (locales.hasMoreElements()) {

-	    Locale locale = (Locale) locales.nextElement();

-	    if (first)

-	        first = false;

-	    else

-	        writer.print(", ");

-	    writer.print(locale.toString());

-	}

-	writer.println();

-	Enumeration names = request.getParameterNames();

-	while (names.hasMoreElements()) {

-	    String name = (String) names.nextElement();

-	    writer.print("         parameter=" + name + "=");

-	    String values[] = request.getParameterValues(name);

-	    for (int i = 0; i < values.length; i++) {

-	        if (i > 0)

-		    writer.print(", ");

-		writer.print(values[i]);

-	    }

-	    writer.println();

-	}

-	writer.println("          protocol=" + request.getProtocol());

-	writer.println("        remoteAddr=" + request.getRemoteAddr());

-	writer.println("        remoteHost=" + request.getRemoteHost());

-	writer.println("            scheme=" + request.getScheme());

-	writer.println("        serverName=" + request.getServerName());

-	writer.println("        serverPort=" + request.getServerPort());

-	writer.println("          isSecure=" + request.isSecure());

-

-	// Render the HTTP servlet request properties

-	if (request instanceof HttpServletRequest) {

-	    writer.println("---------------------------------------------");

-	    HttpServletRequest hrequest = (HttpServletRequest) request;

-	    writer.println("       contextPath=" + hrequest.getContextPath());

-	    Cookie cookies[] = hrequest.getCookies();

-            if (cookies == null)

-                cookies = new Cookie[0];

-	    for (int i = 0; i < cookies.length; i++) {

-	        writer.println("            cookie=" + cookies[i].getName() +

-			       "=" + cookies[i].getValue());

-	    }

-	    names = hrequest.getHeaderNames();

-	    while (names.hasMoreElements()) {

-	        String name = (String) names.nextElement();

-		String value = hrequest.getHeader(name);

-	        writer.println("            header=" + name + "=" + value);

-	    }

-	    writer.println("            method=" + hrequest.getMethod());

-	    writer.println("          pathInfo=" + hrequest.getPathInfo());

-	    writer.println("       queryString=" + hrequest.getQueryString());

-	    writer.println("        remoteUser=" + hrequest.getRemoteUser());

-	    writer.println("requestedSessionId=" +

-			   hrequest.getRequestedSessionId());

-	    writer.println("        requestURI=" + hrequest.getRequestURI());

-	    writer.println("       servletPath=" + hrequest.getServletPath());

-	}

-	writer.println("=============================================");

-

-	// Log the resulting string

-	writer.flush();

-	filterConfig.getServletContext().log(sw.getBuffer().toString());

-

-	// Pass control on to the next filter

-        chain.doFilter(request, response);

-

-    }

-

-

-    /**

-     * Place this filter into service.

-     *

-     * @param filterConfig The filter configuration object

-     */

-    public void init(FilterConfig filterConfig) throws ServletException {

-

-	this.filterConfig = filterConfig;

-

-    }

-

-

-    /**

-     * Return a String representation of this object.

-     */

-    public String toString() {

-

-	if (filterConfig == null)

-	    return ("RequestDumperFilter()");

-	StringBuffer sb = new StringBuffer("RequestDumperFilter(");

-	sb.append(filterConfig);

-	sb.append(")");

-	return (sb.toString());

-

-    }

-

-

-}

-

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/filters/SetCharacterEncodingFilter.class b/tomcat-uid/webapps/examples/WEB-INF/classes/filters/SetCharacterEncodingFilter.class
deleted file mode 100644
index 94be00b..0000000
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/filters/SetCharacterEncodingFilter.class
+++ /dev/null
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/filters/SetCharacterEncodingFilter.java b/tomcat-uid/webapps/examples/WEB-INF/classes/filters/SetCharacterEncodingFilter.java
deleted file mode 100644
index 9373222..0000000
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/filters/SetCharacterEncodingFilter.java
+++ /dev/null
@@ -1,169 +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.

-*/

-

-package filters;

-

-

-import java.io.IOException;

-import javax.servlet.Filter;

-import javax.servlet.FilterChain;

-import javax.servlet.FilterConfig;

-import javax.servlet.ServletException;

-import javax.servlet.ServletRequest;

-import javax.servlet.ServletResponse;

-

-

-/**

- * <p>Example filter that sets the character encoding to be used in parsing the

- * incoming request, either unconditionally or only if the client did not

- * specify a character encoding.  Configuration of this filter is based on

- * the following initialization parameters:</p>

- * <ul>

- * <li><strong>encoding</strong> - The character encoding to be configured

- *     for this request, either conditionally or unconditionally based on

- *     the <code>ignore</code> initialization parameter.  This parameter

- *     is required, so there is no default.</li>

- * <li><strong>ignore</strong> - If set to "true", any character encoding

- *     specified by the client is ignored, and the value returned by the

- *     <code>selectEncoding()</code> method is set.  If set to "false,

- *     <code>selectEncoding()</code> is called <strong>only</strong> if the

- *     client has not already specified an encoding.  By default, this

- *     parameter is set to "true".</li>

- * </ul>

- *

- * <p>Although this filter can be used unchanged, it is also easy to

- * subclass it and make the <code>selectEncoding()</code> method more

- * intelligent about what encoding to choose, based on characteristics of

- * the incoming request (such as the values of the <code>Accept-Language</code>

- * and <code>User-Agent</code> headers, or a value stashed in the current

- * user's session.</p>

- *

- * @author Craig McClanahan

- */

-public class SetCharacterEncodingFilter implements Filter {

-

-

-    // ----------------------------------------------------- Instance Variables

-

-

-    /**

-     * The default character encoding to set for requests that pass through

-     * this filter.

-     */

-    protected String encoding = null;

-

-

-    /**

-     * The filter configuration object we are associated with.  If this value

-     * is null, this filter instance is not currently configured.

-     */

-    protected FilterConfig filterConfig = null;

-

-

-    /**

-     * Should a character encoding specified by the client be ignored?

-     */

-    protected boolean ignore = true;

-

-

-    // --------------------------------------------------------- Public Methods

-

-

-    /**

-     * Take this filter out of service.

-     */

-    public void destroy() {

-

-        this.encoding = null;

-        this.filterConfig = null;

-

-    }

-

-

-    /**

-     * Select and set (if specified) the character encoding to be used to

-     * interpret request parameters for this request.

-     *

-     * @param request The servlet request we are processing

-     * @param result The servlet response we are creating

-     * @param chain The filter chain we are processing

-     *

-     * @exception IOException if an input/output error occurs

-     * @exception ServletException if a servlet error occurs

-     */

-    public void doFilter(ServletRequest request, ServletResponse response,

-                         FilterChain chain)

-	throws IOException, ServletException {

-

-        // Conditionally select and set the character encoding to be used

-        if (ignore || (request.getCharacterEncoding() == null)) {

-            String encoding = selectEncoding(request);

-            if (encoding != null)

-                request.setCharacterEncoding(encoding);

-        }

-

-	// Pass control on to the next filter

-        chain.doFilter(request, response);

-

-    }

-

-

-    /**

-     * Place this filter into service.

-     *

-     * @param filterConfig The filter configuration object

-     */

-    public void init(FilterConfig filterConfig) throws ServletException {

-

-	this.filterConfig = filterConfig;

-        this.encoding = filterConfig.getInitParameter("encoding");

-        String value = filterConfig.getInitParameter("ignore");

-        if (value == null)

-            this.ignore = true;

-        else if (value.equalsIgnoreCase("true"))

-            this.ignore = true;

-        else if (value.equalsIgnoreCase("yes"))

-            this.ignore = true;

-        else

-            this.ignore = false;

-

-    }

-

-

-    // ------------------------------------------------------ Protected Methods

-

-

-    /**

-     * Select an appropriate character encoding to be used, based on the

-     * characteristics of the current request and/or filter initialization

-     * parameters.  If no character encoding should be set, return

-     * <code>null</code>.

-     * <p>

-     * The default implementation unconditionally returns the value configured

-     * by the <strong>encoding</strong> initialization parameter for this

-     * filter.

-     *

-     * @param request The servlet request we are processing

-     */

-    protected String selectEncoding(ServletRequest request) {

-

-        return (this.encoding);

-

-    }

-

-

-}

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/BookBean.class b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/BookBean.class
index 98b8c31..e817362 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/BookBean.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/BookBean.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/BookBean.java b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/BookBean.java
index 5e5dec4..cc7e805 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/BookBean.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/BookBean.java
@@ -22,7 +22,7 @@
     private String title;

     private String author;

     private String isbn;

-    

+

     public BookBean( String title, String author, String isbn ) {

         this.title = title;

         this.author = author;

@@ -32,13 +32,13 @@
     public String getTitle() {

         return this.title;

     }

-    

+

     public String getAuthor() {

         return this.author;

     }

-    

+

     public String getIsbn() {

         return this.isbn;

     }

-    

+

 }

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/FooBean.class b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/FooBean.class
index 6605d19..f624400 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/FooBean.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/FooBean.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/FooBean.java b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/FooBean.java
index c7f4d39..057a581 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/FooBean.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/FooBean.java
@@ -20,17 +20,17 @@
 

 public class FooBean {

     private String bar;

-    

+

     public FooBean() {

         bar = "Initial value";

     }

-    

+

     public String getBar() {

         return this.bar;

     }

-    

+

     public void setBar(String bar) {

         this.bar = bar;

     }

-    

+

 }

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/ValuesBean.class b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/ValuesBean.class
new file mode 100644
index 0000000..1ae6315
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/ValuesBean.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/ValuesBean.java b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/ValuesBean.java
new file mode 100644
index 0000000..b7ff056
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/ValuesBean.java
@@ -0,0 +1,52 @@
+/*

+* 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.

+*/

+

+

+package jsp2.examples;

+

+/**

+ * Accept and display a value.

+ */

+public class ValuesBean {

+    private String string;

+    private double doubleValue;

+    private long longValue;

+

+    public String getStringValue() {

+        return this.string;

+    }

+

+    public void setStringValue(String string) {

+        this.string = string;

+    }

+

+    public double getDoubleValue() {

+        return doubleValue;

+    }

+

+    public void setDoubleValue(double doubleValue) {

+        this.doubleValue = doubleValue;

+    }

+

+    public long getLongValue() {

+        return longValue;

+    }

+

+    public void setLongValue(long longValue) {

+        this.longValue = longValue;

+    }

+}

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/el/Functions.class b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/el/Functions.class
index e0a869c..54f11ef 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/el/Functions.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/el/Functions.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/el/Functions.java b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/el/Functions.java
index c42c0f7..cc15bf3 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/el/Functions.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/el/Functions.java
@@ -16,28 +16,30 @@
 */

 package jsp2.examples.el;

 

+import java.util.Locale;

+

 /**

  * Defines the functions for the jsp2 example tag library.

- * 

+ *

  * <p>Each function is defined as a static method.</p>

  */

 public class Functions {

     public static String reverse( String text ) {

-        return new StringBuffer( text ).reverse().toString();

+        return new StringBuilder( text ).reverse().toString();

     }

 

     public static int numVowels( String text ) {

         String vowels = "aeiouAEIOU";

-	int result = 0;

+        int result = 0;

         for( int i = 0; i < text.length(); i++ ) {

-	    if( vowels.indexOf( text.charAt( i ) ) != -1 ) {

-	        result++;

-	    }

-	}

-	return result;

+            if( vowels.indexOf( text.charAt( i ) ) != -1 ) {

+                result++;

+            }

+        }

+        return result;

     }

 

     public static String caps( String text ) {

-        return text.toUpperCase();

+        return text.toUpperCase(Locale.ENGLISH);

     }

 }

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/EchoAttributesTag.class b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/EchoAttributesTag.class
index 5cf67e4..f1ca8cd 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/EchoAttributesTag.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/EchoAttributesTag.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/EchoAttributesTag.java b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/EchoAttributesTag.java
index c1a5f92..4dd5322 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/EchoAttributesTag.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/EchoAttributesTag.java
@@ -18,37 +18,40 @@
 

 package jsp2.examples.simpletag;

 

+import java.io.IOException;

+import java.util.ArrayList;

+

 import javax.servlet.jsp.JspException;

 import javax.servlet.jsp.JspWriter;

-import javax.servlet.jsp.tagext.SimpleTagSupport;

 import javax.servlet.jsp.tagext.DynamicAttributes;

-import java.util.ArrayList;

-import java.io.IOException;

+import javax.servlet.jsp.tagext.SimpleTagSupport;

 

 /**

- * SimpleTag handler that echoes all its attributes 

+ * SimpleTag handler that echoes all its attributes

  */

-public class EchoAttributesTag 

+public class EchoAttributesTag

     extends SimpleTagSupport

     implements DynamicAttributes

 {

-    private ArrayList keys = new ArrayList();

-    private ArrayList values = new ArrayList();

+    private ArrayList<String> keys = new ArrayList<String>();

+    private ArrayList<Object> values = new ArrayList<Object>();

 

+    @Override

     public void doTag() throws JspException, IOException {

-	JspWriter out = getJspContext().getOut();

-	for( int i = 0; i < keys.size(); i++ ) {

-	    String key = (String)keys.get( i );

-	    Object value = values.get( i );

-	    out.println( "<li>" + key + " = " + value + "</li>" );

+        JspWriter out = getJspContext().getOut();

+        for( int i = 0; i < keys.size(); i++ ) {

+            String key = keys.get( i );

+            Object value = values.get( i );

+            out.println( "<li>" + key + " = " + value + "</li>" );

         }

     }

 

-    public void setDynamicAttribute( String uri, String localName, 

-	Object value ) 

-	throws JspException

+    @Override

+    public void setDynamicAttribute( String uri, String localName,

+        Object value )

+        throws JspException

     {

-	keys.add( localName );

-	values.add( value );

+        keys.add( localName );

+        values.add( value );

     }

 }

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/FindBookSimpleTag.class b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/FindBookSimpleTag.class
index dd95ddb..4b3a691 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/FindBookSimpleTag.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/FindBookSimpleTag.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/FindBookSimpleTag.java b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/FindBookSimpleTag.java
index 3d4357d..7554558 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/FindBookSimpleTag.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/FindBookSimpleTag.java
@@ -20,6 +20,7 @@
 

 import javax.servlet.jsp.JspException;

 import javax.servlet.jsp.tagext.SimpleTagSupport;

+

 import jsp2.examples.BookBean;

 

 /**

@@ -28,17 +29,18 @@
  */

 public class FindBookSimpleTag extends SimpleTagSupport {

     private String var;

-    

+

     private static final String BOOK_TITLE = "The Lord of the Rings";

     private static final String BOOK_AUTHOR = "J. R. R. Tolkein";

     private static final String BOOK_ISBN = "0618002251";

 

+    @Override

     public void doTag() throws JspException {

         BookBean book = new BookBean( BOOK_TITLE, BOOK_AUTHOR, BOOK_ISBN );

         getJspContext().setAttribute( this.var, book );

     }

 

     public void setVar( String var ) {

-	this.var = var;

+        this.var = var;

     }

 }

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/HelloWorldSimpleTag.class b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/HelloWorldSimpleTag.class
index ff44a1d..21450f5 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/HelloWorldSimpleTag.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/HelloWorldSimpleTag.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/HelloWorldSimpleTag.java b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/HelloWorldSimpleTag.java
index 3085739..e068b65 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/HelloWorldSimpleTag.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/HelloWorldSimpleTag.java
@@ -18,15 +18,17 @@
 

 package jsp2.examples.simpletag;

 

+import java.io.IOException;

+

 import javax.servlet.jsp.JspException;

 import javax.servlet.jsp.tagext.SimpleTagSupport;

-import java.io.IOException;

 

 /**

  * SimpleTag handler that prints "Hello, world!"

  */

 public class HelloWorldSimpleTag extends SimpleTagSupport {

+    @Override

     public void doTag() throws JspException, IOException {

-	getJspContext().getOut().write( "Hello, world!" );

+        getJspContext().getOut().write( "Hello, world!" );

     }

 }

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/RepeatSimpleTag.class b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/RepeatSimpleTag.class
index 55e4835..6307468 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/RepeatSimpleTag.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/RepeatSimpleTag.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/RepeatSimpleTag.java b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/RepeatSimpleTag.java
index 9903a21..a9dda90 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/RepeatSimpleTag.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/RepeatSimpleTag.java
@@ -18,25 +18,27 @@
 

 package jsp2.examples.simpletag;

 

-import javax.servlet.jsp.JspException;

-import javax.servlet.jsp.tagext.SimpleTagSupport;

 import java.io.IOException;

 

+import javax.servlet.jsp.JspException;

+import javax.servlet.jsp.tagext.SimpleTagSupport;

+

 /**

- * SimpleTag handler that accepts a num attribute and 

+ * SimpleTag handler that accepts a num attribute and

  * invokes its body 'num' times.

  */

 public class RepeatSimpleTag extends SimpleTagSupport {

     private int num;

 

+    @Override

     public void doTag() throws JspException, IOException {

         for (int i=0; i<num; i++) {

             getJspContext().setAttribute("count", String.valueOf( i + 1 ) );

-	    getJspBody().invoke(null);

+            getJspBody().invoke(null);

         }

     }

 

     public void setNum(int num) {

-	this.num = num;

+        this.num = num;

     }

 }

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/ShuffleSimpleTag.class b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/ShuffleSimpleTag.class
index 759c5ac..3ba23ed 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/ShuffleSimpleTag.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/ShuffleSimpleTag.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/ShuffleSimpleTag.java b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/ShuffleSimpleTag.java
index 64c5b72..e796af2 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/ShuffleSimpleTag.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/ShuffleSimpleTag.java
@@ -18,22 +18,28 @@
 

 package jsp2.examples.simpletag;

 

+import java.io.IOException;

+import java.util.Random;

+

 import javax.servlet.jsp.JspException;

 import javax.servlet.jsp.tagext.JspFragment;

 import javax.servlet.jsp.tagext.SimpleTagSupport;

-import java.io.IOException;

 

 /**

  * SimpleTag handler that accepts takes three attributes of type

  * JspFragment and invokes then in a random order.

  */

 public class ShuffleSimpleTag extends SimpleTagSupport {

+    // No need for this to use SecureRandom

+    private static Random random = new Random();

+

     private JspFragment fragment1;

     private JspFragment fragment2;

     private JspFragment fragment3;

 

+    @Override

     public void doTag() throws JspException, IOException {

-        switch( (int)(Math.random() * 6) ) {

+        switch(random.nextInt(6)) {

             case 0:

                 fragment1.invoke( null );

                 fragment2.invoke( null );

@@ -70,11 +76,11 @@
     public void setFragment1( JspFragment fragment1 ) {

         this.fragment1 = fragment1;

     }

-    

+

     public void setFragment2( JspFragment fragment2 ) {

         this.fragment2 = fragment2;

     }

-    

+

     public void setFragment3( JspFragment fragment3 ) {

         this.fragment3 = fragment3;

     }

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/TileSimpleTag.class b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/TileSimpleTag.class
index c33cccc..d2162fe 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/TileSimpleTag.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/TileSimpleTag.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/TileSimpleTag.java b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/TileSimpleTag.java
index 4f37e48..b95cc31 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/TileSimpleTag.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/TileSimpleTag.java
@@ -18,9 +18,10 @@
 

 package jsp2.examples.simpletag;

 

+import java.io.IOException;

+

 import javax.servlet.jsp.JspException;

 import javax.servlet.jsp.tagext.SimpleTagSupport;

-import java.io.IOException;

 

 /**

  * Displays a tile as a single cell in a table.

@@ -29,17 +30,18 @@
     private String color;

     private String label;

 

+    @Override

     public void doTag() throws JspException, IOException {

-	getJspContext().getOut().write( 

-	    "<td width=\"32\" height=\"32\" bgcolor=\"" + this.color + 

-	    "\"><font color=\"#ffffff\"><center>" + this.label + 

+        getJspContext().getOut().write(

+                "<td width=\"32\" height=\"32\" bgcolor=\"" + this.color +

+                "\"><font color=\"#ffffff\"><center>" + this.label +

                 "</center></font></td>" );

     }

 

     public void setColor( String color ) {

         this.color = color;

     }

-    

+

     public void setLabel( String label ) {

         this.label = label;

     }

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/listeners/ContextListener.class b/tomcat-uid/webapps/examples/WEB-INF/classes/listeners/ContextListener.class
index 43f66ff..26619b0 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/listeners/ContextListener.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/listeners/ContextListener.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/listeners/ContextListener.java b/tomcat-uid/webapps/examples/WEB-INF/classes/listeners/ContextListener.java
index 4702546..7fd012f 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/listeners/ContextListener.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/listeners/ContextListener.java
@@ -14,7 +14,6 @@
 * See the License for the specific language governing permissions and

 * limitations under the License.

 */

-

 package listeners;

 

 

@@ -54,10 +53,11 @@
      *

      * @param event The servlet context attribute event

      */

+    @Override

     public void attributeAdded(ServletContextAttributeEvent event) {

 

-	log("attributeAdded('" + event.getName() + "', '" +

-	    event.getValue() + "')");

+        log("attributeAdded('" + event.getName() + "', '" +

+                event.getValue() + "')");

 

     }

 

@@ -67,10 +67,11 @@
      *

      * @param event The servlet context attribute event

      */

+    @Override

     public void attributeRemoved(ServletContextAttributeEvent event) {

 

-	log("attributeRemoved('" + event.getName() + "', '" +

-	    event.getValue() + "')");

+        log("attributeRemoved('" + event.getName() + "', '" +

+                event.getValue() + "')");

 

     }

 

@@ -80,10 +81,11 @@
      *

      * @param event The servlet context attribute event

      */

+    @Override

     public void attributeReplaced(ServletContextAttributeEvent event) {

 

-	log("attributeReplaced('" + event.getName() + "', '" +

-	    event.getValue() + "')");

+        log("attributeReplaced('" + event.getName() + "', '" +

+                event.getValue() + "')");

 

     }

 

@@ -93,10 +95,11 @@
      *

      * @param event The servlet context event

      */

+    @Override

     public void contextDestroyed(ServletContextEvent event) {

 

-	log("contextDestroyed()");

-	this.context = null;

+        log("contextDestroyed()");

+        this.context = null;

 

     }

 

@@ -106,10 +109,11 @@
      *

      * @param event The servlet context event

      */

+    @Override

     public void contextInitialized(ServletContextEvent event) {

 

-	this.context = event.getServletContext();

-	log("contextInitialized()");

+        this.context = event.getServletContext();

+        log("contextInitialized()");

 

     }

 

@@ -124,10 +128,10 @@
      */

     private void log(String message) {

 

-	if (context != null)

-	    context.log("ContextListener: " + message);

-	else

-	    System.out.println("ContextListener: " + message);

+        if (context != null)

+            context.log("ContextListener: " + message);

+        else

+            System.out.println("ContextListener: " + message);

 

     }

 

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/listeners/SessionListener.class b/tomcat-uid/webapps/examples/WEB-INF/classes/listeners/SessionListener.class
index 8afca5e..22c53ea 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/listeners/SessionListener.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/listeners/SessionListener.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/listeners/SessionListener.java b/tomcat-uid/webapps/examples/WEB-INF/classes/listeners/SessionListener.java
index efac784..06a2aa8 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/listeners/SessionListener.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/listeners/SessionListener.java
@@ -1,23 +1,21 @@
 /*

-* 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.

-*/

-

+ * 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.

+ */

 package listeners;

 

-

 import javax.servlet.ServletContext;

 import javax.servlet.ServletContextEvent;

 import javax.servlet.ServletContextListener;

@@ -26,135 +24,136 @@
 import javax.servlet.http.HttpSessionEvent;

 import javax.servlet.http.HttpSessionListener;

 

-

 /**

  * Example listener for context-related application events, which were

- * introduced in the 2.3 version of the Servlet API.  This listener

- * merely documents the occurrence of such events in the application log

- * associated with our servlet context.

+ * introduced in the 2.3 version of the Servlet API. This listener merely

+ * documents the occurrence of such events in the application log associated

+ * with our servlet context.

  *

  * @author Craig R. McClanahan

  */

-public final class SessionListener

-    implements ServletContextListener,

-	       HttpSessionAttributeListener, HttpSessionListener {

-

+public final class SessionListener implements ServletContextListener,

+        HttpSessionAttributeListener, HttpSessionListener {

 

     // ----------------------------------------------------- Instance Variables

 

-

     /**

      * The servlet context with which we are associated.

      */

     private ServletContext context = null;

 

-

     // --------------------------------------------------------- Public Methods

 

-

     /**

      * Record the fact that a servlet context attribute was added.

      *

-     * @param event The session attribute event

+     * @param event

+     *            The session attribute event

      */

+    @Override

     public void attributeAdded(HttpSessionBindingEvent event) {

 

-	log("attributeAdded('" + event.getSession().getId() + "', '" +

-	    event.getName() + "', '" + event.getValue() + "')");

+        log("attributeAdded('" + event.getSession().getId() + "', '"

+                + event.getName() + "', '" + event.getValue() + "')");

 

     }

 

-

     /**

      * Record the fact that a servlet context attribute was removed.

      *

-     * @param event The session attribute event

+     * @param event

+     *            The session attribute event

      */

+    @Override

     public void attributeRemoved(HttpSessionBindingEvent event) {

 

-	log("attributeRemoved('" + event.getSession().getId() + "', '" +

-	    event.getName() + "', '" + event.getValue() + "')");

+        log("attributeRemoved('" + event.getSession().getId() + "', '"

+                + event.getName() + "', '" + event.getValue() + "')");

 

     }

 

-

     /**

      * Record the fact that a servlet context attribute was replaced.

      *

-     * @param event The session attribute event

+     * @param event

+     *            The session attribute event

      */

+    @Override

     public void attributeReplaced(HttpSessionBindingEvent event) {

 

-	log("attributeReplaced('" + event.getSession().getId() + "', '" +

-	    event.getName() + "', '" + event.getValue() + "')");

+        log("attributeReplaced('" + event.getSession().getId() + "', '"

+                + event.getName() + "', '" + event.getValue() + "')");

 

     }

 

-

     /**

      * Record the fact that this web application has been destroyed.

      *

-     * @param event The servlet context event

+     * @param event

+     *            The servlet context event

      */

+    @Override

     public void contextDestroyed(ServletContextEvent event) {

 

-	log("contextDestroyed()");

-	this.context = null;

+        log("contextDestroyed()");

+        this.context = null;

 

     }

 

-

     /**

      * Record the fact that this web application has been initialized.

      *

-     * @param event The servlet context event

+     * @param event

+     *            The servlet context event

      */

+    @Override

     public void contextInitialized(ServletContextEvent event) {

 

-	this.context = event.getServletContext();

-	log("contextInitialized()");

+        this.context = event.getServletContext();

+        log("contextInitialized()");

 

     }

 

-

     /**

      * Record the fact that a session has been created.

      *

-     * @param event The session event

+     * @param event

+     *            The session event

      */

+    @Override

     public void sessionCreated(HttpSessionEvent event) {

 

-	log("sessionCreated('" + event.getSession().getId() + "')");

+        log("sessionCreated('" + event.getSession().getId() + "')");

 

     }

 

-

     /**

      * Record the fact that a session has been destroyed.

      *

-     * @param event The session event

+     * @param event

+     *            The session event

      */

+    @Override

     public void sessionDestroyed(HttpSessionEvent event) {

 

-	log("sessionDestroyed('" + event.getSession().getId() + "')");

+        log("sessionDestroyed('" + event.getSession().getId() + "')");

 

     }

 

-

     // -------------------------------------------------------- Private Methods

 

-

     /**

      * Log a message to the servlet context application log.

      *

-     * @param message Message to be logged

+     * @param message

+     *            Message to be logged

      */

     private void log(String message) {

 

-	if (context != null)

-	    context.log("SessionListener: " + message);

-	else

-	    System.out.println("SessionListener: " + message);

+        if (context != null)

+            context.log("SessionListener: " + message);

+        else

+            System.out.println("SessionListener: " + message);

 

     }

 

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/num/NumberGuessBean.class b/tomcat-uid/webapps/examples/WEB-INF/classes/num/NumberGuessBean.class
index 51e5b62..e2051e9 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/num/NumberGuessBean.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/num/NumberGuessBean.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/num/NumberGuessBean.java b/tomcat-uid/webapps/examples/WEB-INF/classes/num/NumberGuessBean.java
index 7eed08e..a619edb 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/num/NumberGuessBean.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/num/NumberGuessBean.java
@@ -1,19 +1,19 @@
 /*

-* 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.

-*/

+ * 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.

+ */

 

 /*

  * Originally written by Jason Hunter, http://www.servlets.com.

@@ -21,59 +21,79 @@
 

 package num;

 

-import java.util.*;

+import java.io.Serializable;

+import java.util.Random;

 

-public class NumberGuessBean {

+public class NumberGuessBean implements Serializable {

 

-  int answer;

-  boolean success;

-  String hint;

-  int numGuesses;

+    private static final long serialVersionUID = 1L;

 

-  public NumberGuessBean() {

-    reset();

-  }

+    private int answer;

+    private String hint;

+    private int numGuesses;

+    private boolean success;

+    private Random random = new Random();

 

-  public void setGuess(String guess) {

-    numGuesses++;

-

-    int g;

-    try {

-      g = Integer.parseInt(guess);

-    }

-    catch (NumberFormatException e) {

-      g = -1;

+    public NumberGuessBean() {

+        reset();

     }

 

-    if (g == answer) {

-      success = true;

+    public int getAnswer() {

+        return answer;

     }

-    else if (g == -1) {

-      hint = "a number next time";

+

+    public void setAnswer(int answer) {

+        this.answer = answer;

     }

-    else if (g < answer) {

-      hint = "higher";

+

+    public String getHint() {

+        return "" + hint;

     }

-    else if (g > answer) {

-      hint = "lower";

+

+    public void setHint(String hint) {

+        this.hint = hint;

     }

-  }

 

-  public boolean getSuccess() {

-    return success;

-  }

+    public void setNumGuesses(int numGuesses) {

+        this.numGuesses = numGuesses;

+    }

 

-  public String getHint() {

-    return "" + hint;

-  }

+    public int getNumGuesses() {

+        return numGuesses;

+    }

 

-  public int getNumGuesses() {

-    return numGuesses;

-  }

+    public boolean getSuccess() {

+        return success;

+    }

 

-  public void reset() {

-    answer = Math.abs(new Random().nextInt() % 100) + 1;

-    success = false;

-    numGuesses = 0;

-  }

+    public void setSuccess(boolean success) {

+        this.success = success;

+    }

+

+    public void setGuess(String guess) {

+        numGuesses++;

+

+        int g;

+        try {

+            g = Integer.parseInt(guess);

+        } catch (NumberFormatException e) {

+            g = -1;

+        }

+

+        if (g == answer) {

+            success = true;

+        } else if (g == -1) {

+            hint = "a number next time";

+        } else if (g < answer) {

+            hint = "higher";

+        } else if (g > answer) {

+            hint = "lower";

+        }

+    }

+

+    public void reset() {

+        answer = Math.abs(random.nextInt() % 100) + 1;

+        success = false;

+        numGuesses = 0;

+    }

 }

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/servletToJsp.class b/tomcat-uid/webapps/examples/WEB-INF/classes/servletToJsp.class
index c95143b..4432239 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/servletToJsp.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/servletToJsp.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/servletToJsp.java b/tomcat-uid/webapps/examples/WEB-INF/classes/servletToJsp.java
index cfd198e..f5cd80a 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/servletToJsp.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/servletToJsp.java
@@ -14,19 +14,26 @@
 * See the License for the specific language governing permissions and

 * limitations under the License.

 */

-import javax.servlet.http.*;

 

-public class servletToJsp extends HttpServlet {

+import javax.servlet.http.HttpServlet;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

 

+public class ServletToJsp extends HttpServlet {

+

+    private static final long serialVersionUID = 1L;

+

+    @Override

     public void doGet (HttpServletRequest request,

-		       HttpServletResponse response) {

+            HttpServletResponse response) {

 

-	try {

-	    // Set the attribute and Forward to hello.jsp

-	    request.setAttribute ("servletName", "servletToJsp");

-	    getServletConfig().getServletContext().getRequestDispatcher("/jsp/jsptoserv/hello.jsp").forward(request, response);

-	} catch (Exception ex) {

-	    ex.printStackTrace ();

-	}

+       try {

+           // Set the attribute and Forward to hello.jsp

+           request.setAttribute ("servletName", "servletToJsp");

+           getServletConfig().getServletContext().getRequestDispatcher(

+                   "/jsp/jsptoserv/hello.jsp").forward(request, response);

+       } catch (Exception ex) {

+           ex.printStackTrace ();

+       }

     }

 }

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/sessions/DummyCart.class b/tomcat-uid/webapps/examples/WEB-INF/classes/sessions/DummyCart.class
index 5518952..2ad60c0 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/sessions/DummyCart.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/sessions/DummyCart.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/sessions/DummyCart.java b/tomcat-uid/webapps/examples/WEB-INF/classes/sessions/DummyCart.java
index f0597e7..01480a0 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/sessions/DummyCart.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/sessions/DummyCart.java
@@ -22,7 +22,7 @@
     Vector<String> v = new Vector<String>();

     String submit = null;

     String item = null;

-    

+

     private void addItem(String name) {

         v.addElement(name);

     }

@@ -34,7 +34,7 @@
     public void setItem(String name) {

         item = name;

     }

-    

+

     public void setSubmit(String s) {

         submit = s;

     }

@@ -44,15 +44,15 @@
         v.copyInto(s);

         return s;

     }

-    

+

     public void processRequest() {

-        // null value for submit - user hit enter instead of clicking on 

+        // null value for submit - user hit enter instead of clicking on

         // "add" or "remove"

         if (submit == null || submit.equals("add"))

             addItem(item);

-        else if (submit.equals("remove")) 

+        else if (submit.equals("remove"))

             removeItem(item);

-        

+

         // reset at the end of the request

         reset();

     }

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/util/CookieFilter.class b/tomcat-uid/webapps/examples/WEB-INF/classes/util/CookieFilter.class
new file mode 100644
index 0000000..429bbac
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/util/CookieFilter.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/util/CookieFilter.java b/tomcat-uid/webapps/examples/WEB-INF/classes/util/CookieFilter.java
new file mode 100644
index 0000000..005222f
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/util/CookieFilter.java
@@ -0,0 +1,81 @@
+/*

+ * 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.

+ */

+package util;

+

+import java.util.Locale;

+import java.util.StringTokenizer;

+

+/**

+ * Processes a cookie header and attempts to obfuscate any cookie values that

+ * represent session IDs from other web applications. Since session cookie names

+ * are configurable, as are session ID lengths, this filter is not expected to

+ * be 100% effective.

+ *

+ * It is required that the examples web application is removed in security

+ * conscious environments as documented in the Security How-To. This filter is

+ * intended to reduce the impact of failing to follow that advice. A failure by

+ * this filter to obfuscate a session ID or similar value is not a security

+ * vulnerability. In such instances the vulnerability is the failure to remove

+ * the examples web application.

+ */

+public class CookieFilter {

+

+    private static final String OBFUSCATED = "[obfuscated]";

+

+    private CookieFilter() {

+        // Hide default constructor

+    }

+

+    public static String filter(String input, String sessionId) {

+

+        StringBuilder sb = new StringBuilder(input.length());

+

+        // Cookie name value pairs are ';' separated.

+        // Session IDs don't use ; in the value so don't worry about quoted

+        // values that contain ;

+        StringTokenizer st = new StringTokenizer(input, ";");

+

+        boolean first = true;

+        while (st.hasMoreTokens()) {

+            if (first) {

+                first = false;

+            } else {

+                sb.append(';');

+            }

+            sb.append(filterNameValuePair(st.nextToken(), sessionId));

+        }

+

+

+        return sb.toString();

+    }

+

+    private static String filterNameValuePair(String input, String sessionId) {

+        int i = input.indexOf('=');

+        if (i == -1) {

+            return input;

+        }

+        String name = input.substring(0, i);

+        String value = input.substring(i + 1, input.length());

+

+        if (name.toLowerCase(Locale.ENGLISH).contains("jsessionid") &&

+                (sessionId == null || !value.contains(sessionId))) {

+            value = OBFUSCATED;

+        }

+

+        return name + "=" + value;

+    }

+}

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/util/HTMLFilter.class b/tomcat-uid/webapps/examples/WEB-INF/classes/util/HTMLFilter.class
index 7555aa0..1ed1273 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/util/HTMLFilter.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/util/HTMLFilter.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/util/HTMLFilter.java b/tomcat-uid/webapps/examples/WEB-INF/classes/util/HTMLFilter.java
index 3d85e81..ec66a89 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/util/HTMLFilter.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/util/HTMLFilter.java
@@ -39,7 +39,7 @@
 

         char content[] = new char[message.length()];

         message.getChars(0, message.length(), content, 0);

-        StringBuffer result = new StringBuffer(content.length + 50);

+        StringBuilder result = new StringBuilder(content.length + 50);

         for (int i = 0; i < content.length; i++) {

             switch (content[i]) {

             case '<':

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/validators/DebugValidator.class b/tomcat-uid/webapps/examples/WEB-INF/classes/validators/DebugValidator.class
index 90b65ce..4a9fb4c 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/validators/DebugValidator.class
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/validators/DebugValidator.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/validators/DebugValidator.java b/tomcat-uid/webapps/examples/WEB-INF/classes/validators/DebugValidator.java
index 1ddffc4..d5accba 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/classes/validators/DebugValidator.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/validators/DebugValidator.java
@@ -19,8 +19,9 @@
 package validators;

 

 

-import java.io.InputStream;

 import java.io.IOException;

+import java.io.InputStream;

+

 import javax.servlet.jsp.tagext.PageData;

 import javax.servlet.jsp.tagext.TagLibraryValidator;

 import javax.servlet.jsp.tagext.ValidationMessage;

@@ -55,6 +56,7 @@
      * @param uri The value of the URI argument in this directive

      * @param page The page data for this page

      */

+    @Override

     public ValidationMessage[] validate(String prefix, String uri,

                                         PageData page) {

 

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/ExamplesConfig.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/ExamplesConfig.class
new file mode 100644
index 0000000..188802e
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/ExamplesConfig.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/ExamplesConfig.java b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/ExamplesConfig.java
new file mode 100644
index 0000000..38ba838
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/ExamplesConfig.java
@@ -0,0 +1,66 @@
+/*

+ * 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.

+ */

+package websocket;

+

+import java.util.HashSet;

+import java.util.Set;

+

+import javax.websocket.Endpoint;

+import javax.websocket.server.ServerApplicationConfig;

+import javax.websocket.server.ServerEndpointConfig;

+

+import websocket.drawboard.DrawboardEndpoint;

+import websocket.echo.EchoEndpoint;

+

+public class ExamplesConfig implements ServerApplicationConfig {

+

+    @Override

+    public Set<ServerEndpointConfig> getEndpointConfigs(

+            Set<Class<? extends Endpoint>> scanned) {

+

+        Set<ServerEndpointConfig> result = new HashSet<ServerEndpointConfig>();

+

+        if (scanned.contains(EchoEndpoint.class)) {

+            result.add(ServerEndpointConfig.Builder.create(

+                    EchoEndpoint.class,

+                    "/websocket/echoProgrammatic").build());

+        }

+

+        if (scanned.contains(DrawboardEndpoint.class)) {

+            result.add(ServerEndpointConfig.Builder.create(

+                    DrawboardEndpoint.class,

+                    "/websocket/drawboard").build());

+        }

+

+        return result;

+    }

+

+

+    @Override

+    public Set<Class<?>> getAnnotatedEndpointClasses(Set<Class<?>> scanned) {

+        // Deploy all WebSocket endpoints defined by annotations in the examples

+        // web application. Filter out all others to avoid issues when running

+        // tests on Gump

+        Set<Class<?>> results = new HashSet<Class<?>>();

+        for (Class<?> clazz : scanned) {

+            if (clazz.getPackage().getName().startsWith("websocket.")) {

+                results.add(clazz);

+            }

+        }

+        return results;

+    }

+}

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/chat/ChatAnnotation.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/chat/ChatAnnotation.class
new file mode 100644
index 0000000..154bd54
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/chat/ChatAnnotation.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/chat/ChatAnnotation.java b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/chat/ChatAnnotation.java
new file mode 100644
index 0000000..d585d98
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/chat/ChatAnnotation.java
@@ -0,0 +1,109 @@
+/*

+ *  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.

+ */

+package websocket.chat;

+

+import java.io.IOException;

+import java.util.Set;

+import java.util.concurrent.CopyOnWriteArraySet;

+import java.util.concurrent.atomic.AtomicInteger;

+

+import javax.websocket.OnClose;

+import javax.websocket.OnError;

+import javax.websocket.OnMessage;

+import javax.websocket.OnOpen;

+import javax.websocket.Session;

+import javax.websocket.server.ServerEndpoint;

+

+import org.apache.juli.logging.Log;

+import org.apache.juli.logging.LogFactory;

+

+import util.HTMLFilter;

+

+@ServerEndpoint(value = "/websocket/chat")

+public class ChatAnnotation {

+

+    private static final Log log = LogFactory.getLog(ChatAnnotation.class);

+

+    private static final String GUEST_PREFIX = "Guest";

+    private static final AtomicInteger connectionIds = new AtomicInteger(0);

+    private static final Set<ChatAnnotation> connections =

+            new CopyOnWriteArraySet<ChatAnnotation>();

+

+    private final String nickname;

+    private Session session;

+

+    public ChatAnnotation() {

+        nickname = GUEST_PREFIX + connectionIds.getAndIncrement();

+    }

+

+

+    @OnOpen

+    public void start(Session session) {

+        this.session = session;

+        connections.add(this);

+        String message = String.format("* %s %s", nickname, "has joined.");

+        broadcast(message);

+    }

+

+

+    @OnClose

+    public void end() {

+        connections.remove(this);

+        String message = String.format("* %s %s",

+                nickname, "has disconnected.");

+        broadcast(message);

+    }

+

+

+    @OnMessage

+    public void incoming(String message) {

+        // Never trust the client

+        String filteredMessage = String.format("%s: %s",

+                nickname, HTMLFilter.filter(message.toString()));

+        broadcast(filteredMessage);

+    }

+

+

+

+

+    @OnError

+    public void onError(Throwable t) throws Throwable {

+        log.error("Chat Error: " + t.toString(), t);

+    }

+

+

+    private static void broadcast(String msg) {

+        for (ChatAnnotation client : connections) {

+            try {

+                synchronized (client) {

+                    client.session.getBasicRemote().sendText(msg);

+                }

+            } catch (IOException e) {

+                log.debug("Chat Error: Failed to send message to client", e);

+                connections.remove(client);

+                try {

+                    client.session.close();

+                } catch (IOException e1) {

+                    // Ignore

+                }

+                String message = String.format("* %s %s",

+                        client.nickname, "has been disconnected.");

+                broadcast(message);

+            }

+        }

+    }

+}

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/Client$1.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/Client$1.class
new file mode 100644
index 0000000..c152c6b
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/Client$1.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/Client.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/Client.class
new file mode 100644
index 0000000..53bb52a
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/Client.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/Client.java b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/Client.java
new file mode 100644
index 0000000..71e47c9
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/Client.java
@@ -0,0 +1,233 @@
+/*

+ *  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.

+ */

+package websocket.drawboard;

+

+import java.io.IOException;

+import java.util.LinkedList;

+

+import javax.websocket.CloseReason;

+import javax.websocket.CloseReason.CloseCodes;

+import javax.websocket.RemoteEndpoint.Async;

+import javax.websocket.SendHandler;

+import javax.websocket.SendResult;

+import javax.websocket.Session;

+

+import websocket.drawboard.wsmessages.AbstractWebsocketMessage;

+import websocket.drawboard.wsmessages.BinaryWebsocketMessage;

+import websocket.drawboard.wsmessages.CloseWebsocketMessage;

+import websocket.drawboard.wsmessages.StringWebsocketMessage;

+

+/**

+ * Represents a client with methods to send messages asynchronously.

+ */

+public class Client {

+

+    private final Session session;

+    private final Async async;

+

+    /**

+     * Contains the messages wich are buffered until the previous

+     * send operation has finished.

+     */

+    private final LinkedList<AbstractWebsocketMessage> messagesToSend =

+            new LinkedList<AbstractWebsocketMessage>();

+    /**

+     * If this client is currently sending a messages asynchronously.

+     */

+    private volatile boolean isSendingMessage = false;

+    /**

+     * If this client is closing. If <code>true</code>, new messages to

+     * send will be ignored.

+     */

+    private volatile boolean isClosing = false;

+    /**

+     * The length of all current buffered messages, to avoid iterating

+     * over a linked list.

+     */

+    private volatile long messagesToSendLength = 0;

+

+    public Client(Session session) {

+        this.session = session;

+        this.async = session.getAsyncRemote();

+    }

+

+    /**

+     * Asynchronously closes the Websocket session. This will wait until all

+     * remaining messages have been sent to the Client and then close

+     * the Websocket session.

+     */

+    public void close() {

+        sendMessage(new CloseWebsocketMessage());

+    }

+

+    /**

+     * Sends the given message asynchronously to the client.

+     * If there is already a async sending in progress, then the message

+     * will be buffered and sent when possible.<br><br>

+     *

+     * This method can be called from multiple threads.

+     * @param msg

+     */

+    public void sendMessage(AbstractWebsocketMessage msg) {

+        synchronized (messagesToSend) {

+            if (!isClosing) {

+                // Check if we have a Close message

+                if (msg instanceof CloseWebsocketMessage) {

+                    isClosing = true;

+                }

+

+                if (isSendingMessage) {

+                    // Check if the buffered messages exceed

+                    // a specific amount - in that case, disconnect the client

+                    // to prevent DoS.

+                    // In this case we check if there are >= 1000 messages

+                    // or length(of all messages) >= 1000000 bytes.

+                    if (messagesToSend.size() >= 1000

+                            || messagesToSendLength >= 1000000) {

+                        isClosing = true;

+

+                        // Discard the new message and close the session immediately.

+                        CloseReason cr = new CloseReason(

+                                CloseCodes.VIOLATED_POLICY,

+                                "Send Buffer exceeded");

+                        try {

+                            // TODO: close() may block if the remote endpoint doesn't read the data

+                            // (eventually there will be a TimeoutException). However, this method

+                            // (sendMessage) is intended to run asynchronous code and shouldn't

+                            // block. Otherwise it would temporarily stop processing of messages

+                            // from other clients.

+                            // Maybe call this method on another thread.

+                            // Note that when this method is called, the RemoteEndpoint.Async

+                            // is still in the process of sending data, so there probably should

+                            // be another way to abort the Websocket connection.

+                            // Ideally, there should be some abort() method that cancels the

+                            // connection immediately...

+                            session.close(cr);

+                        } catch (IOException e) {

+                            // Ignore

+                        }

+

+                    } else {

+

+                        // Check if the last message and the new message are

+                        // String messages - in that case we concatenate them

+                        // to reduce TCP overhead (using ";" as separator).

+                        if (msg instanceof StringWebsocketMessage

+                                && !messagesToSend.isEmpty()

+                                && messagesToSend.getLast()

+                                instanceof StringWebsocketMessage) {

+

+                            StringWebsocketMessage ms =

+                                    (StringWebsocketMessage) messagesToSend.removeLast();

+                            messagesToSendLength -= calculateMessageLength(ms);

+

+                            String concatenated = ms.getString() + ";" +

+                                    ((StringWebsocketMessage) msg).getString();

+                            msg = new StringWebsocketMessage(concatenated);

+                        }

+

+                        messagesToSend.add(msg);

+                        messagesToSendLength += calculateMessageLength(msg);

+                    }

+                } else {

+                    isSendingMessage = true;

+                    internalSendMessageAsync(msg);

+                }

+            }

+

+        }

+    }

+

+    private long calculateMessageLength(AbstractWebsocketMessage msg) {

+        if (msg instanceof BinaryWebsocketMessage) {

+            return ((BinaryWebsocketMessage) msg).getBytes().capacity();

+        } else if (msg instanceof StringWebsocketMessage) {

+            return ((StringWebsocketMessage) msg).getString().length() * 2;

+        }

+

+        return 0;

+    }

+

+    /**

+     * Internally sends the messages asynchronously.

+     * @param msg

+     */

+    private void internalSendMessageAsync(AbstractWebsocketMessage msg) {

+        try {

+            if (msg instanceof StringWebsocketMessage) {

+                StringWebsocketMessage sMsg = (StringWebsocketMessage) msg;

+                async.sendText(sMsg.getString(), sendHandler);

+

+            } else if (msg instanceof BinaryWebsocketMessage) {

+                BinaryWebsocketMessage bMsg = (BinaryWebsocketMessage) msg;

+                async.sendBinary(bMsg.getBytes(), sendHandler);

+

+            } else if (msg instanceof CloseWebsocketMessage) {

+                // Close the session.

+                session.close();

+            }

+        } catch (IllegalStateException ex) {

+            // Trying to write to the client when the session has

+            // already been closed.

+            // Ignore

+        } catch (IOException ex) {

+            // Trying to write to the client when the session has

+            // already been closed.

+            // Ignore

+        }

+    }

+

+

+

+    /**

+     * SendHandler that will continue to send buffered messages.

+     */

+    private final SendHandler sendHandler = new SendHandler() {

+        @Override

+        public void onResult(SendResult result) {

+            if (!result.isOK()) {

+                // Message could not be sent. In this case, we don't

+                // set isSendingMessage to false because we must assume the connection

+                // broke (and onClose will be called), so we don't try to send

+                // other messages.

+                // As a precaution, we close the session (e.g. if a send timeout occured).

+                // TODO: session.close() blocks, while this handler shouldn't block.

+                // Ideally, there should be some abort() method that cancels the

+                // connection immediately...

+                try {

+                    session.close();

+                } catch (IOException ex) {

+                    // Ignore

+                }

+            }

+            synchronized (messagesToSend) {

+

+                if (!messagesToSend.isEmpty()) {

+                    AbstractWebsocketMessage msg = messagesToSend.remove();

+                    messagesToSendLength -= calculateMessageLength(msg);

+

+                    internalSendMessageAsync(msg);

+

+                } else {

+                    isSendingMessage = false;

+                }

+

+            }

+        }

+    };

+

+}

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawMessage$ParseException.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawMessage$ParseException.class
new file mode 100644
index 0000000..51943a6
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawMessage$ParseException.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawMessage.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawMessage.class
new file mode 100644
index 0000000..f37e237
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawMessage.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawMessage.java b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawMessage.java
new file mode 100644
index 0000000..c218cc8
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawMessage.java
@@ -0,0 +1,270 @@
+/*

+ *  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.

+ */

+package websocket.drawboard;

+

+import java.awt.BasicStroke;

+import java.awt.Color;

+import java.awt.Graphics2D;

+import java.awt.geom.Arc2D;

+import java.awt.geom.Line2D;

+import java.awt.geom.Rectangle2D;

+

+/**

+ * A message that represents a drawing action.

+ * Note that we use primitive types instead of Point, Color etc.

+ * to reduce object allocation.<br><br>

+ *

+ * TODO: But a Color objects needs to be created anyway for drawing this

+ * onto a Graphics2D object, so this probably does not save much.

+ */

+public final class DrawMessage {

+

+    private int type;

+    private byte colorR, colorG, colorB, colorA;

+    private double thickness;

+    private double x1, y1, x2, y2;

+    private boolean lastInChain;

+

+    /**

+     * The type.<br>

+     * 1: Brush<br>

+     * 2: Line<br>

+     * 3: Rectangle<br>

+     * 4: Ellipse

+     */

+    public int getType() {

+        return type;

+    }

+    public void setType(int type) {

+        this.type = type;

+    }

+

+    public double getThickness() {

+        return thickness;

+    }

+    public void setThickness(double thickness) {

+        this.thickness = thickness;

+    }

+

+    public byte getColorR() {

+        return colorR;

+    }

+    public void setColorR(byte colorR) {

+        this.colorR = colorR;

+    }

+    public byte getColorG() {

+        return colorG;

+    }

+    public void setColorG(byte colorG) {

+        this.colorG = colorG;

+    }

+    public byte getColorB() {

+        return colorB;

+    }

+    public void setColorB(byte colorB) {

+        this.colorB = colorB;

+    }

+    public byte getColorA() {

+        return colorA;

+    }

+    public void setColorA(byte colorA) {

+        this.colorA = colorA;

+    }

+

+    public double getX1() {

+        return x1;

+    }

+    public void setX1(double x1) {

+        this.x1 = x1;

+    }

+    public double getX2() {

+        return x2;

+    }

+    public void setX2(double x2) {

+        this.x2 = x2;

+    }

+    public double getY1() {

+        return y1;

+    }

+    public void setY1(double y1) {

+        this.y1 = y1;

+    }

+    public double getY2() {

+        return y2;

+    }

+    public void setY2(double y2) {

+        this.y2 = y2;

+    }

+

+    /**

+     * Specifies if this DrawMessage is the last one in a chain

+     * (e.g. a chain of brush paths).<br>

+     * Currently it is unused.

+     */

+    public boolean isLastInChain() {

+        return lastInChain;

+    }

+    public void setLastInChain(boolean lastInChain) {

+        this.lastInChain = lastInChain;

+    }

+

+

+

+    public DrawMessage(int type, byte colorR, byte colorG, byte colorB,

+            byte colorA, double thickness, double x1, double x2, double y1,

+            double y2, boolean lastInChain) {

+

+        this.type = type;

+        this.colorR = colorR;

+        this.colorG = colorG;

+        this.colorB = colorB;

+        this.colorA = colorA;

+        this.thickness = thickness;

+        this.x1 = x1;

+        this.x2 = x2;

+        this.y1 = y1;

+        this.y2 = y2;

+        this.lastInChain = lastInChain;

+    }

+

+

+    /**

+     * Draws this DrawMessage onto the given Graphics2D.

+     * @param g

+     */

+    public void draw(Graphics2D g) {

+

+        g.setStroke(new BasicStroke((float) thickness,

+                BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER));

+        g.setColor(new Color(colorR & 0xFF, colorG & 0xFF, colorB & 0xFF,

+                colorA & 0xFF));

+

+        if (x1 == x2 && y1 == y2) {

+            // Always draw as arc to meet the behavior in the HTML5 Canvas.

+            Arc2D arc = new Arc2D.Double(x1, y1, 0, 0,

+                    0d, 360d, Arc2D.OPEN);

+            g.draw(arc);

+

+        } else if (type == 1 || type == 2) {

+            // Draw a line.

+            Line2D line = new Line2D.Double(x1, y1, x2, y2);

+            g.draw(line);

+

+        } else if (type == 3 || type == 4) {

+            double x1 = this.x1, x2 = this.x2,

+                    y1 = this.y1, y2 = this.y2;

+            if (x1 > x2) {

+                x1 = this.x2;

+                x2 = this.x1;

+            }

+            if (y1 > y2) {

+                y1 = this.y2;

+                y2 = this.y1;

+            }

+

+            // TODO: If (x1 == x2 || y1 == y2) draw as line.

+

+            if (type == 3) {

+                // Draw a rectangle.

+                Rectangle2D rect = new Rectangle2D.Double(x1, y1,

+                        x2 - x1, y2 - y1);

+                g.draw(rect);

+

+            } else if (type == 4) {

+                // Draw an ellipse.

+                Arc2D arc = new Arc2D.Double(x1, y1, x2 - x1, y2 - y1,

+                        0d, 360d, Arc2D.OPEN);

+                g.draw(arc);

+

+            }

+        }

+    }

+

+    /**

+     * Converts this message into a String representation that

+     * can be sent over WebSocket.<br>

+     * Since a DrawMessage consists only of numbers,

+     * we concatenate those numbers with a ",".

+     */

+    @Override

+    public String toString() {

+

+        return type + "," + (colorR & 0xFF) + "," + (colorG & 0xFF) + ","

+                + (colorB & 0xFF) + "," + (colorA & 0xFF) + "," + thickness

+                + "," + x1 + "," + y1 + "," + x2 + "," + y2 + ","

+                + (lastInChain ? "1" : "0");

+    }

+

+    public static DrawMessage parseFromString(String str)

+            throws ParseException {

+

+        int type;

+        byte[] colors = new byte[4];

+        double thickness;

+        double[] coords = new double[4];

+        boolean last;

+

+        try {

+            String[] elements = str.split(",");

+

+            type = Integer.parseInt(elements[0]);

+            if (!(type >= 1 && type <= 4))

+                throw new ParseException("Invalid type: " + type);

+

+            for (int i = 0; i < colors.length; i++) {

+                colors[i] = (byte) Integer.parseInt(elements[1 + i]);

+            }

+

+            thickness = Double.parseDouble(elements[5]);

+            if (Double.isNaN(thickness) || thickness < 0 || thickness > 100)

+                throw new ParseException("Invalid thickness: " + thickness);

+

+            for (int i = 0; i < coords.length; i++) {

+                coords[i] = Double.parseDouble(elements[6 + i]);

+                if (Double.isNaN(coords[i]))

+                    throw new ParseException("Invalid coordinate: "

+                            + coords[i]);

+            }

+

+            last = !"0".equals(elements[10]);

+

+        } catch (RuntimeException ex) {

+            throw new ParseException(ex);

+        }

+

+        DrawMessage m = new DrawMessage(type, colors[0], colors[1],

+                colors[2], colors[3], thickness, coords[0], coords[2],

+                coords[1], coords[3], last);

+

+        return m;

+    }

+

+    public static class ParseException extends Exception {

+        private static final long serialVersionUID = -6651972769789842960L;

+

+        public ParseException(Throwable root) {

+            super(root);

+        }

+

+        public ParseException(String message) {

+            super(message);

+        }

+    }

+

+

+

+}

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardContextListener.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardContextListener.class
new file mode 100644
index 0000000..f6724e6
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardContextListener.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardContextListener.java b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardContextListener.java
new file mode 100644
index 0000000..4ba2b38
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardContextListener.java
@@ -0,0 +1,37 @@
+/*

+ *  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.

+ */

+package websocket.drawboard;

+

+import javax.servlet.ServletContextEvent;

+import javax.servlet.ServletContextListener;

+

+public final class DrawboardContextListener implements ServletContextListener {

+

+    @Override

+    public void contextInitialized(ServletContextEvent sce) {

+        // NO-OP

+    }

+

+    @Override

+    public void contextDestroyed(ServletContextEvent sce) {

+        // Shutdown our room.

+        Room room = DrawboardEndpoint.getRoom(false);

+        if (room != null) {

+            room.shutdown();

+        }

+    }

+}

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint$1.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint$1.class
new file mode 100644
index 0000000..3add6a1
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint$1.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint$2.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint$2.class
new file mode 100644
index 0000000..ee2f923
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint$2.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint$3$1.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint$3$1.class
new file mode 100644
index 0000000..86ff72e
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint$3$1.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint$3.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint$3.class
new file mode 100644
index 0000000..9a9499e
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint$3.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint.class
new file mode 100644
index 0000000..5f35890
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint.java b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint.java
new file mode 100644
index 0000000..75d86f3
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/DrawboardEndpoint.java
@@ -0,0 +1,236 @@
+/*

+ *  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.

+ */

+package websocket.drawboard;

+

+import java.io.EOFException;

+import java.io.IOException;

+

+import javax.websocket.CloseReason;

+import javax.websocket.Endpoint;

+import javax.websocket.EndpointConfig;

+import javax.websocket.MessageHandler;

+import javax.websocket.Session;

+

+import org.apache.juli.logging.Log;

+import org.apache.juli.logging.LogFactory;

+

+import websocket.drawboard.DrawMessage.ParseException;

+import websocket.drawboard.wsmessages.StringWebsocketMessage;

+

+

+public final class DrawboardEndpoint extends Endpoint {

+

+    private static final Log log =

+            LogFactory.getLog(DrawboardEndpoint.class);

+

+

+    /**

+     * Our room where players can join.

+     */

+    private static volatile Room room = null;

+    private static final Object roomLock = new Object();

+

+    public static Room getRoom(boolean create) {

+        if (create) {

+            if (room == null) {

+                synchronized (roomLock) {

+                    if (room == null) {

+                        room = new Room();

+                    }

+                }

+            }

+            return room;

+        } else {

+            return room;

+        }

+    }

+

+    /**

+     * The player that is associated with this Endpoint and the current room.

+     * Note that this variable is only accessed from the Room Thread.<br><br>

+     *

+     * TODO: Currently, Tomcat uses an Endpoint instance once - however

+     * the java doc of endpoint says:

+     * "Each instance of a websocket endpoint is guaranteed not to be called by

+     * more than one thread at a time per active connection."

+     * This could mean that after calling onClose(), the instance

+     * could be reused for another connection so onOpen() will get called

+     * (possibly from another thread).<br>

+     * If this is the case, we would need a variable holder for the variables

+     * that are accessed by the Room thread, and read the reference to the holder

+     * at the beginning of onOpen, onMessage, onClose methods to ensure the room

+     * thread always gets the correct instance of the variable holder.

+     */

+    private Room.Player player;

+

+

+    @Override

+    public void onOpen(Session session, EndpointConfig config) {

+        // Set maximum messages size to 10.000 bytes.

+        session.setMaxTextMessageBufferSize(10000);

+        session.addMessageHandler(stringHandler);

+        final Client client = new Client(session);

+

+        final Room room = getRoom(true);

+        room.invokeAndWait(new Runnable() {

+            @Override

+            public void run() {

+                try {

+

+                    // Create a new Player and add it to the room.

+                    try {

+                        player = room.createAndAddPlayer(client);

+                    } catch (IllegalStateException ex) {

+                        // Probably the max. number of players has been

+                        // reached.

+                        client.sendMessage(new StringWebsocketMessage(

+                                "0" + ex.getLocalizedMessage()));

+                        // Close the connection.

+                        client.close();

+                    }

+

+                } catch (RuntimeException ex) {

+                    log.error("Unexpected exception: " + ex.toString(), ex);

+                }

+            }

+        });

+

+    }

+

+

+    @Override

+    public void onClose(Session session, CloseReason closeReason) {

+        Room room = getRoom(false);

+        if (room != null) {

+            room.invokeAndWait(new Runnable() {

+                @Override

+                public void run() {

+                    try {

+                        // Player can be null if it couldn't enter the room

+                        if (player != null) {

+                            // Remove this player from the room.

+                            player.removeFromRoom();

+

+                            // Set player to null to prevent NPEs when onMessage events

+                            // are processed (from other threads) after onClose has been

+                            // called from different thread which closed the Websocket session.

+                            player = null;

+                        }

+                    } catch (RuntimeException ex) {

+                        log.error("Unexpected exception: " + ex.toString(), ex);

+                    }

+                }

+            });

+        }

+    }

+

+

+

+    @Override

+    public void onError(Session session, Throwable t) {

+        // Most likely cause is a user closing their browser. Check to see if

+        // the root cause is EOF and if it is ignore it.

+        // Protect against infinite loops.

+        int count = 0;

+        Throwable root = t;

+        while (root.getCause() != null && count < 20) {

+            root = root.getCause();

+            count ++;

+        }

+        if (root instanceof EOFException) {

+            // Assume this is triggered by the user closing their browser and

+            // ignore it.

+        } else if (!session.isOpen() && root instanceof IOException) {

+            // IOException after close. Assume this is a variation of the user

+            // closing their browser (or refreshing very quickly) and ignore it.

+        } else {

+            log.error("onError: " + t.toString(), t);

+        }

+    }

+

+

+

+    private final MessageHandler.Whole<String> stringHandler =

+            new MessageHandler.Whole<String>() {

+

+        @Override

+        public void onMessage(final String message) {

+            // Invoke handling of the message in the room.

+            room.invokeAndWait(new Runnable() {

+                @Override

+                public void run() {

+                    try {

+

+                        // Currently, the only types of messages the client will send

+                        // are draw messages prefixed by a Message ID

+                        // (starting with char '1'), and pong messages (starting

+                        // with char '0').

+                        // Draw messages should look like this:

+                        // ID|type,colR,colB,colG,colA,thickness,x1,y1,x2,y2,lastInChain

+

+                        boolean dontSwallowException = false;

+                        try {

+                            char messageType = message.charAt(0);

+                            String messageContent = message.substring(1);

+                            switch (messageType) {

+                            case '0':

+                                // Pong message.

+                                // Do nothing.

+                                break;

+

+                            case '1':

+                                // Draw message

+                                int indexOfChar = messageContent.indexOf('|');

+                                long msgId = Long.parseLong(

+                                        messageContent.substring(0, indexOfChar));

+

+                                DrawMessage msg = DrawMessage.parseFromString(

+                                        messageContent.substring(indexOfChar + 1));

+

+                                // Don't ignore RuntimeExceptions thrown by

+                                // this method

+                                // TODO: Find a better solution than this variable

+                                dontSwallowException = true;

+                                if (player != null) {

+                                    player.handleDrawMessage(msg, msgId);

+                                }

+                                dontSwallowException = false;

+

+                                break;

+                            }

+

+                        } catch (RuntimeException ex) {

+                            // Client sent invalid data.

+                            // Ignore, TODO: maybe close connection

+                            if (dontSwallowException) {

+                                throw ex;

+                            }

+                        } catch (ParseException ex) {

+                            // Client sent invalid data.

+                            // Ignore, TODO: maybe close connection

+                        }

+                    } catch (RuntimeException ex) {

+                        log.error("Unexpected exception: " + ex.toString(), ex);

+                    }

+                }

+            });

+

+        }

+    };

+

+

+}

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/Room$1$1.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/Room$1$1.class
new file mode 100644
index 0000000..604acea
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/Room$1$1.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/Room$1.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/Room$1.class
new file mode 100644
index 0000000..ba034ac
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/Room$1.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/Room$2.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/Room$2.class
new file mode 100644
index 0000000..6ef92d7
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/Room$2.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/Room$MessageType.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/Room$MessageType.class
new file mode 100644
index 0000000..1e5b6bc
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/Room$MessageType.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/Room$Player.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/Room$Player.class
new file mode 100644
index 0000000..bf50834
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/Room$Player.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/Room.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/Room.class
new file mode 100644
index 0000000..7c9e605
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/Room.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/Room.java b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/Room.java
new file mode 100644
index 0000000..9e3b361
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/Room.java
@@ -0,0 +1,490 @@
+/*

+ *  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.

+ */

+package websocket.drawboard;

+

+import java.awt.Color;

+import java.awt.Graphics2D;

+import java.awt.RenderingHints;

+import java.awt.image.BufferedImage;

+import java.io.ByteArrayOutputStream;

+import java.io.IOException;

+import java.nio.ByteBuffer;

+import java.util.ArrayList;

+import java.util.List;

+import java.util.Timer;

+import java.util.TimerTask;

+import java.util.concurrent.locks.ReentrantLock;

+

+import javax.imageio.ImageIO;

+

+import websocket.drawboard.wsmessages.BinaryWebsocketMessage;

+import websocket.drawboard.wsmessages.StringWebsocketMessage;

+

+/**

+ * A Room represents a drawboard where a number of

+ * users participate.<br><br>

+ *

+ * Note: Instance methods should only be invoked by calling

+ * {@link #invokeAndWait(Runnable)} to ensure access is correctly synchronized.

+ */

+public final class Room {

+

+    /**

+     * Specifies the type of a room message that is sent to a client.<br>

+     * Note: Currently we are sending simple string messages - for production

+     * apps, a JSON lib should be used for object-level messages.<br><br>

+     *

+     * The number (single char) will be prefixed to the string when sending

+     * the message.

+     */

+    public static enum MessageType {

+        /**

+         * '0': Error: contains error message.

+         */

+        ERROR('0'),

+        /**

+         * '1': DrawMessage: contains serialized DrawMessage(s) prefixed

+         *      with the current Player's {@link Player#lastReceivedMessageId}

+         *      and ",".<br>

+         *      Multiple draw messages are concatenated with "|" as separator.

+         */

+        DRAW_MESSAGE('1'),

+        /**

+         * '2': ImageMessage: Contains number of current players in this room.

+         *      After this message a Binary Websocket message will follow,

+         *      containing the current Room image as PNG.<br>

+         *      This is the first message that a Room sends to a new Player.

+         */

+        IMAGE_MESSAGE('2'),

+        /**

+         * '3': PlayerChanged: contains "+" or "-" which indicate a player

+         *      was added or removed to this Room.

+         */

+        PLAYER_CHANGED('3');

+

+        private final char flag;

+

+        private MessageType(char flag) {

+            this.flag = flag;

+        }

+

+    }

+

+

+    /**

+     * The lock used to synchronize access to this Room.

+     */

+    private final ReentrantLock roomLock = new ReentrantLock();

+

+    /**

+     * Indicates if this room has already been shutdown.

+     */

+    private volatile boolean closed = false;

+

+    /**

+     * If <code>true</code>, outgoing DrawMessages will be buffered until the

+     * drawmessageBroadcastTimer ticks. Otherwise they will be sent

+     * immediately.

+     */

+    private static final boolean BUFFER_DRAW_MESSAGES = true;

+

+    /**

+     * A timer which sends buffered drawmessages to the client at once

+     * at a regular interval, to avoid sending a lot of very small

+     * messages which would cause TCP overhead and high CPU usage.

+     */

+    private final Timer drawmessageBroadcastTimer = new Timer();

+

+    private static final int TIMER_DELAY = 30;

+

+    /**

+     * The current active broadcast timer task. If null, then no Broadcast task is scheduled.

+     * The Task will be scheduled if the first player enters the Room, and

+     * cancelled if the last player exits the Room, to avoid unnecessary timer executions.

+     */

+    private TimerTask activeBroadcastTimerTask;

+

+

+    /**

+     * The current image of the room drawboard. DrawMessages that are

+     * received from Players will be drawn onto this image.

+     */

+    private final BufferedImage roomImage =

+            new BufferedImage(900, 600, BufferedImage.TYPE_INT_RGB);

+    private final Graphics2D roomGraphics = roomImage.createGraphics();

+

+

+    /**

+     * The maximum number of players that can join this room.

+     */

+    private static final int MAX_PLAYER_COUNT = 100;

+

+    /**

+     * List of all currently joined players.

+     */

+    private final List<Player> players = new ArrayList<Player>();

+

+

+

+    public Room() {

+        roomGraphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING,

+                RenderingHints.VALUE_ANTIALIAS_ON);

+

+        // Clear the image with white background.

+        roomGraphics.setBackground(Color.WHITE);

+        roomGraphics.clearRect(0, 0, roomImage.getWidth(),

+                roomImage.getHeight());

+    }

+

+    private TimerTask createBroadcastTimerTask() {

+        return new TimerTask() {

+            @Override

+            public void run() {

+                invokeAndWait(new Runnable() {

+                    @Override

+                    public void run() {

+                        broadcastTimerTick();

+                    }

+                });

+            }

+        };

+    }

+

+    /**

+     * Creates a Player from the given Client and adds it to this room.

+     * @param client the client

+     */

+    public Player createAndAddPlayer(Client client) {

+        if (players.size() >= MAX_PLAYER_COUNT) {

+            throw new IllegalStateException("Maximum player count ("

+                    + MAX_PLAYER_COUNT + ") has been reached.");

+        }

+

+        Player p = new Player(this, client);

+

+        // Broadcast to the other players that one player joined.

+        broadcastRoomMessage(MessageType.PLAYER_CHANGED, "+");

+

+        // Add the new player to the list.

+        players.add(p);

+

+        // If currently no Broadcast Timer Task is scheduled, then we need to create one.

+        if (activeBroadcastTimerTask == null) {

+            activeBroadcastTimerTask = createBroadcastTimerTask();

+            drawmessageBroadcastTimer.schedule(activeBroadcastTimerTask,

+                    TIMER_DELAY, TIMER_DELAY);

+        }

+

+        // Send him the current number of players and the current room image.

+        String content = String.valueOf(players.size());

+        p.sendRoomMessage(MessageType.IMAGE_MESSAGE, content);

+

+        // Store image as PNG

+        ByteArrayOutputStream bout = new ByteArrayOutputStream();

+        try {

+            ImageIO.write(roomImage, "PNG", bout);

+        } catch (IOException e) { /* Should never happen */ }

+

+

+        // Send the image as binary message.

+        BinaryWebsocketMessage msg = new BinaryWebsocketMessage(

+                ByteBuffer.wrap(bout.toByteArray()));

+        p.getClient().sendMessage(msg);

+

+        return p;

+

+    }

+

+    /**

+     * @see Player#removeFromRoom()

+     * @param p

+     */

+    private void internalRemovePlayer(Player p) {

+        boolean removed = players.remove(p);

+        assert removed;

+

+        // If the last player left the Room, we need to cancel the Broadcast Timer Task.

+        if (players.size() == 0) {

+            // Cancel the task.

+            // Note that it can happen that the TimerTask is just about to execute (from

+            // the Timer thread) but waits until all players are gone (or even until a new

+            // player is added to the list), and then executes. This is OK. To prevent it,

+            // a TimerTask subclass would need to have some boolean "cancel" instance variable and

+            // query it in the invocation of Room#invokeAndWait.

+            activeBroadcastTimerTask.cancel();

+            activeBroadcastTimerTask = null;

+        }

+

+        // Broadcast that one player is removed.

+        broadcastRoomMessage(MessageType.PLAYER_CHANGED, "-");

+    }

+

+    /**

+     * @see Player#handleDrawMessage(DrawMessage, long)

+     * @param p

+     * @param msg

+     * @param msgId

+     */

+    private void internalHandleDrawMessage(Player p, DrawMessage msg,

+            long msgId) {

+        p.setLastReceivedMessageId(msgId);

+

+        // Draw the RoomMessage onto our Room Image.

+        msg.draw(roomGraphics);

+

+        // Broadcast the Draw Message.

+        broadcastDrawMessage(msg);

+    }

+

+

+    /**

+     * Broadcasts the given drawboard message to all connected players.<br>

+     * Note: For DrawMessages, please use

+     * {@link #broadcastDrawMessage(DrawMessage)}

+     * as this method will buffer them and prefix them with the correct

+     * last received Message ID.

+     * @param type

+     * @param content

+     */

+    private void broadcastRoomMessage(MessageType type, String content) {

+        for (Player p : players) {

+            p.sendRoomMessage(type, content);

+        }

+    }

+

+

+    /**

+     * Broadcast the given DrawMessage. This will buffer the message

+     * and the {@link #drawmessageBroadcastTimer} will broadcast them

+     * at a regular interval, prefixing them with the player's current

+     * {@link Player#lastReceivedMessageId}.

+     * @param msg

+     */

+    private void broadcastDrawMessage(DrawMessage msg) {

+        if (!BUFFER_DRAW_MESSAGES) {

+            String msgStr = msg.toString();

+

+            for (Player p : players) {

+                String s = String.valueOf(p.getLastReceivedMessageId())

+                        + "," + msgStr;

+                p.sendRoomMessage(MessageType.DRAW_MESSAGE, s);

+            }

+        } else {

+            for (Player p : players) {

+                p.getBufferedDrawMessages().add(msg);

+            }

+        }

+    }

+

+

+    /**

+     * Tick handler for the broadcastTimer.

+     */

+    private void broadcastTimerTick() {

+        // For each Player, send all per Player buffered

+        // DrawMessages, prefixing each DrawMessage with the player's

+        // lastReceivedMessageId.

+        // Multiple messages are concatenated with "|".

+

+        for (Player p : players) {

+

+            StringBuilder sb = new StringBuilder();

+            List<DrawMessage> drawMessages = p.getBufferedDrawMessages();

+

+            if (drawMessages.size() > 0) {

+                for (int i = 0; i < drawMessages.size(); i++) {

+                    DrawMessage msg = drawMessages.get(i);

+

+                    String s = String.valueOf(p.getLastReceivedMessageId())

+                            + "," + msg.toString();

+                    if (i > 0)

+                        sb.append("|");

+

+                    sb.append(s);

+                }

+                drawMessages.clear();

+

+                p.sendRoomMessage(MessageType.DRAW_MESSAGE, sb.toString());

+            }

+        }

+    }

+

+    /**

+     * A list of cached {@link Runnable}s to prevent recursive invocation of Runnables

+     * by one thread. This variable is only used by one thread at a time and then

+     * set to <code>null</code>.

+     */

+    private List<Runnable> cachedRunnables = null;

+

+    /**

+     * Submits the given Runnable to the Room Executor and waits until it

+     * has been executed. Currently, this simply means that the Runnable

+     * will be run directly inside of a synchronized() block.<br>

+     * Note that if a runnable recursively calls invokeAndWait() with another

+     * runnable on this Room, it will not be executed recursively, but instead

+     * cached until the original runnable is finished, to keep the behavior of

+     * using a Executor.

+     * @param task

+     */

+    public void invokeAndWait(Runnable task)  {

+

+        // Check if the current thread already holds a lock on this room.

+        // If yes, then we must not directly execute the Runnable but instead

+        // cache it until the original invokeAndWait() has finished.

+        if (roomLock.isHeldByCurrentThread()) {

+

+            if (cachedRunnables == null) {

+                cachedRunnables = new ArrayList<Runnable>();

+            }

+            cachedRunnables.add(task);

+

+        } else {

+

+            roomLock.lock();

+            try {

+                // Explicitly overwrite value to ensure data consistency in

+                // current thread

+                cachedRunnables = null;

+

+                if (!closed) {

+                    task.run();

+                }

+

+                // Run the cached runnables.

+                if (cachedRunnables != null) {

+                    for (int i = 0; i < cachedRunnables.size(); i++) {

+                        if (!closed) {

+                            cachedRunnables.get(i).run();

+                        }

+                    }

+                    cachedRunnables = null;

+                }

+

+            } finally {

+                roomLock.unlock();

+            }

+

+        }

+

+    }

+

+    /**

+     * Shuts down the roomExecutor and the drawmessageBroadcastTimer.

+     */

+    public void shutdown() {

+        invokeAndWait(new Runnable() {

+            @Override

+            public void run() {

+                closed = true;

+                drawmessageBroadcastTimer.cancel();

+                roomGraphics.dispose();

+            }

+        });

+    }

+

+

+    /**

+     * A Player participates in a Room. It is the interface between the

+     * {@link Room} and the {@link Client}.<br><br>

+     *

+     * Note: This means a player object is actually a join between Room and

+     * Client.

+     */

+    public final class Player {

+

+        /**

+         * The room to which this player belongs.

+         */

+        private Room room;

+

+        /**

+         * The room buffers the last draw message ID that was received from

+         * this player.

+         */

+        private long lastReceivedMessageId = 0;

+

+        private final Client client;

+

+        /**

+         * Buffered DrawMessages that will be sent by a Timer.

+         */

+        private final List<DrawMessage> bufferedDrawMessages =

+                new ArrayList<DrawMessage>();

+

+        private List<DrawMessage> getBufferedDrawMessages() {

+            return bufferedDrawMessages;

+        }

+

+        private Player(Room room, Client client) {

+            this.room = room;

+            this.client = client;

+        }

+

+        public Room getRoom() {

+            return room;

+        }

+

+        public Client getClient() {

+            return client;

+        }

+

+        /**

+         * Removes this player from its room, e.g. when

+         * the client disconnects.

+         */

+        public void removeFromRoom() {

+            if (room != null) {

+                room.internalRemovePlayer(this);

+                room = null;

+            }

+        }

+

+

+        private long getLastReceivedMessageId() {

+            return lastReceivedMessageId;

+        }

+        private void setLastReceivedMessageId(long value) {

+            lastReceivedMessageId = value;

+        }

+

+

+        /**

+         * Handles the given DrawMessage by drawing it onto this Room's

+         * image and by broadcasting it to the connected players.

+         * @param msg

+         * @param msgId

+         */

+        public void handleDrawMessage(DrawMessage msg, long msgId) {

+            room.internalHandleDrawMessage(this, msg, msgId);

+        }

+

+

+        /**

+         * Sends the given room message.

+         * @param type

+         * @param content

+         */

+        private void sendRoomMessage(MessageType type, String content) {

+            if (content == null || type == null)

+                throw new NullPointerException();

+

+            String completeMsg = String.valueOf(type.flag) + content;

+

+            client.sendMessage(new StringWebsocketMessage(completeMsg));

+        }

+    }

+}

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/AbstractWebsocketMessage.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/AbstractWebsocketMessage.class
new file mode 100644
index 0000000..3f4846b
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/AbstractWebsocketMessage.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/AbstractWebsocketMessage.java b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/AbstractWebsocketMessage.java
new file mode 100644
index 0000000..b1945fc
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/AbstractWebsocketMessage.java
@@ -0,0 +1,25 @@
+/*

+ *  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.

+ */

+package websocket.drawboard.wsmessages;

+

+/**

+ * Abstract base class for Websocket Messages (binary or string)

+ * that can be buffered.

+ */

+public abstract class AbstractWebsocketMessage {

+

+}

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/BinaryWebsocketMessage.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/BinaryWebsocketMessage.class
new file mode 100644
index 0000000..fe5a3f4
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/BinaryWebsocketMessage.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/BinaryWebsocketMessage.java b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/BinaryWebsocketMessage.java
new file mode 100644
index 0000000..0a28f64
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/BinaryWebsocketMessage.java
@@ -0,0 +1,34 @@
+/*

+ *  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.

+ */

+package websocket.drawboard.wsmessages;

+

+import java.nio.ByteBuffer;

+

+/**

+ * Represents a binary websocket message.

+ */

+public final class BinaryWebsocketMessage extends AbstractWebsocketMessage {

+    private final ByteBuffer bytes;

+

+    public BinaryWebsocketMessage(ByteBuffer bytes) {

+        this.bytes = bytes;

+    }

+

+    public ByteBuffer getBytes() {

+        return bytes;

+    }

+}

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/CloseWebsocketMessage.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/CloseWebsocketMessage.class
new file mode 100644
index 0000000..bad57e0
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/CloseWebsocketMessage.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/CloseWebsocketMessage.java b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/CloseWebsocketMessage.java
new file mode 100644
index 0000000..898117f
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/CloseWebsocketMessage.java
@@ -0,0 +1,24 @@
+/*

+ *  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.

+ */

+package websocket.drawboard.wsmessages;

+

+/**

+ * Represents a "close" message that closes the session.

+ */

+public class CloseWebsocketMessage extends AbstractWebsocketMessage {

+

+}

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/StringWebsocketMessage.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/StringWebsocketMessage.class
new file mode 100644
index 0000000..acf3928
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/StringWebsocketMessage.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/StringWebsocketMessage.java b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/StringWebsocketMessage.java
new file mode 100644
index 0000000..8646ea7
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/drawboard/wsmessages/StringWebsocketMessage.java
@@ -0,0 +1,34 @@
+/*

+ *  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.

+ */

+package websocket.drawboard.wsmessages;

+

+/**

+ * Represents a string websocket message.

+ *

+ */

+public final class StringWebsocketMessage extends AbstractWebsocketMessage {

+    private final String string;

+

+    public StringWebsocketMessage(String string) {

+        this.string = string;

+    }

+

+    public String getString() {

+        return string;

+    }

+

+}

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/echo/EchoAnnotation.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/echo/EchoAnnotation.class
new file mode 100644
index 0000000..8c03f33
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/echo/EchoAnnotation.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/echo/EchoAnnotation.java b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/echo/EchoAnnotation.java
new file mode 100644
index 0000000..b592153
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/echo/EchoAnnotation.java
@@ -0,0 +1,70 @@
+/*

+ *  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.

+ */

+package websocket.echo;

+

+import java.io.IOException;

+import java.nio.ByteBuffer;

+

+import javax.websocket.OnMessage;

+import javax.websocket.PongMessage;

+import javax.websocket.Session;

+import javax.websocket.server.ServerEndpoint;

+

+@ServerEndpoint("/websocket/echoAnnotation")

+public class EchoAnnotation {

+

+    @OnMessage

+    public void echoTextMessage(Session session, String msg, boolean last) {

+        try {

+            if (session.isOpen()) {

+                session.getBasicRemote().sendText(msg, last);

+            }

+        } catch (IOException e) {

+            try {

+                session.close();

+            } catch (IOException e1) {

+                // Ignore

+            }

+        }

+    }

+

+    @OnMessage

+    public void echoBinaryMessage(Session session, ByteBuffer bb,

+            boolean last) {

+        try {

+            if (session.isOpen()) {

+                session.getBasicRemote().sendBinary(bb, last);

+            }

+        } catch (IOException e) {

+            try {

+                session.close();

+            } catch (IOException e1) {

+                // Ignore

+            }

+        }

+    }

+

+    /**

+     * Process a received pong. This is a NO-OP.

+     *

+     * @param pm    Ignored.

+     */

+    @OnMessage

+    public void echoPongMessage(PongMessage pm) {

+        // NO-OP

+    }

+}

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/echo/EchoEndpoint$1.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/echo/EchoEndpoint$1.class
new file mode 100644
index 0000000..18684e5
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/echo/EchoEndpoint$1.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/echo/EchoEndpoint$EchoMessageHandlerBinary.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/echo/EchoEndpoint$EchoMessageHandlerBinary.class
new file mode 100644
index 0000000..62bf22d
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/echo/EchoEndpoint$EchoMessageHandlerBinary.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/echo/EchoEndpoint$EchoMessageHandlerText.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/echo/EchoEndpoint$EchoMessageHandlerText.class
new file mode 100644
index 0000000..c7ca81c
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/echo/EchoEndpoint$EchoMessageHandlerText.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/echo/EchoEndpoint.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/echo/EchoEndpoint.class
new file mode 100644
index 0000000..4a304db
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/echo/EchoEndpoint.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/echo/EchoEndpoint.java b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/echo/EchoEndpoint.java
new file mode 100644
index 0000000..d503994
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/echo/EchoEndpoint.java
@@ -0,0 +1,80 @@
+/*

+ *  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.

+ */

+package websocket.echo;

+

+import java.io.IOException;

+import java.nio.ByteBuffer;

+

+import javax.websocket.Endpoint;

+import javax.websocket.EndpointConfig;

+import javax.websocket.MessageHandler;

+import javax.websocket.RemoteEndpoint;

+import javax.websocket.Session;

+

+public class EchoEndpoint extends Endpoint {

+

+    @Override

+    public void onOpen(Session session, EndpointConfig endpointConfig) {

+        RemoteEndpoint.Basic remoteEndpointBasic = session.getBasicRemote();

+        session.addMessageHandler(new EchoMessageHandlerText(remoteEndpointBasic));

+        session.addMessageHandler(new EchoMessageHandlerBinary(remoteEndpointBasic));

+    }

+

+    private static class EchoMessageHandlerText

+            implements MessageHandler.Partial<String> {

+

+        private final RemoteEndpoint.Basic remoteEndpointBasic;

+

+        private EchoMessageHandlerText(RemoteEndpoint.Basic remoteEndpointBasic) {

+            this.remoteEndpointBasic = remoteEndpointBasic;

+        }

+

+        @Override

+        public void onMessage(String message, boolean last) {

+            try {

+                if (remoteEndpointBasic != null) {

+                    remoteEndpointBasic.sendText(message, last);

+                }

+            } catch (IOException e) {

+                // TODO Auto-generated catch block

+                e.printStackTrace();

+            }

+        }

+    }

+    

+    private static class EchoMessageHandlerBinary

+            implements MessageHandler.Partial<ByteBuffer> {

+

+        private final RemoteEndpoint.Basic remoteEndpointBasic;

+

+        private EchoMessageHandlerBinary(RemoteEndpoint.Basic remoteEndpointBasic) {

+            this.remoteEndpointBasic = remoteEndpointBasic;

+        }

+        

+        @Override

+        public void onMessage(ByteBuffer message, boolean last) {

+            try {

+                if (remoteEndpointBasic != null) {

+                    remoteEndpointBasic.sendBinary(message, last);

+                }

+            } catch (IOException e) {

+                // TODO Auto-generated catch block

+                e.printStackTrace();

+            }

+        }

+    }

+}

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/Direction.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/Direction.class
new file mode 100644
index 0000000..b6f4494
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/Direction.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/Direction.java b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/Direction.java
new file mode 100644
index 0000000..b36c7a2
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/Direction.java
@@ -0,0 +1,21 @@
+/*

+ * 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.

+ */

+package websocket.snake;

+

+public enum Direction {

+    NONE, NORTH, SOUTH, EAST, WEST

+}

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/Location$1.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/Location$1.class
new file mode 100644
index 0000000..2b42186
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/Location$1.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/Location.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/Location.class
new file mode 100644
index 0000000..e9db638
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/Location.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/Location.java b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/Location.java
new file mode 100644
index 0000000..d5c0007
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/Location.java
@@ -0,0 +1,65 @@
+/*

+ * 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.

+ */

+package websocket.snake;

+

+public class Location {

+

+    public int x;

+    public int y;

+

+    public Location(int x, int y) {

+        this.x = x;

+        this.y = y;

+    }

+

+    public Location getAdjacentLocation(Direction direction) {

+        switch (direction) {

+            case NORTH:

+                return new Location(x, y - SnakeAnnotation.GRID_SIZE);

+            case SOUTH:

+                return new Location(x, y + SnakeAnnotation.GRID_SIZE);

+            case EAST:

+                return new Location(x + SnakeAnnotation.GRID_SIZE, y);

+            case WEST:

+                return new Location(x - SnakeAnnotation.GRID_SIZE, y);

+            case NONE:

+                // fall through

+            default:

+                return this;

+        }

+    }

+

+    @Override

+    public boolean equals(Object o) {

+        if (this == o) return true;

+        if (o == null || getClass() != o.getClass()) return false;

+

+        Location location = (Location) o;

+

+        if (x != location.x) return false;

+        if (y != location.y) return false;

+

+        return true;

+    }

+

+    @Override

+    public int hashCode() {

+        int result = x;

+        result = 31 * result + y;

+        return result;

+    }

+}

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/Snake.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/Snake.class
new file mode 100644
index 0000000..1449f3c
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/Snake.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/Snake.java b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/Snake.java
new file mode 100644
index 0000000..f2c9c4c
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/Snake.java
@@ -0,0 +1,150 @@
+/*

+ * 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.

+ */

+package websocket.snake;

+

+import java.io.IOException;

+import java.util.ArrayDeque;

+import java.util.Collection;

+import java.util.Deque;

+

+import javax.websocket.CloseReason;

+import javax.websocket.CloseReason.CloseCodes;

+import javax.websocket.Session;

+

+public class Snake {

+

+    private static final int DEFAULT_LENGTH = 5;

+

+    private final int id;

+    private final Session session;

+

+    private Direction direction;

+    private int length = DEFAULT_LENGTH;

+    private Location head;

+    private final Deque<Location> tail = new ArrayDeque<Location>();

+    private final String hexColor;

+

+    public Snake(int id, Session session) {

+        this.id = id;

+        this.session = session;

+        this.hexColor = SnakeAnnotation.getRandomHexColor();

+        resetState();

+    }

+

+    private void resetState() {

+        this.direction = Direction.NONE;

+        this.head = SnakeAnnotation.getRandomLocation();

+        this.tail.clear();

+        this.length = DEFAULT_LENGTH;

+    }

+

+    private synchronized void kill() {

+        resetState();

+        sendMessage("{'type': 'dead'}");

+    }

+

+    private synchronized void reward() {

+        length++;

+        sendMessage("{'type': 'kill'}");

+    }

+

+

+    protected void sendMessage(String msg) {

+        try {

+            session.getBasicRemote().sendText(msg);

+        } catch (IOException ioe) {

+            CloseReason cr =

+                    new CloseReason(CloseCodes.CLOSED_ABNORMALLY, ioe.getMessage());

+            try {

+                session.close(cr);

+            } catch (IOException ioe2) {

+                // Ignore

+            }

+        }

+    }

+

+    public synchronized void update(Collection<Snake> snakes) {

+        Location nextLocation = head.getAdjacentLocation(direction);

+        if (nextLocation.x >= SnakeAnnotation.PLAYFIELD_WIDTH) {

+            nextLocation.x = 0;

+        }

+        if (nextLocation.y >= SnakeAnnotation.PLAYFIELD_HEIGHT) {

+            nextLocation.y = 0;

+        }

+        if (nextLocation.x < 0) {

+            nextLocation.x = SnakeAnnotation.PLAYFIELD_WIDTH;

+        }

+        if (nextLocation.y < 0) {

+            nextLocation.y = SnakeAnnotation.PLAYFIELD_HEIGHT;

+        }

+        if (direction != Direction.NONE) {

+            tail.addFirst(head);

+            if (tail.size() > length) {

+                tail.removeLast();

+            }

+            head = nextLocation;

+        }

+

+        handleCollisions(snakes);

+    }

+

+    private void handleCollisions(Collection<Snake> snakes) {

+        for (Snake snake : snakes) {

+            boolean headCollision = id != snake.id && snake.getHead().equals(head);

+            boolean tailCollision = snake.getTail().contains(head);

+            if (headCollision || tailCollision) {

+                kill();

+                if (id != snake.id) {

+                    snake.reward();

+                }

+            }

+        }

+    }

+

+    public synchronized Location getHead() {

+        return head;

+    }

+

+    public synchronized Collection<Location> getTail() {

+        return tail;

+    }

+

+    public synchronized void setDirection(Direction direction) {

+        this.direction = direction;

+    }

+

+    public synchronized String getLocationsJson() {

+        StringBuilder sb = new StringBuilder();

+        sb.append(String.format("{x: %d, y: %d}",

+                Integer.valueOf(head.x), Integer.valueOf(head.y)));

+        for (Location location : tail) {

+            sb.append(',');

+            sb.append(String.format("{x: %d, y: %d}",

+                    Integer.valueOf(location.x), Integer.valueOf(location.y)));

+        }

+        return String.format("{'id':%d,'body':[%s]}",

+                Integer.valueOf(id), sb.toString());

+    }

+

+    public int getId() {

+        return id;

+    }

+

+    public String getHexColor() {

+        return hexColor;

+    }

+}

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/SnakeAnnotation.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/SnakeAnnotation.class
new file mode 100644
index 0000000..57b9447
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/SnakeAnnotation.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/SnakeAnnotation.java b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/SnakeAnnotation.java
new file mode 100644
index 0000000..519a304
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/SnakeAnnotation.java
@@ -0,0 +1,135 @@
+/*

+ * 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.

+ */

+package websocket.snake;

+

+import java.awt.Color;

+import java.io.EOFException;

+import java.util.Iterator;

+import java.util.Random;

+import java.util.concurrent.atomic.AtomicInteger;

+

+import javax.websocket.OnClose;

+import javax.websocket.OnError;

+import javax.websocket.OnMessage;

+import javax.websocket.OnOpen;

+import javax.websocket.Session;

+import javax.websocket.server.ServerEndpoint;

+

+@ServerEndpoint(value = "/websocket/snake")

+public class SnakeAnnotation {

+

+    public static final int PLAYFIELD_WIDTH = 640;

+    public static final int PLAYFIELD_HEIGHT = 480;

+    public static final int GRID_SIZE = 10;

+

+    private static final AtomicInteger snakeIds = new AtomicInteger(0);

+    private static final Random random = new Random();

+

+

+    private final int id;

+    private Snake snake;

+

+    public static String getRandomHexColor() {

+        float hue = random.nextFloat();

+        // sat between 0.1 and 0.3

+        float saturation = (random.nextInt(2000) + 1000) / 10000f;

+        float luminance = 0.9f;

+        Color color = Color.getHSBColor(hue, saturation, luminance);

+        return '#' + Integer.toHexString(

+                (color.getRGB() & 0xffffff) | 0x1000000).substring(1);

+    }

+

+

+    public static Location getRandomLocation() {

+        int x = roundByGridSize(random.nextInt(PLAYFIELD_WIDTH));

+        int y = roundByGridSize(random.nextInt(PLAYFIELD_HEIGHT));

+        return new Location(x, y);

+    }

+

+

+    private static int roundByGridSize(int value) {

+        value = value + (GRID_SIZE / 2);

+        value = value / GRID_SIZE;

+        value = value * GRID_SIZE;

+        return value;

+    }

+

+    public SnakeAnnotation() {

+        this.id = snakeIds.getAndIncrement();

+    }

+

+

+    @OnOpen

+    public void onOpen(Session session) {

+        this.snake = new Snake(id, session);

+        SnakeTimer.addSnake(snake);

+        StringBuilder sb = new StringBuilder();

+        for (Iterator<Snake> iterator = SnakeTimer.getSnakes().iterator();

+                iterator.hasNext();) {

+            Snake snake = iterator.next();

+            sb.append(String.format("{id: %d, color: '%s'}",

+                    Integer.valueOf(snake.getId()), snake.getHexColor()));

+            if (iterator.hasNext()) {

+                sb.append(',');

+            }

+        }

+        SnakeTimer.broadcast(String.format("{'type': 'join','data':[%s]}",

+                sb.toString()));

+    }

+

+

+    @OnMessage

+    public void onTextMessage(String message) {

+        if ("west".equals(message)) {

+            snake.setDirection(Direction.WEST);

+        } else if ("north".equals(message)) {

+            snake.setDirection(Direction.NORTH);

+        } else if ("east".equals(message)) {

+            snake.setDirection(Direction.EAST);

+        } else if ("south".equals(message)) {

+            snake.setDirection(Direction.SOUTH);

+        }

+    }

+

+

+    @OnClose

+    public void onClose() {

+        SnakeTimer.removeSnake(snake);

+        SnakeTimer.broadcast(String.format("{'type': 'leave', 'id': %d}",

+                Integer.valueOf(id)));

+    }

+

+

+    @OnError

+    public void onError(Throwable t) throws Throwable {

+        // Most likely cause is a user closing their browser. Check to see if

+        // the root cause is EOF and if it is ignore it.

+        // Protect against infinite loops.

+        int count = 0;

+        Throwable root = t;

+        while (root.getCause() != null && count < 20) {

+            root = root.getCause();

+            count ++;

+        }

+        if (root instanceof EOFException) {

+            // Assume this is triggered by the user closing their browser and

+            // ignore it.

+        } else {

+            throw t;

+        }

+    }

+}

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/SnakeTimer$1.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/SnakeTimer$1.class
new file mode 100644
index 0000000..1fb6005
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/SnakeTimer$1.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/SnakeTimer.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/SnakeTimer.class
new file mode 100644
index 0000000..14693fc
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/SnakeTimer.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/SnakeTimer.java b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/SnakeTimer.java
new file mode 100644
index 0000000..abc4991
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/snake/SnakeTimer.java
@@ -0,0 +1,115 @@
+/*

+ * 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.

+ */

+package websocket.snake;

+

+import java.util.Collection;

+import java.util.Collections;

+import java.util.Iterator;

+import java.util.Timer;

+import java.util.TimerTask;

+import java.util.concurrent.ConcurrentHashMap;

+

+import org.apache.juli.logging.Log;

+import org.apache.juli.logging.LogFactory;

+

+/**

+ * Sets up the timer for the multi-player snake game WebSocket example.

+ */

+public class SnakeTimer {

+

+    private static final Log log =

+            LogFactory.getLog(SnakeTimer.class);

+

+    private static Timer gameTimer = null;

+

+    private static final long TICK_DELAY = 100;

+

+    private static final ConcurrentHashMap<Integer, Snake> snakes =

+            new ConcurrentHashMap<Integer, Snake>();

+

+    protected static synchronized void addSnake(Snake snake) {

+        if (snakes.size() == 0) {

+            startTimer();

+        }

+        snakes.put(Integer.valueOf(snake.getId()), snake);

+    }

+

+

+    protected static Collection<Snake> getSnakes() {

+        return Collections.unmodifiableCollection(snakes.values());

+    }

+

+

+    protected static synchronized void removeSnake(Snake snake) {

+        snakes.remove(Integer.valueOf(snake.getId()));

+        if (snakes.size() == 0) {

+            stopTimer();

+        }

+    }

+

+

+    protected static void tick() {

+        StringBuilder sb = new StringBuilder();

+        for (Iterator<Snake> iterator = SnakeTimer.getSnakes().iterator();

+                iterator.hasNext();) {

+            Snake snake = iterator.next();

+            snake.update(SnakeTimer.getSnakes());

+            sb.append(snake.getLocationsJson());

+            if (iterator.hasNext()) {

+                sb.append(',');

+            }

+        }

+        broadcast(String.format("{'type': 'update', 'data' : [%s]}",

+                sb.toString()));

+    }

+

+    protected static void broadcast(String message) {

+        for (Snake snake : SnakeTimer.getSnakes()) {

+            try {

+                snake.sendMessage(message);

+            } catch (IllegalStateException ise) {

+                // An ISE can occur if an attempt is made to write to a

+                // WebSocket connection after it has been closed. The

+                // alternative to catching this exception is to synchronise

+                // the writes to the clients along with the addSnake() and

+                // removeSnake() methods that are already synchronised.

+            }

+        }

+    }

+

+

+    public static void startTimer() {

+        gameTimer = new Timer(SnakeTimer.class.getSimpleName() + " Timer");

+        gameTimer.scheduleAtFixedRate(new TimerTask() {

+            @Override

+            public void run() {

+                try {

+                    tick();

+                } catch (RuntimeException e) {

+                    log.error("Caught to prevent timer from shutting down", e);

+                }

+            }

+        }, TICK_DELAY, TICK_DELAY);

+    }

+

+

+    public static void stopTimer() {

+        if (gameTimer != null) {

+            gameTimer.cancel();

+        }

+    }

+}

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/chat/ChatWebSocketServlet$1.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/chat/ChatWebSocketServlet$1.class
new file mode 100644
index 0000000..9bbb179
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/chat/ChatWebSocketServlet$1.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/chat/ChatWebSocketServlet$ChatMessageInbound.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/chat/ChatWebSocketServlet$ChatMessageInbound.class
new file mode 100644
index 0000000..3eecb9e
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/chat/ChatWebSocketServlet$ChatMessageInbound.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/chat/ChatWebSocketServlet.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/chat/ChatWebSocketServlet.class
new file mode 100644
index 0000000..edf666f
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/chat/ChatWebSocketServlet.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/chat/ChatWebSocketServlet.java b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/chat/ChatWebSocketServlet.java
new file mode 100644
index 0000000..12d5419
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/chat/ChatWebSocketServlet.java
@@ -0,0 +1,105 @@
+/*

+ * 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.

+ */

+package websocket.tc7.chat;

+

+import java.io.IOException;

+import java.nio.ByteBuffer;

+import java.nio.CharBuffer;

+import java.util.Set;

+import java.util.concurrent.CopyOnWriteArraySet;

+import java.util.concurrent.atomic.AtomicInteger;

+

+import javax.servlet.http.HttpServletRequest;

+

+import org.apache.catalina.websocket.MessageInbound;

+import org.apache.catalina.websocket.StreamInbound;

+import org.apache.catalina.websocket.WebSocketServlet;

+import org.apache.catalina.websocket.WsOutbound;

+

+import util.HTMLFilter;

+

+/**

+ * Example web socket servlet for chat.

+ * @deprecated See {@link websocket.chat.ChatAnnotation}

+ */

+@Deprecated

+public class ChatWebSocketServlet extends WebSocketServlet {

+

+    private static final long serialVersionUID = 1L;

+

+    private static final String GUEST_PREFIX = "Guest";

+

+    private final AtomicInteger connectionIds = new AtomicInteger(0);

+    private final Set<ChatMessageInbound> connections =

+            new CopyOnWriteArraySet<ChatMessageInbound>();

+

+    @Override

+    protected StreamInbound createWebSocketInbound(String subProtocol,

+            HttpServletRequest request) {

+        return new ChatMessageInbound(connectionIds.incrementAndGet());

+    }

+

+    private final class ChatMessageInbound extends MessageInbound {

+

+        private final String nickname;

+

+        private ChatMessageInbound(int id) {

+            this.nickname = GUEST_PREFIX + id;

+        }

+

+        @Override

+        protected void onOpen(WsOutbound outbound) {

+            connections.add(this);

+            String message = String.format("* %s %s",

+                    nickname, "has joined.");

+            broadcast(message);

+        }

+

+        @Override

+        protected void onClose(int status) {

+            connections.remove(this);

+            String message = String.format("* %s %s",

+                    nickname, "has disconnected.");

+            broadcast(message);

+        }

+

+        @Override

+        protected void onBinaryMessage(ByteBuffer message) throws IOException {

+            throw new UnsupportedOperationException(

+                    "Binary message not supported.");

+        }

+

+        @Override

+        protected void onTextMessage(CharBuffer message) throws IOException {

+            // Never trust the client

+            String filteredMessage = String.format("%s: %s",

+                    nickname, HTMLFilter.filter(message.toString()));

+            broadcast(filteredMessage);

+        }

+

+        private void broadcast(String message) {

+            for (ChatMessageInbound connection : connections) {

+                try {

+                    CharBuffer buffer = CharBuffer.wrap(message);

+                    connection.getWsOutbound().writeTextMessage(buffer);

+                } catch (IOException ignore) {

+                    // Ignore

+                }

+            }

+        }

+    }

+}
\ No newline at end of file
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/echo/EchoMessage$EchoMessageInbound.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/echo/EchoMessage$EchoMessageInbound.class
new file mode 100644
index 0000000..ddb9dc4
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/echo/EchoMessage$EchoMessageInbound.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/echo/EchoMessage.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/echo/EchoMessage.class
new file mode 100644
index 0000000..d600882
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/echo/EchoMessage.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/echo/EchoMessage.java b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/echo/EchoMessage.java
new file mode 100644
index 0000000..4073306
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/echo/EchoMessage.java
@@ -0,0 +1,88 @@
+/*

+ * 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.

+ */

+package websocket.tc7.echo;

+

+import java.io.IOException;

+import java.nio.ByteBuffer;

+import java.nio.CharBuffer;

+

+import javax.servlet.ServletException;

+import javax.servlet.http.HttpServletRequest;

+

+import org.apache.catalina.websocket.MessageInbound;

+import org.apache.catalina.websocket.StreamInbound;

+import org.apache.catalina.websocket.WebSocketServlet;

+/**

+ * @deprecated See {@link websocket.echo.EchoAnnotation}

+ */

+@Deprecated

+public class EchoMessage extends WebSocketServlet {

+

+    private static final long serialVersionUID = 1L;

+    private volatile int byteBufSize;

+    private volatile int charBufSize;

+

+    @Override

+    public void init() throws ServletException {

+        super.init();

+        byteBufSize = getInitParameterIntValue("byteBufferMaxSize", 2097152);

+        charBufSize = getInitParameterIntValue("charBufferMaxSize", 2097152);

+    }

+

+    public int getInitParameterIntValue(String name, int defaultValue) {

+        String val = this.getInitParameter(name);

+        int result;

+        if(null != val) {

+            try {

+                result = Integer.parseInt(val);

+            }catch (Exception x) {

+                result = defaultValue;

+            }

+        } else {

+            result = defaultValue;

+        }

+

+        return result;

+    }

+

+

+

+    @Override

+    protected StreamInbound createWebSocketInbound(String subProtocol,

+            HttpServletRequest request) {

+        return new EchoMessageInbound(byteBufSize,charBufSize);

+    }

+

+    private static final class EchoMessageInbound extends MessageInbound {

+

+        public EchoMessageInbound(int byteBufferMaxSize, int charBufferMaxSize) {

+            super();

+            setByteBufferMaxSize(byteBufferMaxSize);

+            setCharBufferMaxSize(charBufferMaxSize);

+        }

+

+        @Override

+        protected void onBinaryMessage(ByteBuffer message) throws IOException {

+            getWsOutbound().writeBinaryMessage(message);

+        }

+

+        @Override

+        protected void onTextMessage(CharBuffer message) throws IOException {

+            getWsOutbound().writeTextMessage(message);

+        }

+    }

+}

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/echo/EchoStream$1.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/echo/EchoStream$1.class
new file mode 100644
index 0000000..b770d79
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/echo/EchoStream$1.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/echo/EchoStream$EchoStreamInbound.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/echo/EchoStream$EchoStreamInbound.class
new file mode 100644
index 0000000..478607d
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/echo/EchoStream$EchoStreamInbound.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/echo/EchoStream.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/echo/EchoStream.class
new file mode 100644
index 0000000..f3d819d
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/echo/EchoStream.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/echo/EchoStream.java b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/echo/EchoStream.java
new file mode 100644
index 0000000..9b34302
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/echo/EchoStream.java
@@ -0,0 +1,73 @@
+/*

+ * 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.

+ */

+package websocket.tc7.echo;

+

+import java.io.IOException;

+import java.io.InputStream;

+import java.io.Reader;

+

+import javax.servlet.http.HttpServletRequest;

+

+import org.apache.catalina.websocket.StreamInbound;

+import org.apache.catalina.websocket.WebSocketServlet;

+import org.apache.catalina.websocket.WsOutbound;

+

+/**

+ * @deprecated See {@link websocket.echo.EchoAnnotation}

+ */

+@Deprecated

+public class EchoStream extends WebSocketServlet {

+

+    private static final long serialVersionUID = 1L;

+

+    @Override

+    protected StreamInbound createWebSocketInbound(String subProtocol,

+            HttpServletRequest request) {

+        return new EchoStreamInbound();

+    }

+

+    private static final class EchoStreamInbound extends StreamInbound {

+

+        @Override

+        protected void onBinaryData(InputStream is) throws IOException {

+            // Simply echo the data to back to the client.

+            WsOutbound outbound = getWsOutbound();

+

+            int i = is.read();

+            while (i != -1) {

+                outbound.writeBinaryData(i);

+                i = is.read();

+            }

+

+            outbound.flush();

+        }

+

+        @Override

+        protected void onTextData(Reader r) throws IOException {

+            // Simply echo the data to back to the client.

+            WsOutbound outbound = getWsOutbound();

+

+            int c = r.read();

+            while (c != -1) {

+                outbound.writeTextData((char) c);

+                c = r.read();

+            }

+

+            outbound.flush();

+        }

+    }

+}

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/snake/Direction.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/snake/Direction.class
new file mode 100644
index 0000000..7db9c55
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/snake/Direction.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/snake/Direction.java b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/snake/Direction.java
new file mode 100644
index 0000000..4e375e7
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/snake/Direction.java
@@ -0,0 +1,25 @@
+/*

+ * 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.

+ */

+package websocket.tc7.snake;

+

+/**

+ * @deprecated See {@link websocket.snake.Direction}

+ */

+@Deprecated

+public enum Direction {

+    NONE, NORTH, SOUTH, EAST, WEST

+}

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/snake/Location$1.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/snake/Location$1.class
new file mode 100644
index 0000000..7e71c10
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/snake/Location$1.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/snake/Location.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/snake/Location.class
new file mode 100644
index 0000000..b052a15
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/snake/Location.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/snake/Location.java b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/snake/Location.java
new file mode 100644
index 0000000..257752e
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/snake/Location.java
@@ -0,0 +1,69 @@
+/*

+ * 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.

+ */

+package websocket.tc7.snake;

+

+/**

+ * @deprecated See {@link websocket.snake.Location}

+ */

+@Deprecated

+public class Location {

+

+    public int x;

+    public int y;

+

+    public Location(int x, int y) {

+        this.x = x;

+        this.y = y;

+    }

+

+    public Location getAdjacentLocation(Direction direction) {

+        switch (direction) {

+            case NORTH:

+                return new Location(x, y - SnakeWebSocketServlet.GRID_SIZE);

+            case SOUTH:

+                return new Location(x, y + SnakeWebSocketServlet.GRID_SIZE);

+            case EAST:

+                return new Location(x + SnakeWebSocketServlet.GRID_SIZE, y);

+            case WEST:

+                return new Location(x - SnakeWebSocketServlet.GRID_SIZE, y);

+            case NONE:

+                // fall through

+            default:

+                return this;

+        }

+    }

+

+    @Override

+    public boolean equals(Object o) {

+        if (this == o) return true;

+        if (o == null || getClass() != o.getClass()) return false;

+

+        Location location = (Location) o;

+

+        if (x != location.x) return false;

+        if (y != location.y) return false;

+

+        return true;

+    }

+

+    @Override

+    public int hashCode() {

+        int result = x;

+        result = 31 * result + y;

+        return result;

+    }

+}

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/snake/Snake.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/snake/Snake.class
new file mode 100644
index 0000000..336a9c3
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/snake/Snake.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/snake/Snake.java b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/snake/Snake.java
new file mode 100644
index 0000000..df36332
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/snake/Snake.java
@@ -0,0 +1,148 @@
+/*

+ * 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.

+ */

+package websocket.tc7.snake;

+

+import java.io.IOException;

+import java.nio.CharBuffer;

+import java.util.ArrayDeque;

+import java.util.Collection;

+import java.util.Deque;

+

+import org.apache.catalina.websocket.WsOutbound;

+

+/**

+ * @deprecated See {@link websocket.snake.Snake}

+ */

+@Deprecated

+public class Snake {

+

+    private static final int DEFAULT_LENGTH = 5;

+

+    private final int id;

+    private final WsOutbound outbound;

+

+    private Direction direction;

+    private int length = DEFAULT_LENGTH;

+    private Location head;

+    private Deque<Location> tail = new ArrayDeque<Location>();

+    private String hexColor;

+

+    public Snake(int id, WsOutbound outbound) {

+        this.id = id;

+        this.outbound = outbound;

+        this.hexColor = SnakeWebSocketServlet.getRandomHexColor();

+        resetState();

+    }

+

+    private void resetState() {

+        this.direction = Direction.NONE;

+        this.head = SnakeWebSocketServlet.getRandomLocation();

+        this.tail.clear();

+        this.length = DEFAULT_LENGTH;

+    }

+

+    private synchronized void kill() {

+        resetState();

+        try {

+            CharBuffer response = CharBuffer.wrap("{'type': 'dead'}");

+            outbound.writeTextMessage(response);

+        } catch (IOException ioe) {

+            // Ignore

+        }

+    }

+

+    private synchronized void reward() {

+        length++;

+        try {

+            CharBuffer response = CharBuffer.wrap("{'type': 'kill'}");

+            outbound.writeTextMessage(response);

+        } catch (IOException ioe) {

+            // Ignore

+        }

+    }

+

+    public synchronized void update(Collection<Snake> snakes) {

+        Location nextLocation = head.getAdjacentLocation(direction);

+        if (nextLocation.x >= SnakeWebSocketServlet.PLAYFIELD_WIDTH) {

+            nextLocation.x = 0;

+        }

+        if (nextLocation.y >= SnakeWebSocketServlet.PLAYFIELD_HEIGHT) {

+            nextLocation.y = 0;

+        }

+        if (nextLocation.x < 0) {

+            nextLocation.x = SnakeWebSocketServlet.PLAYFIELD_WIDTH;

+        }

+        if (nextLocation.y < 0) {

+            nextLocation.y = SnakeWebSocketServlet.PLAYFIELD_HEIGHT;

+        }

+        if (direction != Direction.NONE) {

+            tail.addFirst(head);

+            if (tail.size() > length) {

+                tail.removeLast();

+            }

+            head = nextLocation;

+        }

+

+        handleCollisions(snakes);

+    }

+

+    private void handleCollisions(Collection<Snake> snakes) {

+        for (Snake snake : snakes) {

+            boolean headCollision = id != snake.id && snake.getHead().equals(head);

+            boolean tailCollision = snake.getTail().contains(head);

+            if (headCollision || tailCollision) {

+                kill();

+                if (id != snake.id) {

+                    snake.reward();

+                }

+            }

+        }

+    }

+

+    public synchronized Location getHead() {

+        return head;

+    }

+

+    public synchronized Collection<Location> getTail() {

+        return tail;

+    }

+

+    public synchronized void setDirection(Direction direction) {

+        this.direction = direction;

+    }

+

+    public synchronized String getLocationsJson() {

+        StringBuilder sb = new StringBuilder();

+        sb.append(String.format("{x: %d, y: %d}",

+                Integer.valueOf(head.x), Integer.valueOf(head.y)));

+        for (Location location : tail) {

+            sb.append(',');

+            sb.append(String.format("{x: %d, y: %d}",

+                    Integer.valueOf(location.x), Integer.valueOf(location.y)));

+        }

+        return String.format("{'id':%d,'body':[%s]}",

+                Integer.valueOf(id), sb.toString());

+    }

+

+    public int getId() {

+        return id;

+    }

+

+    public String getHexColor() {

+        return hexColor;

+    }

+}

diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/snake/SnakeWebSocketServlet$1.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/snake/SnakeWebSocketServlet$1.class
new file mode 100644
index 0000000..2707bb7
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/snake/SnakeWebSocketServlet$1.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/snake/SnakeWebSocketServlet$SnakeMessageInbound.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/snake/SnakeWebSocketServlet$SnakeMessageInbound.class
new file mode 100644
index 0000000..2649169
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/snake/SnakeWebSocketServlet$SnakeMessageInbound.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/snake/SnakeWebSocketServlet.class b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/snake/SnakeWebSocketServlet.class
new file mode 100644
index 0000000..f174143
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/snake/SnakeWebSocketServlet.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/snake/SnakeWebSocketServlet.java b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/snake/SnakeWebSocketServlet.java
new file mode 100644
index 0000000..0a8c353
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/classes/websocket/tc7/snake/SnakeWebSocketServlet.java
@@ -0,0 +1,215 @@
+/*

+ * 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.

+ */

+package websocket.tc7.snake;

+

+import java.awt.Color;

+import java.io.IOException;

+import java.nio.ByteBuffer;

+import java.nio.CharBuffer;

+import java.util.Collection;

+import java.util.Collections;

+import java.util.Iterator;

+import java.util.Random;

+import java.util.Timer;

+import java.util.TimerTask;

+import java.util.concurrent.ConcurrentHashMap;

+import java.util.concurrent.atomic.AtomicInteger;

+

+import javax.servlet.ServletException;

+import javax.servlet.http.HttpServletRequest;

+

+import org.apache.catalina.websocket.MessageInbound;

+import org.apache.catalina.websocket.StreamInbound;

+import org.apache.catalina.websocket.WebSocketServlet;

+import org.apache.catalina.websocket.WsOutbound;

+import org.apache.juli.logging.Log;

+import org.apache.juli.logging.LogFactory;

+

+/**

+ * Example web socket servlet for simple multi-player snake.

+ * @deprecated See {@link websocket.snake.SnakeAnnotation}

+ */

+@Deprecated

+public class SnakeWebSocketServlet extends WebSocketServlet {

+

+    private static final long serialVersionUID = 1L;

+

+    private static final Log log =

+            LogFactory.getLog(SnakeWebSocketServlet.class);

+

+    public static final int PLAYFIELD_WIDTH = 640;

+    public static final int PLAYFIELD_HEIGHT = 480;

+    public static final int GRID_SIZE = 10;

+

+    private static final long TICK_DELAY = 100;

+

+    private static final Random random = new Random();

+

+    private final Timer gameTimer =

+            new Timer(SnakeWebSocketServlet.class.getSimpleName() + " Timer");

+

+    private final AtomicInteger connectionIds = new AtomicInteger(0);

+    private final ConcurrentHashMap<Integer, Snake> snakes =

+            new ConcurrentHashMap<Integer, Snake>();

+    private final ConcurrentHashMap<Integer, SnakeMessageInbound> connections =

+            new ConcurrentHashMap<Integer, SnakeMessageInbound>();

+

+    @Override

+    public void init() throws ServletException {

+        super.init();

+        gameTimer.scheduleAtFixedRate(new TimerTask() {

+            @Override

+            public void run() {

+                try {

+                    tick();

+                } catch (RuntimeException e) {

+                    log.error("Caught to prevent timer from shutting down", e);

+                }

+            }

+        }, TICK_DELAY, TICK_DELAY);

+    }

+

+    private void tick() {

+        StringBuilder sb = new StringBuilder();

+        for (Iterator<Snake> iterator = getSnakes().iterator();

+                iterator.hasNext();) {

+            Snake snake = iterator.next();

+            snake.update(getSnakes());

+            sb.append(snake.getLocationsJson());

+            if (iterator.hasNext()) {

+                sb.append(',');

+            }

+        }

+        broadcast(String.format("{'type': 'update', 'data' : [%s]}",

+                sb.toString()));

+    }

+

+    private void broadcast(String message) {

+        for (SnakeMessageInbound connection : getConnections()) {

+            try {

+                CharBuffer buffer = CharBuffer.wrap(message);

+                connection.getWsOutbound().writeTextMessage(buffer);

+            } catch (IOException ignore) {

+                // Ignore

+            }

+        }

+    }

+

+    private Collection<SnakeMessageInbound> getConnections() {

+        return Collections.unmodifiableCollection(connections.values());

+    }

+

+    private Collection<Snake> getSnakes() {

+        return Collections.unmodifiableCollection(snakes.values());

+    }

+

+    public static String getRandomHexColor() {

+        float hue = random.nextFloat();

+        // sat between 0.1 and 0.3

+        float saturation = (random.nextInt(2000) + 1000) / 10000f;

+        float luminance = 0.9f;

+        Color color = Color.getHSBColor(hue, saturation, luminance);

+        return '#' + Integer.toHexString(

+                (color.getRGB() & 0xffffff) | 0x1000000).substring(1);

+    }

+

+    public static Location getRandomLocation() {

+        int x = roundByGridSize(

+                random.nextInt(SnakeWebSocketServlet.PLAYFIELD_WIDTH));

+        int y = roundByGridSize(

+                random.nextInt(SnakeWebSocketServlet.PLAYFIELD_HEIGHT));

+        return new Location(x, y);

+    }

+

+    private static int roundByGridSize(int value) {

+        value = value + (SnakeWebSocketServlet.GRID_SIZE / 2);

+        value = value / SnakeWebSocketServlet.GRID_SIZE;

+        value = value * SnakeWebSocketServlet.GRID_SIZE;

+        return value;

+    }

+

+    @Override

+    public void destroy() {

+        super.destroy();

+        if (gameTimer != null) {

+            gameTimer.cancel();

+        }

+    }

+

+    @Override

+    protected StreamInbound createWebSocketInbound(String subProtocol,

+            HttpServletRequest request) {

+        return new SnakeMessageInbound(connectionIds.incrementAndGet());

+    }

+

+    private final class SnakeMessageInbound extends MessageInbound {

+

+        private final int id;

+        private Snake snake;

+

+        private SnakeMessageInbound(int id) {

+            this.id = id;

+        }

+

+        @Override

+        protected void onOpen(WsOutbound outbound) {

+            this.snake = new Snake(id, outbound);

+            snakes.put(Integer.valueOf(id), snake);

+            connections.put(Integer.valueOf(id), this);

+            StringBuilder sb = new StringBuilder();

+            for (Iterator<Snake> iterator = getSnakes().iterator();

+                    iterator.hasNext();) {

+                Snake snake = iterator.next();

+                sb.append(String.format("{id: %d, color: '%s'}",

+                        Integer.valueOf(snake.getId()), snake.getHexColor()));

+                if (iterator.hasNext()) {

+                    sb.append(',');

+                }

+            }

+            broadcast(String.format("{'type': 'join','data':[%s]}",

+                    sb.toString()));

+        }

+

+        @Override

+        protected void onClose(int status) {

+            connections.remove(Integer.valueOf(id));

+            snakes.remove(Integer.valueOf(id));

+            broadcast(String.format("{'type': 'leave', 'id': %d}",

+                    Integer.valueOf(id)));

+        }

+

+        @Override

+        protected void onBinaryMessage(ByteBuffer message) throws IOException {

+            throw new UnsupportedOperationException(

+                    "Binary message not supported.");

+        }

+

+        @Override

+        protected void onTextMessage(CharBuffer charBuffer) throws IOException {

+            String message = charBuffer.toString();

+            if ("west".equals(message)) {

+                snake.setDirection(Direction.WEST);

+            } else if ("north".equals(message)) {

+                snake.setDirection(Direction.NORTH);

+            } else if ("east".equals(message)) {

+                snake.setDirection(Direction.EAST);

+            } else if ("south".equals(message)) {

+                snake.setDirection(Direction.SOUTH);

+            }

+        }

+    }

+}

diff --git a/tomcat-uid/webapps/examples/WEB-INF/jsp/applet/Clock2.java b/tomcat-uid/webapps/examples/WEB-INF/jsp/applet/Clock2.java
index 16a8790..ccc96d1 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/jsp/applet/Clock2.java
+++ b/tomcat-uid/webapps/examples/WEB-INF/jsp/applet/Clock2.java
@@ -14,10 +14,14 @@
 * See the License for the specific language governing permissions and

 * limitations under the License.

 */

-import java.util.*;

-import java.awt.*;

-import java.applet.*;

-import java.text.*;

+

+import java.applet.Applet;

+import java.awt.Color;

+import java.awt.Font;

+import java.awt.Graphics;

+import java.text.SimpleDateFormat;

+import java.util.Date;

+import java.util.Locale;

 

 /**

  * Time!

@@ -26,9 +30,10 @@
  */

 

 public class Clock2 extends Applet implements Runnable {

+    private static final long serialVersionUID = 1L;

     Thread timer;                // The thread that displays clock

     int lastxs, lastys, lastxm,

-        lastym, lastxh, lastyh;  // Dimensions used to draw hands 

+        lastym, lastxh, lastyh;  // Dimensions used to draw hands

     SimpleDateFormat formatter;  // Formats the date displayed

     String lastdate;             // String to hold date displayed

     Font clockFaceFont;          // Font for number display on clock

@@ -36,8 +41,8 @@
     Color handColor;             // Color of main hands and dial

     Color numberColor;           // Color of second hand and numbers

 

+    @Override

     public void init() {

-        int x,y;

         lastxs = lastys = lastxm = lastym = lastxh = lastyh = 0;

         formatter = new SimpleDateFormat ("EEE MMM dd hh:mm:ss yyyy", Locale.getDefault());

         currentDate = new Date();

@@ -95,6 +100,7 @@
     }

 

     // Paint is the main part of the program

+    @Override

     public void paint(Graphics g) {

         int xh, yh, xm, ym, xs, ys, s = 0, m = 10, h = 10, xcenter, ycenter;

         String today;

@@ -111,7 +117,7 @@
             m = Integer.parseInt(formatter.format(currentDate));

         } catch (NumberFormatException n) {

             m = 10;

-        }    

+        }

         formatter.applyPattern("h");

         try {

             h = Integer.parseInt(formatter.format(currentDate));

@@ -122,30 +128,30 @@
         today = formatter.format(currentDate);

         xcenter=80;

         ycenter=55;

-    

+

     // a= s* pi/2 - pi/2 (to switch 0,0 from 3:00 to 12:00)

     // x = r(cos a) + xcenter, y = r(sin a) + ycenter

-    

+

         xs = (int)(Math.cos(s * 3.14f/30 - 3.14f/2) * 45 + xcenter);

         ys = (int)(Math.sin(s * 3.14f/30 - 3.14f/2) * 45 + ycenter);

         xm = (int)(Math.cos(m * 3.14f/30 - 3.14f/2) * 40 + xcenter);

         ym = (int)(Math.sin(m * 3.14f/30 - 3.14f/2) * 40 + ycenter);

         xh = (int)(Math.cos((h*30 + m/2) * 3.14f/180 - 3.14f/2) * 30 + xcenter);

         yh = (int)(Math.sin((h*30 + m/2) * 3.14f/180 - 3.14f/2) * 30 + ycenter);

-    

+

     // Draw the circle and numbers

-    

+

         g.setFont(clockFaceFont);

         g.setColor(handColor);

         circle(xcenter,ycenter,50,g);

         g.setColor(numberColor);

-        g.drawString("9",xcenter-45,ycenter+3); 

+        g.drawString("9",xcenter-45,ycenter+3);

         g.drawString("3",xcenter+40,ycenter+3);

         g.drawString("12",xcenter-5,ycenter-37);

         g.drawString("6",xcenter-3,ycenter+45);

 

     // Erase if necessary, and redraw

-    

+

         g.setColor(getBackground());

         if (xs != lastxs || ys != lastys) {

             g.drawLine(xcenter, ycenter, lastxs, lastys);

@@ -159,7 +165,7 @@
             g.drawLine(xcenter-1, ycenter, lastxh, lastyh); }

         g.setColor(numberColor);

         g.drawString("", 5, 125);

-        g.drawString(today, 5, 125);    

+        g.drawString(today, 5, 125);

         g.drawLine(xcenter, ycenter, xs, ys);

         g.setColor(handColor);

         g.drawLine(xcenter, ycenter-1, xm, ym);

@@ -173,34 +179,40 @@
         currentDate=null;

     }

 

+    @Override

     public void start() {

         timer = new Thread(this);

         timer.start();

     }

 

+    @Override

     public void stop() {

         timer = null;

     }

 

+    @Override

     public void run() {

         Thread me = Thread.currentThread();

         while (timer == me) {

             try {

-                Thread.currentThread().sleep(100);

+                Thread.sleep(100);

             } catch (InterruptedException e) {

             }

             repaint();

         }

     }

 

+    @Override

     public void update(Graphics g) {

         paint(g);

     }

 

+    @Override

     public String getAppletInfo() {

         return "Title: A Clock \nAuthor: Rachel Gollub, 1995 \nAn analog clock.";

     }

-  

+

+    @Override

     public String[][] getParameterInfo() {

         String[][] info = {

             {"bgcolor", "hexadecimal RGB number", "The background color. Default is the color of your browser."},

diff --git a/tomcat-uid/webapps/examples/WEB-INF/jsp/debug-taglib.tld b/tomcat-uid/webapps/examples/WEB-INF/jsp/debug-taglib.tld
index 8deea3e..d56027c 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/jsp/debug-taglib.tld
+++ b/tomcat-uid/webapps/examples/WEB-INF/jsp/debug-taglib.tld
@@ -17,7 +17,7 @@
 -->

 <!DOCTYPE taglib

         PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"

-	"http://java.sun.com/j2ee/dtd/web-jsptaglibrary_1_2.dtd">

+        "http://java.sun.com/j2ee/dtd/web-jsptaglibrary_1_2.dtd">

 

 <!-- a tag library descriptor -->

 

@@ -36,19 +36,19 @@
     <validator-class>validators.DebugValidator</validator-class>

   </validator>

 

-  <!-- This is a dummy tag solely to satisfy DTD requirements -->  

+  <!-- This is a dummy tag solely to satisfy DTD requirements -->

   <tag>

     <name>log</name>

     <tag-class>examples.LogTag</tag-class>

     <body-content>TAGDEPENDENT</body-content>

     <description>

-	Perform a server side action; Log the message.

+        Perform a server side action; Log the message.

     </description>

     <attribute>

-	<name>toBrowser</name>

-	<required>false</required>

+        <name>toBrowser</name>

+        <required>false</required>

     </attribute>

   </tag>

-  

+

 

 </taglib>

diff --git a/tomcat-uid/webapps/examples/WEB-INF/jsp/example-taglib.tld b/tomcat-uid/webapps/examples/WEB-INF/jsp/example-taglib.tld
index 0739c5c..906ba00 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/jsp/example-taglib.tld
+++ b/tomcat-uid/webapps/examples/WEB-INF/jsp/example-taglib.tld
@@ -17,7 +17,7 @@
 -->

 <!DOCTYPE taglib

         PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"

-	"http://java.sun.com/j2ee/dtd/web-jsptaglibrary_1_2.dtd">

+        "http://java.sun.com/j2ee/dtd/web-jsptaglibrary_1_2.dtd">

 

 <taglib>

 

@@ -26,7 +26,7 @@
   <short-name>simple</short-name>

   <uri>http://tomcat.apache.org/example-taglib</uri>

   <description>

-	A simple tab library for the examples

+    A simple tab library for the examples

   </description>

 

   <tag>

@@ -38,7 +38,7 @@
        <required>true</required>

        <rtexprvalue>true</rtexprvalue>

     </attribute>

-  </tag>       

+  </tag>

 

   <!-- A simple Tag -->

   <!-- foo tag -->

@@ -48,7 +48,7 @@
     <tei-class>examples.FooTagExtraInfo</tei-class>

     <body-content>JSP</body-content>

     <description>

-	Perform a server side action; uses 3 mandatory attributes

+      Perform a server side action; uses 3 mandatory attributes

     </description>

 

     <attribute>

@@ -72,12 +72,47 @@
     <tag-class>examples.LogTag</tag-class>

     <body-content>TAGDEPENDENT</body-content>

     <description>

-	Perform a server side action; Log the message.

+      Perform a server side action; Log the message.

     </description>

     <attribute>

-	<name>toBrowser</name>

-	<required>false</required>

+      <name>toBrowser</name>

+      <required>false</required>

     </attribute>

   </tag>

-  

+

+  <!-- Another simple Tag -->

+  <!-- values tag -->

+  <tag>

+    <name>values</name>

+    <tag-class>examples.ValuesTag</tag-class>

+    <body-content>empty</body-content>

+    <description>

+        Accept and return values of different types. This tag is used

+        to illustrate type coercions.

+    </description>

+    <attribute>

+      <name>object</name>

+      <required>false</required>

+      <rtexprvalue>true</rtexprvalue>

+      <type>java.lang.Object</type>

+    </attribute>

+    <attribute>

+      <name>string</name>

+      <required>false</required>

+      <rtexprvalue>true</rtexprvalue>

+      <type>java.lang.String</type>

+    </attribute>

+    <attribute>

+      <name>long</name>

+      <required>false</required>

+      <rtexprvalue>true</rtexprvalue>

+      <type>long</type>

+    </attribute>

+    <attribute>

+      <name>double</name>

+      <required>false</required>

+      <rtexprvalue>true</rtexprvalue>

+      <type>double</type>

+    </attribute>

+  </tag>

 </taglib>

diff --git a/tomcat-uid/webapps/examples/WEB-INF/jsp2/jsp2-example-taglib.tld b/tomcat-uid/webapps/examples/WEB-INF/jsp2/jsp2-example-taglib.tld
index 39f56f5..d3a2563 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/jsp2/jsp2-example-taglib.tld
+++ b/tomcat-uid/webapps/examples/WEB-INF/jsp2/jsp2-example-taglib.tld
@@ -23,12 +23,12 @@
     <description>A tag library exercising SimpleTag handlers.</description>

     <tlib-version>1.0</tlib-version>

     <short-name>SimpleTagLibrary</short-name>

-    <uri>/SimpleTagLibrary</uri>

+    <uri>http://tomcat.apache.org/jsp2-example-taglib</uri>

     <tag>

-	<description>Outputs Hello, World</description>

+        <description>Outputs Hello, World</description>

         <name>helloWorld</name>

-	<tag-class>jsp2.examples.simpletag.HelloWorldSimpleTag</tag-class>

-	<body-content>empty</body-content>

+        <tag-class>jsp2.examples.simpletag.HelloWorldSimpleTag</tag-class>

+        <body-content>empty</body-content>

     </tag>

     <tag>

         <description>Repeats the body of the tag 'num' times</description>

@@ -46,15 +46,15 @@
         </attribute>

     </tag>

     <tag>

-	<description>Populates the page context with a BookBean</description>

+        <description>Populates the page context with a BookBean</description>

         <name>findBook</name>

-	<tag-class>jsp2.examples.simpletag.FindBookSimpleTag</tag-class>

-	<body-content>empty</body-content>

-	<attribute>

-	    <name>var</name>

-	    <required>true</required>

-	    <rtexprvalue>true</rtexprvalue>

-	</attribute>

+        <tag-class>jsp2.examples.simpletag.FindBookSimpleTag</tag-class>

+        <body-content>empty</body-content>

+        <attribute>

+            <name>var</name>

+            <required>true</required>

+            <rtexprvalue>true</rtexprvalue>

+        </attribute>

     </tag>

     <tag>

         <description>

@@ -66,17 +66,17 @@
         <attribute>

             <name>fragment1</name>

             <required>true</required>

-	    <fragment>true</fragment>

+            <fragment>true</fragment>

         </attribute>

         <attribute>

             <name>fragment2</name>

             <required>true</required>

-	    <fragment>true</fragment>

+            <fragment>true</fragment>

         </attribute>

         <attribute>

             <name>fragment3</name>

             <required>true</required>

-	    <fragment>true</fragment>

+            <fragment>true</fragment>

         </attribute>

     </tag>

     <tag>

@@ -94,31 +94,31 @@
         </attribute>

     </tag>

     <tag>

-	<description>

-	  Tag that echoes all its attributes and body content

-	</description>

-	<name>echoAttributes</name>

-	<tag-class>jsp2.examples.simpletag.EchoAttributesTag</tag-class>

-	<body-content>empty</body-content>

-	<dynamic-attributes>true</dynamic-attributes>

+        <description>

+          Tag that echoes all its attributes and body content

+        </description>

+        <name>echoAttributes</name>

+        <tag-class>jsp2.examples.simpletag.EchoAttributesTag</tag-class>

+        <body-content>empty</body-content>

+        <dynamic-attributes>true</dynamic-attributes>

     </tag>

     <function>

         <description>Reverses the characters in the given String</description>

         <name>reverse</name>

-	<function-class>jsp2.examples.el.Functions</function-class>

-	<function-signature>java.lang.String reverse( java.lang.String )</function-signature>

+        <function-class>jsp2.examples.el.Functions</function-class>

+        <function-signature>java.lang.String reverse( java.lang.String )</function-signature>

     </function>

     <function>

         <description>Counts the number of vowels (a,e,i,o,u) in the given String</description>

         <name>countVowels</name>

-	<function-class>jsp2.examples.el.Functions</function-class>

-	<function-signature>java.lang.String numVowels( java.lang.String )</function-signature>

+        <function-class>jsp2.examples.el.Functions</function-class>

+        <function-signature>java.lang.String numVowels( java.lang.String )</function-signature>

     </function>

     <function>

-	<description>Converts the string to all caps</description>

+        <description>Converts the string to all caps</description>

         <name>caps</name>

-	<function-class>jsp2.examples.el.Functions</function-class>

-	<function-signature>java.lang.String caps( java.lang.String )</function-signature>

+        <function-class>jsp2.examples.el.Functions</function-class>

+        <function-signature>java.lang.String caps( java.lang.String )</function-signature>

     </function>

 </taglib>

 

diff --git a/tomcat-uid/webapps/examples/WEB-INF/lib/jstl.jar b/tomcat-uid/webapps/examples/WEB-INF/lib/jstl.jar
deleted file mode 100644
index a02abec..0000000
--- a/tomcat-uid/webapps/examples/WEB-INF/lib/jstl.jar
+++ /dev/null
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/lib/standard.jar b/tomcat-uid/webapps/examples/WEB-INF/lib/standard.jar
deleted file mode 100644
index bc528ac..0000000
--- a/tomcat-uid/webapps/examples/WEB-INF/lib/standard.jar
+++ /dev/null
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/lib/taglibs-standard-impl-1.2.5.jar b/tomcat-uid/webapps/examples/WEB-INF/lib/taglibs-standard-impl-1.2.5.jar
new file mode 100644
index 0000000..9176777
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/lib/taglibs-standard-impl-1.2.5.jar
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/lib/taglibs-standard-spec-1.2.5.jar b/tomcat-uid/webapps/examples/WEB-INF/lib/taglibs-standard-spec-1.2.5.jar
new file mode 100644
index 0000000..d547867
--- /dev/null
+++ b/tomcat-uid/webapps/examples/WEB-INF/lib/taglibs-standard-spec-1.2.5.jar
Binary files differ
diff --git a/tomcat-uid/webapps/examples/WEB-INF/tags/displayProducts.tag b/tomcat-uid/webapps/examples/WEB-INF/tags/displayProducts.tag
index 508852e..b2702a3 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/tags/displayProducts.tag
+++ b/tomcat-uid/webapps/examples/WEB-INF/tags/displayProducts.tag
@@ -24,28 +24,28 @@
 

 <table border="1">

   <tr>

-    <td> 

+    <td>

       <c:set var="name" value="Hand-held Color PDA"/>

       <c:set var="price" value="$298.86"/>

       <jsp:invoke fragment="normalPrice"/>

     </td>

-    <td> 

+    <td>

       <c:set var="name" value="4-Pack 150 Watt Light Bulbs"/>

       <c:set var="origPrice" value="$2.98"/>

       <c:set var="salePrice" value="$2.32"/>

       <jsp:invoke fragment="onSale"/>

     </td>

-    <td> 

+    <td>

       <c:set var="name" value="Digital Cellular Phone"/>

       <c:set var="price" value="$68.74"/>

       <jsp:invoke fragment="normalPrice"/>

     </td>

-    <td> 

+    <td>

       <c:set var="name" value="Baby Grand Piano"/>

       <c:set var="price" value="$10,800.00"/>

       <jsp:invoke fragment="normalPrice"/>

     </td>

-    <td> 

+    <td>

       <c:set var="name" value="Luxury Car w/ Leather Seats"/>

       <c:set var="origPrice" value="$23,980.00"/>

       <c:set var="salePrice" value="$21,070.00"/>

diff --git a/tomcat-uid/webapps/examples/WEB-INF/web.xml b/tomcat-uid/webapps/examples/WEB-INF/web.xml
index 955179e..0c8fe38 100644
--- a/tomcat-uid/webapps/examples/WEB-INF/web.xml
+++ b/tomcat-uid/webapps/examples/WEB-INF/web.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>

 <!--

- Licensed to the Apache Software Foundation (ASF) under one or more

+  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

@@ -15,57 +15,61 @@
   See the License for the specific language governing permissions and

   limitations under the License.

 -->

-

 <web-app xmlns="http://java.sun.com/xml/ns/javaee"

-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

-   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

-   version="2.5"> 

+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

+                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

+  version="3.0"

+  metadata-complete="true">

 

     <description>

       Servlet and JSP Examples.

     </description>

     <display-name>Servlet and JSP Examples</display-name>

 

+    <!-- Define example filters -->

+    <filter>

+        <filter-name>Timing filter</filter-name>

+        <filter-class>filters.ExampleFilter</filter-class>

+        <init-param>

+            <param-name>attribute</param-name>

+            <param-value>filters.ExampleFilter</param-value>

+        </init-param>

+    </filter>

 

-    <!-- Define servlet-mapped and path-mapped example filters -->

-    <filter>

-        <filter-name>Servlet Mapped Filter</filter-name>

-        <filter-class>filters.ExampleFilter</filter-class>

-	<init-param>

-	    <param-name>attribute</param-name>

-	    <param-value>filters.ExampleFilter.SERVLET_MAPPED</param-value>

-	</init-param>

-    </filter>

-    <filter>

-        <filter-name>Path Mapped Filter</filter-name>

-        <filter-class>filters.ExampleFilter</filter-class>

-	<init-param>

-	    <param-name>attribute</param-name>

-	    <param-value>filters.ExampleFilter.PATH_MAPPED</param-value>

-	</init-param>

-    </filter>

     <filter>

         <filter-name>Request Dumper Filter</filter-name>

-        <filter-class>filters.RequestDumperFilter</filter-class>

+        <filter-class>org.apache.catalina.filters.RequestDumperFilter</filter-class>

     </filter>

 

     <!-- Example filter to set character encoding on each request -->

     <filter>

         <filter-name>Set Character Encoding</filter-name>

-        <filter-class>filters.SetCharacterEncodingFilter</filter-class>

+        <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>

         <init-param>

             <param-name>encoding</param-name>

             <param-value>EUC_JP</param-value>

         </init-param>

+        <init-param>

+            <param-name>ignore</param-name>

+            <param-value>true</param-value>

+        </init-param>

     </filter>

 

     <filter>

         <filter-name>Compression Filter</filter-name>

         <filter-class>compressionFilters.CompressionFilter</filter-class>

-

         <init-param>

-          <param-name>compressionThreshold</param-name>

-          <param-value>10</param-value>

+            <param-name>compressionThreshold</param-name>

+            <param-value>128</param-value>

+        </init-param>

+        <init-param>

+            <param-name>compressionBuffer</param-name>

+            <param-value>8192</param-value>

+        </init-param>

+        <init-param>

+            <param-name>compressionMimeTypes</param-name>

+            <param-value>text/html,text/plain,text/xml</param-value>

         </init-param>

         <init-param>

           <param-name>debug</param-name>

@@ -73,15 +77,13 @@
         </init-param>

     </filter>

 

-    <!-- Define filter mappings for the defined filters -->

+    <!-- Define filter mappings for the timing filters -->

+    <!--

     <filter-mapping>

-        <filter-name>Servlet Mapped Filter</filter-name>

-	<servlet-name>invoker</servlet-name>

+        <filter-name>Timing Filter</filter-name>

+        <url-pattern>/*</url-pattern>

     </filter-mapping>

-    <filter-mapping>

-        <filter-name>Path Mapped Filter</filter-name>

-	<url-pattern>/servlet/*</url-pattern>

-    </filter-mapping>

+    -->

 

 <!-- Example filter mapping to apply the "Set Character Encoding" filter

      to *all* requests processed by this web application -->

@@ -117,8 +119,8 @@
     <!-- Define servlets that are included in the example application -->

 

     <servlet>

-      <servlet-name>servletToJsp</servlet-name>

-      <servlet-class>servletToJsp</servlet-class>

+      <servlet-name>ServletToJsp</servlet-name>

+      <servlet-class>ServletToJsp</servlet-class>

     </servlet>

     <servlet>

         <servlet-name>ChatServlet</servlet-name>

@@ -155,7 +157,7 @@
 

     <servlet-mapping>

         <servlet-name>ChatServlet</servlet-name>

-        <url-pattern>/jsp/chat/chat</url-pattern>

+        <url-pattern>/servlets/chat/chat</url-pattern>

     </servlet-mapping>

     <servlet-mapping>

         <servlet-name>CompressionFilterTestServlet</servlet-name>

@@ -186,68 +188,68 @@
         <url-pattern>/servlets/servlet/SessionExample</url-pattern>

     </servlet-mapping>

     <servlet-mapping>

-        <servlet-name>servletToJsp</servlet-name>

+        <servlet-name>ServletToJsp</servlet-name>

         <url-pattern>/servletToJsp</url-pattern>

     </servlet-mapping>

 

     <jsp-config>

         <taglib>

-	    <taglib-uri>

-	       http://tomcat.apache.org/debug-taglib

-	    </taglib-uri>

-	    <taglib-location>

-	       /WEB-INF/jsp/debug-taglib.tld

-	    </taglib-location>

-	</taglib>

+            <taglib-uri>

+               http://tomcat.apache.org/debug-taglib

+            </taglib-uri>

+            <taglib-location>

+               /WEB-INF/jsp/debug-taglib.tld

+            </taglib-location>

+        </taglib>

 

-	<taglib>

-	    <taglib-uri>

-	       http://tomcat.apache.org/examples-taglib

-	    </taglib-uri>

-	    <taglib-location>

-	       /WEB-INF/jsp/example-taglib.tld

-	    </taglib-location>

-	</taglib>

+        <taglib>

+            <taglib-uri>

+               http://tomcat.apache.org/example-taglib

+            </taglib-uri>

+            <taglib-location>

+               /WEB-INF/jsp/example-taglib.tld

+            </taglib-location>

+        </taglib>

 

-	<taglib>

-	    <taglib-uri>

-	       http://tomcat.apache.org/jsp2-example-taglib

-	    </taglib-uri>

-	    <taglib-location>

-	       /WEB-INF/jsp2/jsp2-example-taglib.tld

-	    </taglib-location>

-	</taglib>

+        <taglib>

+            <taglib-uri>

+               http://tomcat.apache.org/jsp2-example-taglib

+            </taglib-uri>

+            <taglib-location>

+               /WEB-INF/jsp2/jsp2-example-taglib.tld

+            </taglib-location>

+        </taglib>

 

-	<jsp-property-group>

-	    <description>

-		Special property group for JSP Configuration JSP example.

-	    </description>

-	    <display-name>JSPConfiguration</display-name>

-	    <url-pattern>/jsp/jsp2/misc/config.jsp</url-pattern>

-	    <el-ignored>true</el-ignored>

-	    <page-encoding>ISO-8859-1</page-encoding>

-	    <scripting-invalid>true</scripting-invalid>

-	    <include-prelude>/jsp/jsp2/misc/prelude.jspf</include-prelude>

-	    <include-coda>/jsp/jsp2/misc/coda.jspf</include-coda>

-	</jsp-property-group>

+        <jsp-property-group>

+            <description>

+                Special property group for JSP Configuration JSP example.

+            </description>

+            <display-name>JSPConfiguration</display-name>

+            <url-pattern>/jsp/jsp2/misc/config.jsp</url-pattern>

+            <el-ignored>true</el-ignored>

+            <page-encoding>ISO-8859-1</page-encoding>

+            <scripting-invalid>true</scripting-invalid>

+            <include-prelude>/jsp/jsp2/misc/prelude.jspf</include-prelude>

+            <include-coda>/jsp/jsp2/misc/coda.jspf</include-coda>

+        </jsp-property-group>

     </jsp-config>

-    

+

    <security-constraint>

       <display-name>Example Security Constraint</display-name>

       <web-resource-collection>

          <web-resource-name>Protected Area</web-resource-name>

-	 <!-- Define the context-relative URL(s) to be protected -->

+         <!-- Define the context-relative URL(s) to be protected -->

          <url-pattern>/jsp/security/protected/*</url-pattern>

-	 <!-- If you list http methods, only those methods are protected -->

-	 <http-method>DELETE</http-method>

+         <!-- If you list http methods, only those methods are protected -->

+         <http-method>DELETE</http-method>

          <http-method>GET</http-method>

          <http-method>POST</http-method>

-	 <http-method>PUT</http-method>

+         <http-method>PUT</http-method>

       </web-resource-collection>

       <auth-constraint>

          <!-- Anyone with one of the listed roles may access this area -->

          <role-name>tomcat</role-name>

-	 <role-name>role1</role-name>

+         <role-name>role1</role-name>

       </auth-constraint>

     </security-constraint>

 

@@ -260,14 +262,14 @@
         <form-error-page>/jsp/security/protected/error.jsp</form-error-page>

       </form-login-config>

     </login-config>

-        

+

     <!-- Security roles referenced by this web application -->

     <security-role>

       <role-name>role1</role-name>

     </security-role>

     <security-role>

       <role-name>tomcat</role-name>

-    </security-role>    

+    </security-role>

 

     <!-- Environment entry examples -->

     <!--env-entry>

@@ -304,4 +306,109 @@
       <env-entry-value>10</env-entry-value>

     </env-entry>

 

+    <!-- Async examples -->

+    <servlet>

+      <servlet-name>async0</servlet-name>

+      <servlet-class>async.Async0</servlet-class>

+      <async-supported>true</async-supported>

+    </servlet>

+    <servlet-mapping>

+      <servlet-name>async0</servlet-name>

+      <url-pattern>/async/async0</url-pattern>

+    </servlet-mapping>

+    <servlet>

+      <servlet-name>async1</servlet-name>

+      <servlet-class>async.Async1</servlet-class>

+      <async-supported>true</async-supported>

+    </servlet>

+    <servlet-mapping>

+      <servlet-name>async1</servlet-name>

+      <url-pattern>/async/async1</url-pattern>

+    </servlet-mapping>

+    <servlet>

+      <servlet-name>async2</servlet-name>

+      <servlet-class>async.Async2</servlet-class>

+      <async-supported>true</async-supported>

+    </servlet>

+    <servlet-mapping>

+      <servlet-name>async2</servlet-name>

+      <url-pattern>/async/async2</url-pattern>

+    </servlet-mapping>

+    <servlet>

+      <servlet-name>async3</servlet-name>

+      <servlet-class>async.Async3</servlet-class>

+      <async-supported>true</async-supported>

+    </servlet>

+    <servlet-mapping>

+      <servlet-name>async3</servlet-name>

+      <url-pattern>/async/async3</url-pattern>

+    </servlet-mapping>

+    <servlet>

+      <servlet-name>stock</servlet-name>

+      <servlet-class>async.AsyncStockServlet</servlet-class>

+      <async-supported>true</async-supported>

+    </servlet>

+    <servlet-mapping>

+      <servlet-name>stock</servlet-name>

+      <url-pattern>/async/stockticker</url-pattern>

+    </servlet-mapping>

+    

+    <!-- WebSocket Examples using Deprecated Tomcat 7 API-->

+    <servlet>

+      <servlet-name>wsEchoStream</servlet-name>

+      <servlet-class>websocket.tc7.echo.EchoStream</servlet-class>

+    </servlet>

+    <servlet-mapping>

+      <servlet-name>wsEchoStream</servlet-name>

+      <url-pattern>/websocket/tc7/echoStream</url-pattern>

+    </servlet-mapping>

+    <servlet>

+      <servlet-name>wsEchoMessage</servlet-name>

+      <servlet-class>websocket.tc7.echo.EchoMessage</servlet-class>

+      <!-- Uncomment the following block to increase the default maximum

+           WebSocket buffer size from 2MB to 20MB which is required for the

+           Autobahn test suite to pass fully. -->

+      <!--

+      <init-param>

+        <param-name>byteBufferMaxSize</param-name>

+        <param-value>20971520</param-value>

+      </init-param>

+      <init-param>

+        <param-name>charBufferMaxSize</param-name>

+        <param-value>20971520</param-value>

+      </init-param>

+      -->

+    </servlet>

+    <servlet-mapping>

+      <servlet-name>wsEchoMessage</servlet-name>

+      <url-pattern>/websocket/tc7/echoMessage</url-pattern>

+    </servlet-mapping>

+    <servlet>

+        <servlet-name>wsChat</servlet-name>

+        <servlet-class>websocket.tc7.chat.ChatWebSocketServlet</servlet-class>

+    </servlet>

+    <servlet-mapping>

+        <servlet-name>wsChat</servlet-name>

+        <url-pattern>/websocket/tc7/chat</url-pattern>

+    </servlet-mapping>

+    <servlet>

+      <servlet-name>wsSnake</servlet-name>

+      <servlet-class>websocket.tc7.snake.SnakeWebSocketServlet</servlet-class>

+    </servlet>

+    <servlet-mapping>

+      <servlet-name>wsSnake</servlet-name>

+      <url-pattern>/websocket/tc7/snake</url-pattern>

+    </servlet-mapping>

+    <!-- Websocket examples -->

+    <listener>

+        <listener-class>websocket.drawboard.DrawboardContextListener</listener-class>

+    </listener>

+

+    <welcome-file-list>

+        <welcome-file>index.html</welcome-file>

+        <welcome-file>index.xhtml</welcome-file>

+        <welcome-file>index.htm</welcome-file>

+        <welcome-file>index.jsp</welcome-file>

+    </welcome-file-list>

+

 </web-app>

diff --git a/tomcat-uid/webapps/examples/index.html b/tomcat-uid/webapps/examples/index.html
index 8dfea59..6bf9f79 100644
--- a/tomcat-uid/webapps/examples/index.html
+++ b/tomcat-uid/webapps/examples/index.html
@@ -14,16 +14,19 @@
   See the License for the specific language governing permissions and

   limitations under the License.

 -->

-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

-<HTML><HEAD><TITLE>Apache Tomcat Examples</TITLE>

-<META http-equiv=Content-Type content="text/html">

-</HEAD>

-<BODY>

-<P>

-<H3>Apache Tomcat Examples</H3>

-<P></P>

+<!DOCTYPE HTML><html lang="en"><head>

+<meta charset="UTF-8">

+<title>Apache Tomcat Examples</title>

+</head>

+<body>

+<p>

+<h3>Apache Tomcat Examples</H3>

+<p></p>

 <ul>

 <li><a href="servlets">Servlets examples</a></li>

 <li><a href="jsp">JSP Examples</a></li>

+<li><a href="websocket/index.xhtml">WebSocket (JSR356) Examples</a></li>

+<li><a href="websocket-deprecated">WebSocket Examples using the deprecated

+    Apache Tomcat proprietary API</a></li>

 </ul>

-</BODY></HTML>

+</body></html>

diff --git a/tomcat-uid/webapps/examples/jsp/chat/login.jsp b/tomcat-uid/webapps/examples/jsp/async/async1.jsp
similarity index 63%
copy from tomcat-uid/webapps/examples/jsp/chat/login.jsp
copy to tomcat-uid/webapps/examples/jsp/async/async1.jsp
index e1c6496..fb6fa2d 100644
--- a/tomcat-uid/webapps/examples/jsp/chat/login.jsp
+++ b/tomcat-uid/webapps/examples/jsp/async/async1.jsp
@@ -1,7 +1,4 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

-<%@page contentType="text/html; charset=UTF-8" %>

-<html>

-<!--

+<%--

  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.

@@ -16,18 +13,14 @@
   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.

--->

-<head>

-   <title>JSP Chat</title>

-</head>

-

-<body bgcolor="#FFFFFF">

-

-<form method="POST" action='chat' target="_top" name="loginForm">

-<input type="hidden" name="action" value="login">

-Nickname: <input type="text" name="nickname">

-<input type="submit">

-</form>

-

-</body>

-</html>

+--%>

+<%@page session="false"%>

+Output from async1.jsp

+Type is <%=request.getDispatcherType()%>

+<%

+System.out.println("Inside Async 1");

+  if (request.isAsyncStarted()) {

+    request.getAsyncContext().complete();

+  }

+%>

+Completed async request at <%=new java.sql.Date(System.currentTimeMillis())%>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/examples/jsp/chat/login.jsp b/tomcat-uid/webapps/examples/jsp/async/async1.jsp.html
similarity index 63%
copy from tomcat-uid/webapps/examples/jsp/chat/login.jsp
copy to tomcat-uid/webapps/examples/jsp/async/async1.jsp.html
index e1c6496..4c460b8 100644
--- a/tomcat-uid/webapps/examples/jsp/chat/login.jsp
+++ b/tomcat-uid/webapps/examples/jsp/async/async1.jsp.html
@@ -1,7 +1,5 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

-<%@page contentType="text/html; charset=UTF-8" %>

-<html>

-<!--

+<html><body><pre>

+&lt;%--

  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.

@@ -16,18 +14,15 @@
   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.

--->

-<head>

-   <title>JSP Chat</title>

-</head>

-

-<body bgcolor="#FFFFFF">

-

-<form method="POST" action='chat' target="_top" name="loginForm">

-<input type="hidden" name="action" value="login">

-Nickname: <input type="text" name="nickname">

-<input type="submit">

-</form>

-

-</body>

-</html>

+--%>

+&lt;%@page session="false"%>

+Output from async1.jsp

+Type is &lt;%=request.getDispatcherType()%>

+&lt;%

+System.out.println("Inside Async 1");

+  if (request.isAsyncStarted()) {

+    request.getAsyncContext().complete();

+  }

+%>

+Completed async request at &lt;%=new java.sql.Date(System.currentTimeMillis())%>

+</pre></body></html>

diff --git a/tomcat-uid/webapps/examples/jsp/chat/login.jsp b/tomcat-uid/webapps/examples/jsp/async/async3.jsp
similarity index 63%
copy from tomcat-uid/webapps/examples/jsp/chat/login.jsp
copy to tomcat-uid/webapps/examples/jsp/async/async3.jsp
index e1c6496..c16d5d7 100644
--- a/tomcat-uid/webapps/examples/jsp/chat/login.jsp
+++ b/tomcat-uid/webapps/examples/jsp/async/async3.jsp
@@ -1,7 +1,4 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

-<%@page contentType="text/html; charset=UTF-8" %>

-<html>

-<!--

+<%--

  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.

@@ -16,18 +13,8 @@
   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.

--->

-<head>

-   <title>JSP Chat</title>

-</head>

-

-<body bgcolor="#FFFFFF">

-

-<form method="POST" action='chat' target="_top" name="loginForm">

-<input type="hidden" name="action" value="login">

-Nickname: <input type="text" name="nickname">

-<input type="submit">

-</form>

-

-</body>

-</html>

+--%>

+<%@page session="false"%>

+Output from async3.jsp

+Type is <%=request.getDispatcherType()%>

+Completed async 3 request at <%=new java.sql.Date(System.currentTimeMillis())%>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/examples/jsp/chat/login.jsp b/tomcat-uid/webapps/examples/jsp/async/async3.jsp.html
similarity index 63%
copy from tomcat-uid/webapps/examples/jsp/chat/login.jsp
copy to tomcat-uid/webapps/examples/jsp/async/async3.jsp.html
index e1c6496..ad77ae9 100644
--- a/tomcat-uid/webapps/examples/jsp/chat/login.jsp
+++ b/tomcat-uid/webapps/examples/jsp/async/async3.jsp.html
@@ -1,7 +1,5 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

-<%@page contentType="text/html; charset=UTF-8" %>

-<html>

-<!--

+<html><body><pre>

+&lt;%--

  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.

@@ -16,18 +14,9 @@
   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.

--->

-<head>

-   <title>JSP Chat</title>

-</head>

-

-<body bgcolor="#FFFFFF">

-

-<form method="POST" action='chat' target="_top" name="loginForm">

-<input type="hidden" name="action" value="login">

-Nickname: <input type="text" name="nickname">

-<input type="submit">

-</form>

-

-</body>

-</html>

+--%>

+&lt;%@page session="false"%>

+Output from async3.jsp

+Type is &lt;%=request.getDispatcherType()%>

+Completed async 3 request at &lt;%=new java.sql.Date(System.currentTimeMillis())%>

+</pre></body></html>

diff --git a/tomcat-uid/webapps/examples/jsp/async/index.jsp b/tomcat-uid/webapps/examples/jsp/async/index.jsp
new file mode 100644
index 0000000..28af9ac
--- /dev/null
+++ b/tomcat-uid/webapps/examples/jsp/async/index.jsp
@@ -0,0 +1,69 @@
+<%--

+ 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.

+--%>

+<%@page session="false"%>

+

+<pre>

+Use cases:

+

+1. Simple dispatch

+ - servlet does startAsync()

+ - background thread calls ctx.dispatch()

+   <a href="<%=response.encodeURL("/examples/async/async0")%>"> Async 0 </a>

+

+2. Simple dispatch

+ - servlet does startAsync()

+ - background thread calls dispatch(/path/to/jsp)

+   <a href="<%=response.encodeURL("/examples/async/async1")%>"> Async 1 </a>

+

+3. Simple dispatch

+ - servlet does startAsync()

+ - background thread calls writes and calls complete()

+   <a href="<%=response.encodeURL("/examples/async/async2")%>"> Async 2 </a>

+

+4. Simple dispatch

+ - servlet does a startAsync()

+ - servlet calls dispatch(/path/to/jsp)

+ - servlet calls complete()

+   <a href="<%=response.encodeURL("/examples/async/async3")%>"> Async 3 </a>

+

+3. Timeout s1

+ - servlet does a startAsync()

+ - servlet does a setAsyncTimeout

+ - returns - waits for timeout to happen should return error page

+

+4. Timeout s2

+ - servlet does a startAsync()

+ - servlet does a setAsyncTimeout

+ - servlet does a addAsyncListener

+ - returns - waits for timeout to happen and listener invoked

+

+5. Dispatch to asyncSupported=false servlet

+ - servlet1 does a startAsync()

+ - servlet1 dispatches to dispatch(/servlet2)

+ - the container calls complete() after servlet2 is complete

+ - TODO

+

+6. Chained dispatch

+ - servlet1 does a startAsync

+ - servlet1 does a dispatch to servlet2 (asyncsupported=true)

+ - servlet2 does a dispatch to servlet3 (asyncsupported=true)

+ - servlet3 does a dispatch to servlet4 (asyncsupported=false)

+

+

+7. Stock ticker

+   <a href="<%=response.encodeURL("/examples/async/stockticker")%>"> StockTicker </a>

+</pre>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/examples/jsp/async/index.jsp.html b/tomcat-uid/webapps/examples/jsp/async/index.jsp.html
new file mode 100644
index 0000000..6f124b5
--- /dev/null
+++ b/tomcat-uid/webapps/examples/jsp/async/index.jsp.html
@@ -0,0 +1,71 @@
+<html><body><pre>

+&lt;%--

+ 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.

+--%>

+&lt;%@page session="false"%>

+

+&lt;pre>

+Use cases:

+

+1. Simple dispatch

+ - servlet does startAsync()

+ - background thread calls ctx.dispatch()

+   &lt;a href="&lt;%=response.encodeURL("/examples/async/async0")%>"> Async 0 &lt;/a>

+

+2. Simple dispatch

+ - servlet does startAsync()

+ - background thread calls dispatch(/path/to/jsp)

+   &lt;a href="&lt;%=response.encodeURL("/examples/async/async1")%>"> Async 1 &lt;/a>

+

+3. Simple dispatch

+ - servlet does startAsync()

+ - background thread calls writes and calls complete()

+   &lt;a href="&lt;%=response.encodeURL("/examples/async/async2")%>"> Async 2 &lt;/a>

+

+4. Simple dispatch

+ - servlet does a startAsync()

+ - servlet calls dispatch(/path/to/jsp)

+ - servlet calls complete()

+   &lt;a href="&lt;%=response.encodeURL("/examples/async/async3")%>"> Async 3 &lt;/a>

+

+3. Timeout s1

+ - servlet does a startAsync()

+ - servlet does a setAsyncTimeout

+ - returns - waits for timeout to happen should return error page

+

+4. Timeout s2

+ - servlet does a startAsync()

+ - servlet does a setAsyncTimeout

+ - servlet does a addAsyncListener

+ - returns - waits for timeout to happen and listener invoked

+

+5. Dispatch to asyncSupported=false servlet

+ - servlet1 does a startAsync()

+ - servlet1 dispatches to dispatch(/servlet2)

+ - the container calls complete() after servlet2 is complete

+ - TODO

+

+6. Chained dispatch

+ - servlet1 does a startAsync

+ - servlet1 does a dispatch to servlet2 (asyncsupported=true)

+ - servlet2 does a dispatch to servlet3 (asyncsupported=true)

+ - servlet3 does a dispatch to servlet4 (asyncsupported=false)

+

+

+7. Stock ticker

+   &lt;a href="&lt;%=response.encodeURL("/examples/async/stockticker")%>"> StockTicker &lt;/a>

+&lt;/pre>

+</pre></body></html>

diff --git a/tomcat-uid/webapps/examples/jsp/cal/Entries.java.html b/tomcat-uid/webapps/examples/jsp/cal/Entries.java.html
index 6093d31..289363b 100644
--- a/tomcat-uid/webapps/examples/jsp/cal/Entries.java.html
+++ b/tomcat-uid/webapps/examples/jsp/cal/Entries.java.html
@@ -1,74 +1,62 @@
 <html><body><pre>

 /*

-* 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.

-*/

+ * 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.

+ */

 package cal;

 

 import java.util.Hashtable;

-import javax.servlet.http.*;

+

+import javax.servlet.http.HttpServletRequest;

 

 public class Entries {

 

-  private Hashtable entries;

-  private static final String[] time = {"8am", "9am", "10am", "11am", "12pm", 

-					"1pm", "2pm", "3pm", "4pm", "5pm", "6pm",

-					"7pm", "8pm" };

-  public static final int rows = 12;

+    private Hashtable&lt;String, Entry> entries;

+    private static final String[] time = { "8am", "9am", "10am", "11am",

+            "12pm", "1pm", "2pm", "3pm", "4pm", "5pm", "6pm", "7pm", "8pm" };

+    public static final int rows = 12;

 

-  public Entries () {   

-   entries = new Hashtable (rows);

-   for (int i=0; i &lt; rows; i++) {

-     entries.put (time[i], new Entry(time[i]));

-   }

-  }

-

-  public int getRows () {

-    return rows;

-  }

-

-  public Entry getEntry (int index) {

-    return (Entry)this.entries.get(time[index]);

-  }

-

-  public int getIndex (String tm) {

-    for (int i=0; i&lt;rows; i++)

-      if(tm.equals(time[i])) return i;

-    return -1;

-  }

-

-  public void processRequest (HttpServletRequest request, String tm) {

-    int index = getIndex (tm);

-    if (index >= 0) {

-      String descr = request.getParameter ("description");

-      ((Entry)entries.get(time[index])).setDescription (descr);

+    public Entries() {

+        entries = new Hashtable&lt;String, Entry>(rows);

+        for (int i = 0; i &lt; rows; i++) {

+            entries.put(time[i], new Entry(time[i]));

+        }

     }

-  }

+

+    public int getRows() {

+        return rows;

+    }

+

+    public Entry getEntry(int index) {

+        return this.entries.get(time[index]);

+    }

+

+    public int getIndex(String tm) {

+        for (int i = 0; i &lt; rows; i++)

+            if (tm.equals(time[i]))

+                return i;

+        return -1;

+    }

+

+    public void processRequest(HttpServletRequest request, String tm) {

+        int index = getIndex(tm);

+        if (index >= 0) {

+            String descr = request.getParameter("description");

+            entries.get(time[index]).setDescription(descr);

+        }

+    }

 

 }

-

-

-

-

-

-

-

-

-

-

-

-

-

 </pre></body></html>

diff --git a/tomcat-uid/webapps/examples/jsp/cal/Entry.java.html b/tomcat-uid/webapps/examples/jsp/cal/Entry.java.html
index f982750..4e97bc1 100644
--- a/tomcat-uid/webapps/examples/jsp/cal/Entry.java.html
+++ b/tomcat-uid/webapps/examples/jsp/cal/Entry.java.html
@@ -1,57 +1,55 @@
 <html><body><pre>

 /*

-* 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.

-*/

+ * 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.

+ */

 

 package cal;

 

 public class Entry {

 

-  String hour;

-  String description;

-  String color;

+    String hour;

+    String description;

 

-  public Entry (String hour) {

-    this.hour = hour;

-    this.description = "";

+    public Entry(String hour) {

+        this.hour = hour;

+        this.description = "";

 

-  }

+    }

 

-  public String getHour () {

-    return this.hour;

-  }

+    public String getHour() {

+        return this.hour;

+    }

 

-  public String getColor () {

-    if (description.equals("")) return "lightblue";

-    else return "red";

-  }

+    public String getColor() {

+        if (description.equals("")) {

+            return "lightblue";

+        }

+        return "red";

+    }

 

-  public String getDescription () {

-    if (description.equals("")) return "None";

-    else return this.description;

-  }

+    public String getDescription() {

+        if (description.equals("")) {

+            return "None";

+        }

+        return this.description;

+    }

 

-  public void setDescription (String descr) {

-    description = descr;

-  }

- 

+    public void setDescription(String descr) {

+        description = descr;

+    }

+

 }

-

-

-

-

-

 </pre></body></html>

diff --git a/tomcat-uid/webapps/examples/jsp/cal/JspCalendar.java.html b/tomcat-uid/webapps/examples/jsp/cal/JspCalendar.java.html
index e1b4b83..3c04fd1 100644
--- a/tomcat-uid/webapps/examples/jsp/cal/JspCalendar.java.html
+++ b/tomcat-uid/webapps/examples/jsp/cal/JspCalendar.java.html
@@ -18,139 +18,136 @@
 

 package cal;

 

-import java.util.*;

+import java.util.Calendar;

+import java.util.Date;

 

 public class JspCalendar {

     Calendar  calendar = null;

-    Date currentDate;

 

     public JspCalendar() {

-	calendar = Calendar.getInstance();

-	Date trialTime = new Date();

-	calendar.setTime(trialTime);

+        calendar = Calendar.getInstance();

+        Date trialTime = new Date();

+        calendar.setTime(trialTime);

     }

 

 

     public int getYear() {

-	return calendar.get(Calendar.YEAR);

+        return calendar.get(Calendar.YEAR);

     }

-    

+

     public String getMonth() {

-	int m = getMonthInt();

-	String[] months = new String [] { "January", "February", "March",

-					"April", "May", "June",

-					"July", "August", "September",

-					"October", "November", "December" };

-	if (m > 12)

-	    return "Unknown to Man";

-	

-	return months[m - 1];

+        int m = getMonthInt();

+        String[] months = new String [] { "January", "February", "March",

+                                        "April", "May", "June",

+                                        "July", "August", "September",

+                                        "October", "November", "December" };

+        if (m > 12)

+            return "Unknown to Man";

+

+        return months[m - 1];

 

     }

 

     public String getDay() {

-	int x = getDayOfWeek();

-	String[] days = new String[] {"Sunday", "Monday", "Tuesday", "Wednesday", 

-				      "Thursday", "Friday", "Saturday"};

+        int x = getDayOfWeek();

+        String[] days = new String[] {"Sunday", "Monday", "Tuesday", "Wednesday",

+                                      "Thursday", "Friday", "Saturday"};

 

-	if (x > 7)

-	    return "Unknown to Man";

+        if (x > 7)

+            return "Unknown to Man";

 

-	return days[x - 1];

+        return days[x - 1];

 

     }

-    

+

     public int getMonthInt() {

-	return 1 + calendar.get(Calendar.MONTH);

+        return 1 + calendar.get(Calendar.MONTH);

     }

 

     public String getDate() {

-	return getMonthInt() + "/" + getDayOfMonth() + "/" +  getYear();	

+        return getMonthInt() + "/" + getDayOfMonth() + "/" +  getYear();

     }

 

     public String getCurrentDate() {

         Date dt = new Date ();

-	calendar.setTime (dt);

-	return getMonthInt() + "/" + getDayOfMonth() + "/" +  getYear();

+        calendar.setTime (dt);

+        return getMonthInt() + "/" + getDayOfMonth() + "/" +  getYear();

 

     }

 

     public String getNextDate() {

         calendar.set (Calendar.DAY_OF_MONTH, getDayOfMonth() + 1);

-	return getDate ();

+        return getDate ();

     }

 

     public String getPrevDate() {

         calendar.set (Calendar.DAY_OF_MONTH, getDayOfMonth() - 1);

-	return getDate ();

+        return getDate ();

     }

 

     public String getTime() {

-	return getHour() + ":" + getMinute() + ":" + getSecond();

+        return getHour() + ":" + getMinute() + ":" + getSecond();

     }

 

     public int getDayOfMonth() {

-	return calendar.get(Calendar.DAY_OF_MONTH);

+        return calendar.get(Calendar.DAY_OF_MONTH);

     }

 

     public int getDayOfYear() {

-	return calendar.get(Calendar.DAY_OF_YEAR);

+        return calendar.get(Calendar.DAY_OF_YEAR);

     }

 

     public int getWeekOfYear() {

-	return calendar.get(Calendar.WEEK_OF_YEAR);

+        return calendar.get(Calendar.WEEK_OF_YEAR);

     }

 

     public int getWeekOfMonth() {

-	return calendar.get(Calendar.WEEK_OF_MONTH);

+        return calendar.get(Calendar.WEEK_OF_MONTH);

     }

 

     public int getDayOfWeek() {

-	return calendar.get(Calendar.DAY_OF_WEEK);

+        return calendar.get(Calendar.DAY_OF_WEEK);

     }

-     

+

     public int getHour() {

-	return calendar.get(Calendar.HOUR_OF_DAY);

+        return calendar.get(Calendar.HOUR_OF_DAY);

     }

-    

+

     public int getMinute() {

-	return calendar.get(Calendar.MINUTE);

+        return calendar.get(Calendar.MINUTE);

     }

 

 

     public int getSecond() {

-	return calendar.get(Calendar.SECOND);

+        return calendar.get(Calendar.SECOND);

     }

 

-  

+

     public int getEra() {

-	return calendar.get(Calendar.ERA);

+        return calendar.get(Calendar.ERA);

     }

 

     public String getUSTimeZone() {

-	String[] zones = new String[] {"Hawaii", "Alaskan", "Pacific",

-				       "Mountain", "Central", "Eastern"};

-	

-	return zones[10 + getZoneOffset()];

+        String[] zones = new String[] {"Hawaii", "Alaskan", "Pacific",

+                                       "Mountain", "Central", "Eastern"};

+

+        return zones[10 + getZoneOffset()];

     }

 

     public int getZoneOffset() {

-	return calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000);

+        return calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000);

     }

 

 

     public int getDSTOffset() {

-	return calendar.get(Calendar.DST_OFFSET)/(60*60*1000);

+        return calendar.get(Calendar.DST_OFFSET)/(60*60*1000);

     }

 

-    

+

     public int getAMPM() {

-	return calendar.get(Calendar.AM_PM);

+        return calendar.get(Calendar.AM_PM);

     }

 }

 

 

-

-

-

 </pre></body></html>

diff --git a/tomcat-uid/webapps/examples/jsp/cal/TableBean.java.html b/tomcat-uid/webapps/examples/jsp/cal/TableBean.java.html
index a81a66b..78c0e7f 100644
--- a/tomcat-uid/webapps/examples/jsp/cal/TableBean.java.html
+++ b/tomcat-uid/webapps/examples/jsp/cal/TableBean.java.html
@@ -1,102 +1,103 @@
 <html><body><pre>

 /*

-* 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.

-*/

+ * 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.

+ */

 package cal;

 

-import javax.servlet.http.*;

 import java.util.Hashtable;

 

+import javax.servlet.http.HttpServletRequest;

+

 public class TableBean {

 

-  Hashtable table;

-  JspCalendar JspCal;

-  Entries entries;

-  String date;

-  String name = null;

-  String email = null;

-  boolean processError = false;

+    Hashtable&lt;String, Entries> table;

+    JspCalendar JspCal;

+    Entries entries;

+    String date;

+    String name = null;

+    String email = null;

+    boolean processError = false;

 

-  public TableBean () {

-    this.table = new Hashtable (10);

-    this.JspCal = new JspCalendar ();

-    this.date = JspCal.getCurrentDate ();

-  }

-

-  public void setName (String nm) {

-    this.name = nm;

-  }

-

-  public String getName () {

-    return this.name;

-  }

-  

-  public void setEmail (String mail) {

-    this.email = mail;

-  }

-

-  public String getEmail () {

-    return this.email;

-  }

-

-  public String getDate () {

-    return this.date;

-  }

-

-  public Entries getEntries () {

-    return this.entries;

-  }

-

-  public void processRequest (HttpServletRequest request) {

-

-    // Get the name and e-mail.

-    this.processError = false;

-    if (name == null || name.equals("")) setName(request.getParameter ("name"));  

-    if (email == null || email.equals("")) setEmail(request.getParameter ("email"));

-    if (name == null || email == null ||

-		name.equals("") || email.equals("")) {

-      this.processError = true;

-      return;

+    public TableBean() {

+        this.table = new Hashtable&lt;String, Entries>(10);

+        this.JspCal = new JspCalendar();

+        this.date = JspCal.getCurrentDate();

     }

 

-    // Get the date.

-    String dateR = request.getParameter ("date");

-    if (dateR == null) date = JspCal.getCurrentDate ();

-    else if (dateR.equalsIgnoreCase("next")) date = JspCal.getNextDate ();

-    else if (dateR.equalsIgnoreCase("prev")) date = JspCal.getPrevDate ();

-

-    entries = (Entries) table.get (date);

-    if (entries == null) {

-      entries = new Entries ();

-      table.put (date, entries);

+    public void setName(String nm) {

+        this.name = nm;

     }

 

-    // If time is provided add the event.

-	String time = request.getParameter("time");

-    if (time != null) entries.processRequest (request, time);

-  }

+    public String getName() {

+        return this.name;

+    }

 

-  public boolean getProcessError () {

-    return this.processError;

-  }

+    public void setEmail(String mail) {

+        this.email = mail;

+    }

+

+    public String getEmail() {

+        return this.email;

+    }

+

+    public String getDate() {

+        return this.date;

+    }

+

+    public Entries getEntries() {

+        return this.entries;

+    }

+

+    public void processRequest(HttpServletRequest request) {

+

+        // Get the name and e-mail.

+        this.processError = false;

+        if (name == null || name.equals(""))

+            setName(request.getParameter("name"));

+        if (email == null || email.equals(""))

+            setEmail(request.getParameter("email"));

+        if (name == null || email == null || name.equals("")

+                || email.equals("")) {

+            this.processError = true;

+            return;

+        }

+

+        // Get the date.

+        String dateR = request.getParameter("date");

+        if (dateR == null)

+            date = JspCal.getCurrentDate();

+        else if (dateR.equalsIgnoreCase("next"))

+            date = JspCal.getNextDate();

+        else if (dateR.equalsIgnoreCase("prev"))

+            date = JspCal.getPrevDate();

+

+        entries = table.get(date);

+        if (entries == null) {

+            entries = new Entries();

+            table.put(date, entries);

+        }

+

+        // If time is provided add the event.

+        String time = request.getParameter("time");

+        if (time != null)

+            entries.processRequest(request, time);

+    }

+

+    public boolean getProcessError() {

+        return this.processError;

+    }

 }

-

-

-

-

-

-

 </pre></body></html>

diff --git a/tomcat-uid/webapps/examples/jsp/cal/cal1.jsp b/tomcat-uid/webapps/examples/jsp/cal/cal1.jsp
index a691df4..db78a03 100644
--- a/tomcat-uid/webapps/examples/jsp/cal/cal1.jsp
+++ b/tomcat-uid/webapps/examples/jsp/cal/cal1.jsp
@@ -1,5 +1,4 @@
-<HTML>

-<!--

+<%--

  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.

@@ -14,9 +13,10 @@
   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.

--->

-<HEAD><TITLE> 

-	Calendar: A JSP APPLICATION

+--%>

+<HTML>

+<HEAD><TITLE>

+    Calendar: A JSP APPLICATION

 </TITLE></HEAD>

 

 

@@ -26,8 +26,8 @@
 <jsp:useBean id="table" scope="session" class="cal.TableBean" />

 

 <%

-	table.processRequest(request);

-	if (table.getProcessError() == false) {

+    table.processRequest(request);

+    if (table.getProcessError() == false) {

 %>

 

 <!-- html table goes here -->

@@ -48,20 +48,20 @@
 </TR>

 <FORM METHOD=POST ACTION=cal1.jsp>

 <%

-	for(int i=0; i<table.getEntries().getRows(); i++) {

-	   cal.Entry entr = table.getEntries().getEntry(i);	

+    for(int i=0; i<table.getEntries().getRows(); i++) {

+       cal.Entry entr = table.getEntries().getEntry(i);

 %>

-	<TR>

-	<TD> 

-	<A HREF=cal2.jsp?time=<%= entr.getHour() %>>

-		<%= entr.getHour() %> </A>

-	</TD>

-	<TD BGCOLOR=<%= entr.getColor() %>>

-	<% out.print(util.HTMLFilter.filter(entr.getDescription())); %>

-	</TD> 

-	</TR>

+    <TR>

+    <TD>

+    <A HREF=cal2.jsp?time=<%= entr.getHour() %>>

+        <%= entr.getHour() %> </A>

+    </TD>

+    <TD BGCOLOR=<%= entr.getColor() %>>

+    <% out.print(util.HTMLFilter.filter(entr.getDescription())); %>

+    </TD>

+    </TR>

 <%

-	}

+    }

 %>

 </FORM>

 </TABLE>

@@ -70,20 +70,20 @@
 <!-- footer -->

 <TABLE WIDTH=60% BGCOLOR=yellow CELLPADDING=15>

 <TR>

-<TD ALIGN=CENTER>  <% out.print(util.HTMLFilter.filter(table.getName())); %> : 

-		     <% out.print(util.HTMLFilter.filter(table.getEmail())); %> </TD>

+<TD ALIGN=CENTER>  <% out.print(util.HTMLFilter.filter(table.getName())); %> :

+             <% out.print(util.HTMLFilter.filter(table.getEmail())); %> </TD>

 </TR>

 </TABLE>

 </CENTER>

 

 <%

-	} else {

+    } else {

 %>

 <font size=5>

-	You must enter your name and email address correctly.

+    You must enter your name and email address correctly.

 </font>

 <%

-	}

+    }

 %>

 

 

@@ -91,5 +91,3 @@
 </HTML>

 

 

-

-

diff --git a/tomcat-uid/webapps/examples/jsp/cal/cal1.jsp.html b/tomcat-uid/webapps/examples/jsp/cal/cal1.jsp.html
index f9c3689..e83627c 100644
--- a/tomcat-uid/webapps/examples/jsp/cal/cal1.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/cal/cal1.jsp.html
@@ -1,6 +1,5 @@
 <html><body><pre>

-&lt;HTML>

-&lt;!--

+&lt;%--

  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.

@@ -15,9 +14,10 @@
   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.

--->

-&lt;HEAD>&lt;TITLE> 

-	Calendar: A JSP APPLICATION

+--%>

+&lt;HTML>

+&lt;HEAD>&lt;TITLE>

+    Calendar: A JSP APPLICATION

 &lt;/TITLE>&lt;/HEAD>

 

 

@@ -27,8 +27,8 @@
 &lt;jsp:useBean id="table" scope="session" class="cal.TableBean" />

 

 &lt;%

-	table.processRequest(request);

-	if (table.getProcessError() == false) {

+    table.processRequest(request);

+    if (table.getProcessError() == false) {

 %>

 

 &lt;!-- html table goes here -->

@@ -49,20 +49,20 @@
 &lt;/TR>

 &lt;FORM METHOD=POST ACTION=cal1.jsp>

 &lt;%

-	for(int i=0; i&lt;table.getEntries().getRows(); i++) {

-	   cal.Entry entr = table.getEntries().getEntry(i);	

+    for(int i=0; i&lt;table.getEntries().getRows(); i++) {

+       cal.Entry entr = table.getEntries().getEntry(i);

 %>

-	&lt;TR>

-	&lt;TD> 

-	&lt;A HREF=cal2.jsp?time=&lt;%= entr.getHour() %>>

-		&lt;%= entr.getHour() %> &lt;/A>

-	&lt;/TD>

-	&lt;TD BGCOLOR=&lt;%= entr.getColor() %>>

-	&lt;% out.print(util.HTMLFilter.filter(entr.getDescription())); %>

-	&lt;/TD> 

-	&lt;/TR>

+    &lt;TR>

+    &lt;TD>

+    &lt;A HREF=cal2.jsp?time=&lt;%= entr.getHour() %>>

+        &lt;%= entr.getHour() %> &lt;/A>

+    &lt;/TD>

+    &lt;TD BGCOLOR=&lt;%= entr.getColor() %>>

+    &lt;% out.print(util.HTMLFilter.filter(entr.getDescription())); %>

+    &lt;/TD>

+    &lt;/TR>

 &lt;%

-	}

+    }

 %>

 &lt;/FORM>

 &lt;/TABLE>

@@ -71,20 +71,20 @@
 &lt;!-- footer -->

 &lt;TABLE WIDTH=60% BGCOLOR=yellow CELLPADDING=15>

 &lt;TR>

-&lt;TD ALIGN=CENTER>  &lt;% out.print(util.HTMLFilter.filter(table.getName())); %> : 

-		     &lt;% out.print(util.HTMLFilter.filter(table.getEmail())); %> &lt;/TD>

+&lt;TD ALIGN=CENTER>  &lt;% out.print(util.HTMLFilter.filter(table.getName())); %> :

+             &lt;% out.print(util.HTMLFilter.filter(table.getEmail())); %> &lt;/TD>

 &lt;/TR>

 &lt;/TABLE>

 &lt;/CENTER>

 

 &lt;%

-	} else {

+    } else {

 %>

 &lt;font size=5>

-	You must enter your name and email address correctly.

+    You must enter your name and email address correctly.

 &lt;/font>

 &lt;%

-	}

+    }

 %>

 

 

@@ -92,6 +92,4 @@
 &lt;/HTML>

 

 

-

-

 </pre></body></html>

diff --git a/tomcat-uid/webapps/examples/jsp/cal/cal2.jsp b/tomcat-uid/webapps/examples/jsp/cal/cal2.jsp
index b6d435b..b508870 100644
--- a/tomcat-uid/webapps/examples/jsp/cal/cal2.jsp
+++ b/tomcat-uid/webapps/examples/jsp/cal/cal2.jsp
@@ -1,5 +1,4 @@
-<HTML>

-<!--

+<%--

  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.

@@ -14,18 +13,18 @@
   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.

--->

-

-<HEAD><TITLE> 

-	Calendar: A JSP APPLICATION

+--%>

+<HTML>

+<HEAD><TITLE>

+    Calendar: A JSP APPLICATION

 </TITLE></HEAD>

 

 

 <BODY BGCOLOR="white">

 <jsp:useBean id="table" scope="session" class="cal.TableBean" />

 

-<% 

-	String time = request.getParameter ("time");

+<%

+    String time = request.getParameter ("time");

 %>

 

 <FONT SIZE=5> Please add the following event:

@@ -33,7 +32,7 @@
 <BR> Time <%= util.HTMLFilter.filter(time) %> </h3>

 </FONT>

 <FORM METHOD=POST ACTION=cal1.jsp>

-<BR> 

+<BR>

 <BR> <INPUT NAME="date" TYPE=HIDDEN VALUE="current">

 <BR> <INPUT NAME="time" TYPE=HIDDEN VALUE="<%= util.HTMLFilter.filter(time) %>">

 <BR> <h2> Description of the event <INPUT NAME="description" TYPE=TEXT SIZE=20> </h2>

diff --git a/tomcat-uid/webapps/examples/jsp/cal/cal2.jsp.html b/tomcat-uid/webapps/examples/jsp/cal/cal2.jsp.html
index 2548ce7..270c8b0 100644
--- a/tomcat-uid/webapps/examples/jsp/cal/cal2.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/cal/cal2.jsp.html
@@ -1,6 +1,5 @@
 <html><body><pre>

-&lt;HTML>

-&lt;!--

+&lt;%--

  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.

@@ -15,18 +14,18 @@
   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.

--->

-

-&lt;HEAD>&lt;TITLE> 

-	Calendar: A JSP APPLICATION

+--%>

+&lt;HTML>

+&lt;HEAD>&lt;TITLE>

+    Calendar: A JSP APPLICATION

 &lt;/TITLE>&lt;/HEAD>

 

 

 &lt;BODY BGCOLOR="white">

 &lt;jsp:useBean id="table" scope="session" class="cal.TableBean" />

 

-&lt;% 

-	String time = request.getParameter ("time");

+&lt;%

+    String time = request.getParameter ("time");

 %>

 

 &lt;FONT SIZE=5> Please add the following event:

@@ -34,7 +33,7 @@
 &lt;BR> Time &lt;%= util.HTMLFilter.filter(time) %> &lt;/h3>

 &lt;/FONT>

 &lt;FORM METHOD=POST ACTION=cal1.jsp>

-&lt;BR> 

+&lt;BR>

 &lt;BR> &lt;INPUT NAME="date" TYPE=HIDDEN VALUE="current">

 &lt;BR> &lt;INPUT NAME="time" TYPE=HIDDEN VALUE="&lt;%= util.HTMLFilter.filter(time) %>">

 &lt;BR> &lt;h2> Description of the event &lt;INPUT NAME="description" TYPE=TEXT SIZE=20> &lt;/h2>

diff --git a/tomcat-uid/webapps/examples/jsp/cal/login.html b/tomcat-uid/webapps/examples/jsp/cal/login.html
index 398b39b..b1105d5 100644
--- a/tomcat-uid/webapps/examples/jsp/cal/login.html
+++ b/tomcat-uid/webapps/examples/jsp/cal/login.html
@@ -17,30 +17,30 @@
 -->

 

 <head>

-	<title> Login page for the calendar. </title>

+    <title> Login page for the calendar. </title>

 </head>

 

 <body bgcolor="white">

 <center>

 

-	<font size=7 color="red"> Please Enter the following information: </font>

+    <font size=7 color="red"> Please Enter the following information: </font>

 

 <br>

-	<form method=GET action=cal1.jsp>

+    <form method=GET action=cal1.jsp>

 

-		<font size=5> Name <input type=text name="name" size=20>

-		</font>

-		<br>

-		<font size=5> Email <input type=text name="email" size=20>

-		</font>

-		<br>

-		<input type=submit name=action value="Submit">

+        <font size=5> Name <input type=text name="name" size=20>

+        </font>

+        <br>

+        <font size=5> Email <input type=text name="email" size=20>

+        </font>

+        <br>

+        <input type=submit name=action value="Submit">

 

-	</form>

+    </form>

 <hr>

-<font size=3 color="red"> Note: This application does not implement the complete 

-functionality of a typical calendar application. It demonstrates a way JSP can be 

-used with html tables and forms.</font>

+<font size=3 color="red"> Note: This application does not implement the complete

+functionality of a typical calendar application. It demonstrates a way JSP can

+be used with html tables and forms.</font>

 

 </center>

 </body>

diff --git a/tomcat-uid/webapps/examples/jsp/checkbox/checkresult.jsp b/tomcat-uid/webapps/examples/jsp/checkbox/checkresult.jsp
index db87ca1..5df7b66 100644
--- a/tomcat-uid/webapps/examples/jsp/checkbox/checkresult.jsp
+++ b/tomcat-uid/webapps/examples/jsp/checkbox/checkresult.jsp
@@ -1,5 +1,4 @@
-<html>

-<!--

+<%--

  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.

@@ -14,8 +13,8 @@
   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.

--->

-

+--%>

+<html>

 <body bgcolor="white">

 <font size=5 color="red">

 <%! String[] fruits; %>

@@ -24,19 +23,19 @@
 <jsp:setProperty name="foo" property="fruit" param="fruit" />

 <hr>

 The checked fruits (got using request) are: <br>

-<% 

-	fruits = request.getParameterValues("fruit");

+<%

+    fruits = request.getParameterValues("fruit");

 %>

 <ul>

 <%

     if (fruits != null) {

-	  for (int i = 0; i < fruits.length; i++) {

+      for (int i = 0; i < fruits.length; i++) {

 %>

 <li>

 <%

-	      out.println (util.HTMLFilter.filter(fruits[i]));

-	  }

-	} else out.println ("none selected");

+          out.println (util.HTMLFilter.filter(fruits[i]));

+      }

+    } else out.println ("none selected");

 %>

 </ul>

 <br>

@@ -44,19 +43,19 @@
 

 The checked fruits (got using beans) are <br>

 

-<% 

-		fruits = foo.getFruit();

+<%

+        fruits = foo.getFruit();

 %>

 <ul>

 <%

     if (!fruits[0].equals("1")) {

-	  for (int i = 0; i < fruits.length; i++) {

+      for (int i = 0; i < fruits.length; i++) {

 %>

 <li>

 <%

-		  out.println (util.HTMLFilter.filter(fruits[i]));

-	  }

-	} else out.println ("none selected");

+          out.println (util.HTMLFilter.filter(fruits[i]));

+      }

+    } else out.println ("none selected");

 %>

 </ul>

 </font>

diff --git a/tomcat-uid/webapps/examples/jsp/checkbox/checkresult.jsp.html b/tomcat-uid/webapps/examples/jsp/checkbox/checkresult.jsp.html
index d5442d1..5daab63 100644
--- a/tomcat-uid/webapps/examples/jsp/checkbox/checkresult.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/checkbox/checkresult.jsp.html
@@ -1,6 +1,5 @@
 <html><body><pre>

-&lt;html>

-&lt;!--

+&lt;%--

  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.

@@ -15,8 +14,8 @@
   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.

--->

-

+--%>

+&lt;html>

 &lt;body bgcolor="white">

 &lt;font size=5 color="red">

 &lt;%! String[] fruits; %>

@@ -25,19 +24,19 @@
 &lt;jsp:setProperty name="foo" property="fruit" param="fruit" />

 &lt;hr>

 The checked fruits (got using request) are: &lt;br>

-&lt;% 

-	fruits = request.getParameterValues("fruit");

+&lt;%

+    fruits = request.getParameterValues("fruit");

 %>

 &lt;ul>

 &lt;%

     if (fruits != null) {

-	  for (int i = 0; i &lt; fruits.length; i++) {

+      for (int i = 0; i &lt; fruits.length; i++) {

 %>

 &lt;li>

 &lt;%

-	      out.println (util.HTMLFilter.filter(fruits[i]));

-	  }

-	} else out.println ("none selected");

+          out.println (util.HTMLFilter.filter(fruits[i]));

+      }

+    } else out.println ("none selected");

 %>

 &lt;/ul>

 &lt;br>

@@ -45,19 +44,19 @@
 

 The checked fruits (got using beans) are &lt;br>

 

-&lt;% 

-		fruits = foo.getFruit();

+&lt;%

+        fruits = foo.getFruit();

 %>

 &lt;ul>

 &lt;%

     if (!fruits[0].equals("1")) {

-	  for (int i = 0; i &lt; fruits.length; i++) {

+      for (int i = 0; i &lt; fruits.length; i++) {

 %>

 &lt;li>

 &lt;%

-		  out.println (util.HTMLFilter.filter(fruits[i]));

-	  }

-	} else out.println ("none selected");

+          out.println (util.HTMLFilter.filter(fruits[i]));

+      }

+    } else out.println ("none selected");

 %>

 &lt;/ul>

 &lt;/font>

diff --git a/tomcat-uid/webapps/examples/jsp/colors/colors.html b/tomcat-uid/webapps/examples/jsp/colors/colors.html
index 086738d..76ec2b9 100644
--- a/tomcat-uid/webapps/examples/jsp/colors/colors.html
+++ b/tomcat-uid/webapps/examples/jsp/colors/colors.html
@@ -20,16 +20,16 @@
 <font size=6 color=red>

 

 <hr>

-This web page is an example using JSP and BEANs. 

+This web page is an example using JSP and BEANs.

 <p>

-Guess my favorite two colors 

+Guess my favorite two colors

 

 <p> If you fail to guess both of them - you get yellow on red.

 

-<p> If you guess one of them right, either your foreground or 

+<p> If you guess one of them right, either your foreground or

     your background will change to the color that was guessed right.

 

-<p> Guess them both right and your browser foreground/background 

+<p> Guess them both right and your browser foreground/background

     will change to my two favorite colors to display this page.

 

 <hr>

diff --git a/tomcat-uid/webapps/examples/jsp/colors/colrs.jsp b/tomcat-uid/webapps/examples/jsp/colors/colrs.jsp
index e433bbd..90e1afe 100644
--- a/tomcat-uid/webapps/examples/jsp/colors/colrs.jsp
+++ b/tomcat-uid/webapps/examples/jsp/colors/colrs.jsp
@@ -1,5 +1,4 @@
-<html>

-<!--

+<%--

  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.

@@ -14,13 +13,14 @@
   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.

--->

+--%>

+<html>

 

 <jsp:useBean id="cb" scope="session" class="colors.ColorGameBean" />

 <jsp:setProperty name="cb" property="*" />

 

 <%

-	cb.processRequest(request);

+    cb.processRequest();

 %>

 

 <body bgcolor=<%= cb.getColor1() %>>

@@ -28,20 +28,20 @@
 <p>

 

 <% if (cb.getHint()==true) { %>

-	

-	<p> Hint #1: Vampires prey at night!

-	<p>  <p> Hint #2: Nancy without the n.

+

+    <p> Hint #1: Vampires prey at night!

+    <p>  <p> Hint #2: Nancy without the n.

 

 <% } %>

 

 <% if  (cb.getSuccess()==true) { %>

 

     <p> CONGRATULATIONS!!

-	<% if  (cb.getHintTaken()==true) { %>

-    

+    <% if  (cb.getHintTaken()==true) { %>

+

         <p> ( although I know you cheated and peeked into the hints)

 

-	<% } %>

+    <% } %>

 

 <% } %>

 

diff --git a/tomcat-uid/webapps/examples/jsp/colors/colrs.jsp.html b/tomcat-uid/webapps/examples/jsp/colors/colrs.jsp.html
index 41af88b..fda1bd7 100644
--- a/tomcat-uid/webapps/examples/jsp/colors/colrs.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/colors/colrs.jsp.html
@@ -1,6 +1,5 @@
 <html><body><pre>

-&lt;html>

-&lt;!--

+&lt;%--

  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.

@@ -15,13 +14,14 @@
   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.

--->

+--%>

+&lt;html>

 

 &lt;jsp:useBean id="cb" scope="session" class="colors.ColorGameBean" />

 &lt;jsp:setProperty name="cb" property="*" />

 

 &lt;%

-	cb.processRequest(request);

+    cb.processRequest();

 %>

 

 &lt;body bgcolor=&lt;%= cb.getColor1() %>>

@@ -29,20 +29,20 @@
 &lt;p>

 

 &lt;% if (cb.getHint()==true) { %>

-	

-	&lt;p> Hint #1: Vampires prey at night!

-	&lt;p>  &lt;p> Hint #2: Nancy without the n.

+

+    &lt;p> Hint #1: Vampires prey at night!

+    &lt;p>  &lt;p> Hint #2: Nancy without the n.

 

 &lt;% } %>

 

 &lt;% if  (cb.getSuccess()==true) { %>

 

     &lt;p> CONGRATULATIONS!!

-	&lt;% if  (cb.getHintTaken()==true) { %>

-    

+    &lt;% if  (cb.getHintTaken()==true) { %>

+

         &lt;p> ( although I know you cheated and peeked into the hints)

 

-	&lt;% } %>

+    &lt;% } %>

 

 &lt;% } %>

 

diff --git a/tomcat-uid/webapps/examples/jsp/dates/date.jsp b/tomcat-uid/webapps/examples/jsp/dates/date.jsp
index 9c40d78..7f47dc9 100644
--- a/tomcat-uid/webapps/examples/jsp/dates/date.jsp
+++ b/tomcat-uid/webapps/examples/jsp/dates/date.jsp
@@ -1,5 +1,4 @@
-<html>

-<!--

+<%--

  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.

@@ -14,7 +13,8 @@
   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.

--->

+--%>

+<html>

 

 <%@ page session="false"%>

 

@@ -23,17 +23,17 @@
 

 <font size=4>

 <ul>

-<li>	Day of month: is  <jsp:getProperty name="clock" property="dayOfMonth"/>

-<li>	Year: is  <jsp:getProperty name="clock" property="year"/>

-<li>	Month: is  <jsp:getProperty name="clock" property="month"/>

-<li>	Time: is  <jsp:getProperty name="clock" property="time"/>

-<li>	Date: is  <jsp:getProperty name="clock" property="date"/>

-<li>	Day: is  <jsp:getProperty name="clock" property="day"/>

-<li>	Day Of Year: is  <jsp:getProperty name="clock" property="dayOfYear"/>

-<li>	Week Of Year: is  <jsp:getProperty name="clock" property="weekOfYear"/>

-<li>	era: is  <jsp:getProperty name="clock" property="era"/>

-<li>	DST Offset: is  <jsp:getProperty name="clock" property="DSTOffset"/>

-<li>	Zone Offset: is  <jsp:getProperty name="clock" property="zoneOffset"/>

+<li>    Day of month: is  <jsp:getProperty name="clock" property="dayOfMonth"/>

+<li>    Year: is  <jsp:getProperty name="clock" property="year"/>

+<li>    Month: is  <jsp:getProperty name="clock" property="month"/>

+<li>    Time: is  <jsp:getProperty name="clock" property="time"/>

+<li>    Date: is  <jsp:getProperty name="clock" property="date"/>

+<li>    Day: is  <jsp:getProperty name="clock" property="day"/>

+<li>    Day Of Year: is  <jsp:getProperty name="clock" property="dayOfYear"/>

+<li>    Week Of Year: is  <jsp:getProperty name="clock" property="weekOfYear"/>

+<li>    era: is  <jsp:getProperty name="clock" property="era"/>

+<li>    DST Offset: is  <jsp:getProperty name="clock" property="DSTOffset"/>

+<li>    Zone Offset: is  <jsp:getProperty name="clock" property="zoneOffset"/>

 </ul>

 </font>

 

diff --git a/tomcat-uid/webapps/examples/jsp/dates/date.jsp.html b/tomcat-uid/webapps/examples/jsp/dates/date.jsp.html
index 4a8f1e9..c7eb8d5 100644
--- a/tomcat-uid/webapps/examples/jsp/dates/date.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/dates/date.jsp.html
@@ -1,6 +1,5 @@
 <html><body><pre>

-&lt;html>

-&lt;!--

+&lt;%--

  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.

@@ -15,7 +14,8 @@
   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.

--->

+--%>

+&lt;html>

 

 &lt;%@ page session="false"%>

 

@@ -24,17 +24,17 @@
 

 &lt;font size=4>

 &lt;ul>

-&lt;li>	Day of month: is  &lt;jsp:getProperty name="clock" property="dayOfMonth"/>

-&lt;li>	Year: is  &lt;jsp:getProperty name="clock" property="year"/>

-&lt;li>	Month: is  &lt;jsp:getProperty name="clock" property="month"/>

-&lt;li>	Time: is  &lt;jsp:getProperty name="clock" property="time"/>

-&lt;li>	Date: is  &lt;jsp:getProperty name="clock" property="date"/>

-&lt;li>	Day: is  &lt;jsp:getProperty name="clock" property="day"/>

-&lt;li>	Day Of Year: is  &lt;jsp:getProperty name="clock" property="dayOfYear"/>

-&lt;li>	Week Of Year: is  &lt;jsp:getProperty name="clock" property="weekOfYear"/>

-&lt;li>	era: is  &lt;jsp:getProperty name="clock" property="era"/>

-&lt;li>	DST Offset: is  &lt;jsp:getProperty name="clock" property="DSTOffset"/>

-&lt;li>	Zone Offset: is  &lt;jsp:getProperty name="clock" property="zoneOffset"/>

+&lt;li>    Day of month: is  &lt;jsp:getProperty name="clock" property="dayOfMonth"/>

+&lt;li>    Year: is  &lt;jsp:getProperty name="clock" property="year"/>

+&lt;li>    Month: is  &lt;jsp:getProperty name="clock" property="month"/>

+&lt;li>    Time: is  &lt;jsp:getProperty name="clock" property="time"/>

+&lt;li>    Date: is  &lt;jsp:getProperty name="clock" property="date"/>

+&lt;li>    Day: is  &lt;jsp:getProperty name="clock" property="day"/>

+&lt;li>    Day Of Year: is  &lt;jsp:getProperty name="clock" property="dayOfYear"/>

+&lt;li>    Week Of Year: is  &lt;jsp:getProperty name="clock" property="weekOfYear"/>

+&lt;li>    era: is  &lt;jsp:getProperty name="clock" property="era"/>

+&lt;li>    DST Offset: is  &lt;jsp:getProperty name="clock" property="DSTOffset"/>

+&lt;li>    Zone Offset: is  &lt;jsp:getProperty name="clock" property="zoneOffset"/>

 &lt;/ul>

 &lt;/font>

 

diff --git a/tomcat-uid/webapps/examples/jsp/error/err.jsp b/tomcat-uid/webapps/examples/jsp/error/err.jsp
index 08030b0..956da8e 100644
--- a/tomcat-uid/webapps/examples/jsp/error/err.jsp
+++ b/tomcat-uid/webapps/examples/jsp/error/err.jsp
@@ -1,5 +1,4 @@
-<html>

-<!--

+<%--

  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.

@@ -14,31 +13,32 @@
   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.

--->

+--%>

+<html>

 <body bgcolor="lightblue">

 

-	<%@ page errorPage="errorpge.jsp" %>

-	<jsp:useBean id="foo" scope="request" class="error.Smart" />

-	<% 

-		String name = null;

+    <%@ page errorPage="errorpge.jsp" %>

+    <jsp:useBean id="foo" scope="request" class="error.Smart" />

+    <%

+        String name = null;

 

-		if (request.getParameter("name") == null) {

-	%>

-	<%@ include file="error.html" %>

-	<%

-		} else {

-		  foo.setName(request.getParameter("name"));

-		  if (foo.getName().equalsIgnoreCase("integra"))

-		  	name = "acura";

-		  if (name.equalsIgnoreCase("acura")) {

-	%>

+        if (request.getParameter("name") == null) {

+    %>

+    <%@ include file="error.html" %>

+    <%

+        } else {

+          foo.setName(request.getParameter("name"));

+          if (foo.getName().equalsIgnoreCase("integra"))

+              name = "acura";

+          if (name.equalsIgnoreCase("acura")) {

+    %>

 

-	<H1> Yes!!! <a href="http://www.acura.com">Acura</a> is my favorite car.

+    <H1> Yes!!! <a href="http://www.acura.com">Acura</a> is my favorite car.

 

-	<% 

-		  }

-		}	

-	%>	

+    <%

+          }

+        }

+    %>

 </body>

 </html>

 

diff --git a/tomcat-uid/webapps/examples/jsp/error/err.jsp.html b/tomcat-uid/webapps/examples/jsp/error/err.jsp.html
index 65b5654..8f0727d 100644
--- a/tomcat-uid/webapps/examples/jsp/error/err.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/error/err.jsp.html
@@ -1,6 +1,5 @@
 <html><body><pre>

-&lt;html>

-&lt;!--

+&lt;%--

  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.

@@ -15,31 +14,32 @@
   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.

--->

+--%>

+&lt;html>

 &lt;body bgcolor="lightblue">

 

-	&lt;%@ page errorPage="errorpge.jsp" %>

-	&lt;jsp:useBean id="foo" scope="request" class="error.Smart" />

-	&lt;% 

-		String name = null;

+    &lt;%@ page errorPage="errorpge.jsp" %>

+    &lt;jsp:useBean id="foo" scope="request" class="error.Smart" />

+    &lt;%

+        String name = null;

 

-		if (request.getParameter("name") == null) {

-	%>

-	&lt;%@ include file="error.html" %>

-	&lt;%

-		} else {

-		  foo.setName(request.getParameter("name"));

-		  if (foo.getName().equalsIgnoreCase("integra"))

-		  	name = "acura";

-		  if (name.equalsIgnoreCase("acura")) {

-	%>

+        if (request.getParameter("name") == null) {

+    %>

+    &lt;%@ include file="error.html" %>

+    &lt;%

+        } else {

+          foo.setName(request.getParameter("name"));

+          if (foo.getName().equalsIgnoreCase("integra"))

+              name = "acura";

+          if (name.equalsIgnoreCase("acura")) {

+    %>

 

-	&lt;H1> Yes!!! &lt;a href="http://www.acura.com">Acura&lt;/a> is my favorite car.

+    &lt;H1> Yes!!! &lt;a href="http://www.acura.com">Acura&lt;/a> is my favorite car.

 

-	&lt;% 

-		  }

-		}	

-	%>	

+    &lt;%

+          }

+        }

+    %>

 &lt;/body>

 &lt;/html>

 

diff --git a/tomcat-uid/webapps/examples/jsp/error/errorpge.jsp b/tomcat-uid/webapps/examples/jsp/error/errorpge.jsp
index 113c204..dda6fbd 100644
--- a/tomcat-uid/webapps/examples/jsp/error/errorpge.jsp
+++ b/tomcat-uid/webapps/examples/jsp/error/errorpge.jsp
@@ -1,5 +1,4 @@
-<html>

-<!--

+<%--

  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.

@@ -14,12 +13,13 @@
   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.

--->

+--%>

+<html>

 

 <body bgcolor="red">

 

-	<%@ page isErrorPage="true" %>

-	<h1> The exception <%= exception.getMessage() %> tells me you

-	     made a wrong choice. 

+    <%@ page isErrorPage="true" %>

+    <h1> The exception <%= exception.getMessage() %> tells me you

+         made a wrong choice.

 </body>

 </html>

diff --git a/tomcat-uid/webapps/examples/jsp/error/errorpge.jsp.html b/tomcat-uid/webapps/examples/jsp/error/errorpge.jsp.html
index 69bf244..cfb6fcf 100644
--- a/tomcat-uid/webapps/examples/jsp/error/errorpge.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/error/errorpge.jsp.html
@@ -1,6 +1,5 @@
 <html><body><pre>

-&lt;html>

-&lt;!--

+&lt;%--

  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.

@@ -15,13 +14,14 @@
   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.

--->

+--%>

+&lt;html>

 

 &lt;body bgcolor="red">

 

-	&lt;%@ page isErrorPage="true" %>

-	&lt;h1> The exception &lt;%= exception.getMessage() %> tells me you

-	     made a wrong choice. 

+    &lt;%@ page isErrorPage="true" %>

+    &lt;h1> The exception &lt;%= exception.getMessage() %> tells me you

+         made a wrong choice.

 &lt;/body>

 &lt;/html>

 </pre></body></html>

diff --git a/tomcat-uid/webapps/examples/jsp/forward/forward.jsp b/tomcat-uid/webapps/examples/jsp/forward/forward.jsp
index 8e2ceab..4ee56a2 100644
--- a/tomcat-uid/webapps/examples/jsp/forward/forward.jsp
+++ b/tomcat-uid/webapps/examples/jsp/forward/forward.jsp
@@ -1,5 +1,4 @@
-<html>

-<!--

+<%--

  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.

@@ -14,13 +13,13 @@
   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.

--->

-

-<% 

+--%>

+<html>

+<%

    double freeMem = Runtime.getRuntime().freeMemory();

    double totlMem = Runtime.getRuntime().totalMemory();

    double percent = freeMem/totlMem;

-   if (percent < 0.5) { 

+   if (percent < 0.5) {

 %>

 

 <jsp:forward page="one.jsp"/>

diff --git a/tomcat-uid/webapps/examples/jsp/forward/forward.jsp.html b/tomcat-uid/webapps/examples/jsp/forward/forward.jsp.html
index 9f0a563..904ea8a 100644
--- a/tomcat-uid/webapps/examples/jsp/forward/forward.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/forward/forward.jsp.html
@@ -1,6 +1,5 @@
 <html><body><pre>

-&lt;html>

-&lt;!--

+&lt;%--

  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.

@@ -15,13 +14,13 @@
   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.

--->

-

-&lt;% 

+--%>

+&lt;html>

+&lt;%

    double freeMem = Runtime.getRuntime().freeMemory();

    double totlMem = Runtime.getRuntime().totalMemory();

    double percent = freeMem/totlMem;

-   if (percent &lt; 0.5) { 

+   if (percent &lt; 0.5) {

 %>

 

 &lt;jsp:forward page="one.jsp"/>

diff --git a/tomcat-uid/webapps/examples/jsp/forward/one.jsp b/tomcat-uid/webapps/examples/jsp/forward/one.jsp
index 90297b7..41cb8b8 100644
--- a/tomcat-uid/webapps/examples/jsp/forward/one.jsp
+++ b/tomcat-uid/webapps/examples/jsp/forward/one.jsp
@@ -1,5 +1,4 @@
-<html>

-<!--

+<%--

  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.

@@ -14,10 +13,11 @@
   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.

--->

+--%>

+<html>

 

 <body bgcolor="white">

 <font color="red">

 

-VM Memory usage < 50%.

+VM Memory usage &lt; 50%.

 </html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/examples/jsp/forward/one.jsp.html b/tomcat-uid/webapps/examples/jsp/forward/one.jsp.html
index 7cb77a0..2d6d4e4 100644
--- a/tomcat-uid/webapps/examples/jsp/forward/one.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/forward/one.jsp.html
@@ -1,6 +1,5 @@
 <html><body><pre>

-&lt;html>

-&lt;!--

+&lt;%--

  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.

@@ -15,11 +14,12 @@
   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.

--->

+--%>

+&lt;html>

 

 &lt;body bgcolor="white">

 &lt;font color="red">

 

-VM Memory usage &lt; 50%.

+VM Memory usage &amp;lt; 50%.

 &lt;/html>

 </pre></body></html>

diff --git a/tomcat-uid/webapps/examples/jsp/forward/two.html b/tomcat-uid/webapps/examples/jsp/forward/two.html
index 4bc9402..b6ea4f9 100644
--- a/tomcat-uid/webapps/examples/jsp/forward/two.html
+++ b/tomcat-uid/webapps/examples/jsp/forward/two.html
@@ -19,5 +19,5 @@
 <body bgcolor="white">

 <font color="red">

 

-VM Memory usage > 50%.

+VM Memory usage &gt; 50%.

 </html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/examples/jsp/include/foo.jsp b/tomcat-uid/webapps/examples/jsp/include/foo.jsp
index ce4101b..f909fa3 100644
--- a/tomcat-uid/webapps/examples/jsp/include/foo.jsp
+++ b/tomcat-uid/webapps/examples/jsp/include/foo.jsp
@@ -1,4 +1,4 @@
-<!--

+<%--

  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.

@@ -13,9 +13,5 @@
   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.

--->

 

-<body bgcolor="white">

-<font color="red">

-

-<%= System.currentTimeMillis() %>

+--%><%= System.currentTimeMillis() %>

diff --git a/tomcat-uid/webapps/examples/jsp/include/foo.jsp.html b/tomcat-uid/webapps/examples/jsp/include/foo.jsp.html
index 638d41d..4bbaeb3 100644
--- a/tomcat-uid/webapps/examples/jsp/include/foo.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/include/foo.jsp.html
@@ -1,5 +1,5 @@
 <html><body><pre>

-&lt;!--

+&lt;%--

  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.

@@ -14,10 +14,6 @@
   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.

--->

 

-&lt;body bgcolor="white">

-&lt;font color="red">

-

-&lt;%= System.currentTimeMillis() %>

+--%>&lt;%= System.currentTimeMillis() %>

 </pre></body></html>

diff --git a/tomcat-uid/webapps/examples/jsp/include/include.jsp b/tomcat-uid/webapps/examples/jsp/include/include.jsp
index 34fd6c3..92655d1 100644
--- a/tomcat-uid/webapps/examples/jsp/include/include.jsp
+++ b/tomcat-uid/webapps/examples/jsp/include/include.jsp
@@ -1,5 +1,4 @@
-<html>

-<!--

+<%--

  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.

@@ -14,7 +13,8 @@
   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.

--->

+--%>

+<html>

 

 <body bgcolor="white">

 

@@ -22,14 +22,9 @@
 

 <%@ page buffer="5kb" autoFlush="false" %>

 

-<p>In place evaluation of another JSP which gives you the current time:

+<p>In place evaluation of another JSP which gives you the current time: <%@ include file="foo.jsp" %>

 

-<%@ include file="foo.jsp" %>

-

-<p> <jsp:include page="foo.html" flush="true"/> by including the output of another JSP:

-

-<jsp:include page="foo.jsp" flush="true"/>

-

-:-) 

+<p> <jsp:include page="foo.html" flush="true"/> by including the output of another JSP: <jsp:include page="foo.jsp" flush="true"/>

+:-)

 

 </html>

diff --git a/tomcat-uid/webapps/examples/jsp/include/include.jsp.html b/tomcat-uid/webapps/examples/jsp/include/include.jsp.html
index f45c300..035b57a 100644
--- a/tomcat-uid/webapps/examples/jsp/include/include.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/include/include.jsp.html
@@ -1,6 +1,5 @@
 <html><body><pre>

-&lt;html>

-&lt;!--

+&lt;%--

  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.

@@ -15,7 +14,8 @@
   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.

--->

+--%>

+&lt;html>

 

 &lt;body bgcolor="white">

 

@@ -23,15 +23,10 @@
 

 &lt;%@ page buffer="5kb" autoFlush="false" %>

 

-&lt;p>In place evaluation of another JSP which gives you the current time:

+&lt;p>In place evaluation of another JSP which gives you the current time: &lt;%@ include file="foo.jsp" %>

 

-&lt;%@ include file="foo.jsp" %>

-

-&lt;p> &lt;jsp:include page="foo.html" flush="true"/> by including the output of another JSP:

-

-&lt;jsp:include page="foo.jsp" flush="true"/>

-

-:-) 

+&lt;p> &lt;jsp:include page="foo.html" flush="true"/> by including the output of another JSP: &lt;jsp:include page="foo.jsp" flush="true"/>

+:-)

 

 &lt;/html>

 </pre></body></html>

diff --git a/tomcat-uid/webapps/examples/jsp/index.html b/tomcat-uid/webapps/examples/jsp/index.html
index c41acf2..c6b1c43 100644
--- a/tomcat-uid/webapps/examples/jsp/index.html
+++ b/tomcat-uid/webapps/examples/jsp/index.html
@@ -103,6 +103,14 @@
 </tr>

 

 <tr valign=TOP>

+<td>Composite Expressions</td>

+<td valign=TOP width="30%"><a href="jsp2/el/composite.jsp"><img src="images/execute.gif" hspace=4 border=0  align=top></a><a href="jsp2/el/composite.jsp">Execute</a></td>

+

+<td width="30%"><a href="jsp2/el/composite.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="jsp2/el/composite.html">Source</a></td>

+</tr>

+

+

+<tr valign=TOP>

 <td><br><b>SimpleTag Handlers and JSP Fragments</b></td>

 </tr>

 

@@ -327,7 +335,7 @@
 <tr VALIGN=TOP>

   <td>If&nbsp;</td>

   <td VALIGN=TOP WIDTH="30%">

-    <a href="tagplugin/if.jsp"><img SRC="images/execute.gif" HSPACE=4 BORDER=0  

+    <a href="tagplugin/if.jsp"><img SRC="images/execute.gif" HSPACE=4 BORDER=0

 align=TOP></a>

     <a href="tagplugin/if.jsp">Execute</a>

   </td>

@@ -341,7 +349,7 @@
 <tr VALIGN=TOP>

   <td>ForEach&nbsp;</td>

   <td VALIGN=TOP WIDTH="30%">

-    <a href="tagplugin/foreach.jsp"><img SRC="images/execute.gif" HSPACE=4 BORDER=0  

+    <a href="tagplugin/foreach.jsp"><img SRC="images/execute.gif" HSPACE=4 BORDER=0

 align=TOP></a>

     <a href="tagplugin/foreach.jsp">Execute</a>

   </td>

@@ -366,5 +374,24 @@
 

 </table>

 

+<br/>

+<b><u><font size="+1">Other Examples</font></u></b><br>

+<table BORDER=0 CELLSPACING=5 WIDTH="85%" >

+

+<tr VALIGN=TOP>

+  <td>FORM Authentication&nbsp;</td>

+  <td VALIGN=TOP WIDTH="30%">

+    <a href="security/protected/index.jsp"><img SRC="images/execute.gif" HSPACE=4 BORDER=0 align=TOP> Execute</a>

+  </td>

+  <td WIDTH="30%"></td>

+</tr>

+<tr>

+  <td colspan="3">Example that demonstrates protecting a resource and

+    using Form-Based authentication. To access the page the user must

+    have role of either "tomcat" or "role1". By default no user

+    is configured to have these roles.</td>

+</tr>

+

+</table>

 </body>

 </html>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/el/Functions.java.html b/tomcat-uid/webapps/examples/jsp/jsp2/el/Functions.java.html
index 350fce6..91abc75 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/el/Functions.java.html
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/el/Functions.java.html
@@ -17,29 +17,31 @@
 */

 package jsp2.examples.el;

 

+import java.util.Locale;

+

 /**

  * Defines the functions for the jsp2 example tag library.

- * 

+ *

  * &lt;p>Each function is defined as a static method.&lt;/p>

  */

 public class Functions {

     public static String reverse( String text ) {

-        return new StringBuffer( text ).reverse().toString();

+        return new StringBuilder( text ).reverse().toString();

     }

 

     public static int numVowels( String text ) {

         String vowels = "aeiouAEIOU";

-	int result = 0;

+        int result = 0;

         for( int i = 0; i &lt; text.length(); i++ ) {

-	    if( vowels.indexOf( text.charAt( i ) ) != -1 ) {

-	        result++;

-	    }

-	}

-	return result;

+            if( vowels.indexOf( text.charAt( i ) ) != -1 ) {

+                result++;

+            }

+        }

+        return result;

     }

 

     public static String caps( String text ) {

-        return text.toUpperCase();

+        return text.toUpperCase(Locale.ENGLISH);

     }

 }

 </pre></body></html>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/el/ValuesBean.java.html b/tomcat-uid/webapps/examples/jsp/jsp2/el/ValuesBean.java.html
new file mode 100644
index 0000000..beadf72
--- /dev/null
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/el/ValuesBean.java.html
@@ -0,0 +1,54 @@
+<html><body><pre>

+/*

+* 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.

+*/

+

+

+package jsp2.examples;

+

+/**

+ * Accept and display a value.

+ */

+public class ValuesBean {

+    private String string;

+    private double doubleValue;

+    private long longValue;

+

+    public String getStringValue() {

+        return this.string;

+    }

+

+    public void setStringValue(String string) {

+        this.string = string;

+    }

+

+    public double getDoubleValue() {

+        return doubleValue;

+    }

+

+    public void setDoubleValue(double doubleValue) {

+        this.doubleValue = doubleValue;

+    }

+

+    public long getLongValue() {

+        return longValue;

+    }

+

+    public void setLongValue(long longValue) {

+        this.longValue = longValue;

+    }

+}

+</pre></body></html>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/el/ValuesTag.java.html b/tomcat-uid/webapps/examples/jsp/jsp2/el/ValuesTag.java.html
new file mode 100644
index 0000000..16f62ab
--- /dev/null
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/el/ValuesTag.java.html
@@ -0,0 +1,81 @@
+<html><body><pre>

+/*

+ * 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.

+ */

+package examples;

+

+import java.io.IOException;

+

+import javax.servlet.jsp.JspException;

+import javax.servlet.jsp.JspTagException;

+import javax.servlet.jsp.JspWriter;

+import javax.servlet.jsp.tagext.TagSupport;

+

+/**

+ * Accept and display a value.

+ */

+public class ValuesTag extends TagSupport {

+

+    private static final long serialVersionUID = 1L;

+

+    // Using "-1" as the default value,

+    // in the assumption that it won't be used as the value.

+    // Cannot use null here, because null is an important case

+    // that should be present in the tests.

+    private Object objectValue = "-1";

+    private String stringValue = "-1";

+    private long longValue = -1;

+    private double doubleValue = -1;

+

+    public void setObject(Object objectValue) {

+        this.objectValue = objectValue;

+    }

+

+    public void setString(String stringValue) {

+        this.stringValue = stringValue;

+    }

+

+    public void setLong(long longValue) {

+        this.longValue = longValue;

+    }

+

+    public void setDouble(double doubleValue) {

+        this.doubleValue = doubleValue;

+    }

+

+    @Override

+    public int doEndTag() throws JspException {

+        JspWriter out = pageContext.getOut();

+

+        try {

+            if (!"-1".equals(objectValue)) {

+                out.print(objectValue);

+            } else if (!"-1".equals(stringValue)) {

+                out.print(stringValue);

+            } else if (longValue != -1) {

+                out.print(longValue);

+            } else if (doubleValue != -1) {

+                out.print(doubleValue);

+            } else {

+                out.print("-1");

+            }

+        } catch (IOException ex) {

+            throw new JspTagException("IOException: " + ex.toString(), ex);

+        }

+        return super.doEndTag();

+    }

+}

+</pre></body></html>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/el/basic-arithmetic.jsp b/tomcat-uid/webapps/examples/jsp/jsp2/el/basic-arithmetic.jsp
index e2ec74c..a3b3e7a 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/el/basic-arithmetic.jsp
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/el/basic-arithmetic.jsp
@@ -1,4 +1,4 @@
-<!--

+<%--

  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.

@@ -13,7 +13,7 @@
   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.

--->

+--%>

 <html>

   <head>

     <title>JSP 2.0 Expression Language - Basic Arithmetic</title>

@@ -22,7 +22,7 @@
     <h1>JSP 2.0 Expression Language - Basic Arithmetic</h1>

     <hr>

     This example illustrates basic Expression Language arithmetic.

-    Addition (+), subtraction (-), multiplication (*), division (/ or div), 

+    Addition (+), subtraction (-), multiplication (*), division (/ or div),

     and modulus (% or mod) are all supported.  Error conditions, like

     division by zero, are handled gracefully.

     <br>

@@ -30,58 +30,58 @@
       <code>

         <table border="1">

           <thead>

-	    <td><b>EL Expression</b></td>

-	    <td><b>Result</b></td>

-	  </thead>

-	  <tr>

-	    <td>\${1}</td>

-	    <td>${1}</td>

-	  </tr>

-	  <tr>

-	    <td>\${1 + 2}</td>

-	    <td>${1 + 2}</td>

-	  </tr>

-	  <tr>

-	    <td>\${1.2 + 2.3}</td>

-	    <td>${1.2 + 2.3}</td>

-	  </tr>

-	  <tr>

-	    <td>\${1.2E4 + 1.4}</td>

-	    <td>${1.2E4 + 1.4}</td>

-	  </tr>

-	  <tr>

-	    <td>\${-4 - 2}</td>

-	    <td>${-4 - 2}</td>

-	  </tr>

-	  <tr>

-	    <td>\${21 * 2}</td>

-	    <td>${21 * 2}</td>

-	  </tr>

-	  <tr>

-	    <td>\${3/4}</td>

-	    <td>${3/4}</td>

-	  </tr>

-	  <tr>

-	    <td>\${3 div 4}</td>

-	    <td>${3 div 4}</td>

-	  </tr>

-	  <tr>

-	    <td>\${3/0}</td>

-	    <td>${3/0}</td>

-	  </tr>

-	  <tr>

-	    <td>\${10%4}</td>

-	    <td>${10%4}</td>

-	  </tr>

-	  <tr>

-	    <td>\${10 mod 4}</td>

-	    <td>${10 mod 4}</td>

-	  </tr>

+        <td><b>EL Expression</b></td>

+        <td><b>Result</b></td>

+      </thead>

+      <tr>

+        <td>\${1}</td>

+        <td>${1}</td>

+      </tr>

+      <tr>

+        <td>\${1 + 2}</td>

+        <td>${1 + 2}</td>

+      </tr>

+      <tr>

+        <td>\${1.2 + 2.3}</td>

+        <td>${1.2 + 2.3}</td>

+      </tr>

+      <tr>

+        <td>\${1.2E4 + 1.4}</td>

+        <td>${1.2E4 + 1.4}</td>

+      </tr>

+      <tr>

+        <td>\${-4 - 2}</td>

+        <td>${-4 - 2}</td>

+      </tr>

+      <tr>

+        <td>\${21 * 2}</td>

+        <td>${21 * 2}</td>

+      </tr>

+      <tr>

+        <td>\${3/4}</td>

+        <td>${3/4}</td>

+      </tr>

+      <tr>

+        <td>\${3 div 4}</td>

+        <td>${3 div 4}</td>

+      </tr>

+      <tr>

+        <td>\${3/0}</td>

+        <td>${3/0}</td>

+      </tr>

+      <tr>

+        <td>\${10%4}</td>

+        <td>${10%4}</td>

+      </tr>

+      <tr>

+        <td>\${10 mod 4}</td>

+        <td>${10 mod 4}</td>

+      </tr>

     <tr>

       <td>\${(1==2) ? 3 : 4}</td>

       <td>${(1==2) ? 3 : 4}</td>

     </tr>

-	</table>

+    </table>

       </code>

     </blockquote>

   </body>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/el/basic-arithmetic.jsp.html b/tomcat-uid/webapps/examples/jsp/jsp2/el/basic-arithmetic.jsp.html
index 4aa05c8..e703cde 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/el/basic-arithmetic.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/el/basic-arithmetic.jsp.html
@@ -1,5 +1,5 @@
 <html><body><pre>

-&lt;!--

+&lt;%--

  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.

@@ -14,7 +14,7 @@
   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.

--->

+--%>

 &lt;html>

   &lt;head>

     &lt;title>JSP 2.0 Expression Language - Basic Arithmetic&lt;/title>

@@ -23,7 +23,7 @@
     &lt;h1>JSP 2.0 Expression Language - Basic Arithmetic&lt;/h1>

     &lt;hr>

     This example illustrates basic Expression Language arithmetic.

-    Addition (+), subtraction (-), multiplication (*), division (/ or div), 

+    Addition (+), subtraction (-), multiplication (*), division (/ or div),

     and modulus (% or mod) are all supported.  Error conditions, like

     division by zero, are handled gracefully.

     &lt;br>

@@ -31,58 +31,58 @@
       &lt;code>

         &lt;table border="1">

           &lt;thead>

-	    &lt;td>&lt;b>EL Expression&lt;/b>&lt;/td>

-	    &lt;td>&lt;b>Result&lt;/b>&lt;/td>

-	  &lt;/thead>

-	  &lt;tr>

-	    &lt;td>\${1}&lt;/td>

-	    &lt;td>${1}&lt;/td>

-	  &lt;/tr>

-	  &lt;tr>

-	    &lt;td>\${1 + 2}&lt;/td>

-	    &lt;td>${1 + 2}&lt;/td>

-	  &lt;/tr>

-	  &lt;tr>

-	    &lt;td>\${1.2 + 2.3}&lt;/td>

-	    &lt;td>${1.2 + 2.3}&lt;/td>

-	  &lt;/tr>

-	  &lt;tr>

-	    &lt;td>\${1.2E4 + 1.4}&lt;/td>

-	    &lt;td>${1.2E4 + 1.4}&lt;/td>

-	  &lt;/tr>

-	  &lt;tr>

-	    &lt;td>\${-4 - 2}&lt;/td>

-	    &lt;td>${-4 - 2}&lt;/td>

-	  &lt;/tr>

-	  &lt;tr>

-	    &lt;td>\${21 * 2}&lt;/td>

-	    &lt;td>${21 * 2}&lt;/td>

-	  &lt;/tr>

-	  &lt;tr>

-	    &lt;td>\${3/4}&lt;/td>

-	    &lt;td>${3/4}&lt;/td>

-	  &lt;/tr>

-	  &lt;tr>

-	    &lt;td>\${3 div 4}&lt;/td>

-	    &lt;td>${3 div 4}&lt;/td>

-	  &lt;/tr>

-	  &lt;tr>

-	    &lt;td>\${3/0}&lt;/td>

-	    &lt;td>${3/0}&lt;/td>

-	  &lt;/tr>

-	  &lt;tr>

-	    &lt;td>\${10%4}&lt;/td>

-	    &lt;td>${10%4}&lt;/td>

-	  &lt;/tr>

-	  &lt;tr>

-	    &lt;td>\${10 mod 4}&lt;/td>

-	    &lt;td>${10 mod 4}&lt;/td>

-	  &lt;/tr>

+        &lt;td>&lt;b>EL Expression&lt;/b>&lt;/td>

+        &lt;td>&lt;b>Result&lt;/b>&lt;/td>

+      &lt;/thead>

+      &lt;tr>

+        &lt;td>\${1}&lt;/td>

+        &lt;td>${1}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${1 + 2}&lt;/td>

+        &lt;td>${1 + 2}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${1.2 + 2.3}&lt;/td>

+        &lt;td>${1.2 + 2.3}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${1.2E4 + 1.4}&lt;/td>

+        &lt;td>${1.2E4 + 1.4}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${-4 - 2}&lt;/td>

+        &lt;td>${-4 - 2}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${21 * 2}&lt;/td>

+        &lt;td>${21 * 2}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${3/4}&lt;/td>

+        &lt;td>${3/4}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${3 div 4}&lt;/td>

+        &lt;td>${3 div 4}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${3/0}&lt;/td>

+        &lt;td>${3/0}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${10%4}&lt;/td>

+        &lt;td>${10%4}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${10 mod 4}&lt;/td>

+        &lt;td>${10 mod 4}&lt;/td>

+      &lt;/tr>

     &lt;tr>

       &lt;td>\${(1==2) ? 3 : 4}&lt;/td>

       &lt;td>${(1==2) ? 3 : 4}&lt;/td>

     &lt;/tr>

-	&lt;/table>

+    &lt;/table>

       &lt;/code>

     &lt;/blockquote>

   &lt;/body>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/el/basic-comparisons.jsp b/tomcat-uid/webapps/examples/jsp/jsp2/el/basic-comparisons.jsp
index e01188a..ce63d5a 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/el/basic-comparisons.jsp
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/el/basic-comparisons.jsp
@@ -1,4 +1,4 @@
-<!--

+<%--

  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.

@@ -13,7 +13,7 @@
   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.

--->

+--%>

 <html>

   <head>

     <title>JSP 2.0 Expression Language - Basic Comparisons</title>

@@ -36,80 +36,80 @@
       <code>

         <table border="1">

           <thead>

-	    <td><b>EL Expression</b></td>

-	    <td><b>Result</b></td>

-	  </thead>

-	  <tr>

-	    <td>\${1 &lt; 2}</td>

-	    <td>${1 < 2}</td>

-	  </tr>

-	  <tr>

-	    <td>\${1 lt 2}</td>

-	    <td>${1 lt 2}</td>

-	  </tr>

-	  <tr>

-	    <td>\${1 &gt; (4/2)}</td>

-	    <td>${1 > (4/2)}</td>

-	  </tr>

-	  <tr>

-	    <td>\${1 gt (4/2)}</td>

-	    <td>${1 gt (4/2)}</td>

-	  </tr>

-	  <tr>

-	    <td>\${4.0 &gt;= 3}</td>

-	    <td>${4.0 >= 3}</td>

-	  </tr>

-	  <tr>

-	    <td>\${4.0 ge 3}</td>

-	    <td>${4.0 ge 3}</td>

-	  </tr>

-	  <tr>

-	    <td>\${4 &lt;= 3}</td>

-	    <td>${4 <= 3}</td>

-	  </tr>

-	  <tr>

-	    <td>\${4 le 3}</td>

-	    <td>${4 le 3}</td>

-	  </tr>

-	  <tr>

-	    <td>\${100.0 == 100}</td>

-	    <td>${100.0 == 100}</td>

-	  </tr>

-	  <tr>

-	    <td>\${100.0 eq 100}</td>

-	    <td>${100.0 eq 100}</td>

-	  </tr>

-	  <tr>

-	    <td>\${(10*10) != 100}</td>

-	    <td>${(10*10) != 100}</td>

-	  </tr>

-	  <tr>

-	    <td>\${(10*10) ne 100}</td>

-	    <td>${(10*10) ne 100}</td>

-	  </tr>

-	</table>

+        <td><b>EL Expression</b></td>

+        <td><b>Result</b></td>

+      </thead>

+      <tr>

+        <td>\${1 &lt; 2}</td>

+        <td>${1 < 2}</td>

+      </tr>

+      <tr>

+        <td>\${1 lt 2}</td>

+        <td>${1 lt 2}</td>

+      </tr>

+      <tr>

+        <td>\${1 &gt; (4/2)}</td>

+        <td>${1 > (4/2)}</td>

+      </tr>

+      <tr>

+        <td>\${1 gt (4/2)}</td>

+        <td>${1 gt (4/2)}</td>

+      </tr>

+      <tr>

+        <td>\${4.0 &gt;= 3}</td>

+        <td>${4.0 >= 3}</td>

+      </tr>

+      <tr>

+        <td>\${4.0 ge 3}</td>

+        <td>${4.0 ge 3}</td>

+      </tr>

+      <tr>

+        <td>\${4 &lt;= 3}</td>

+        <td>${4 <= 3}</td>

+      </tr>

+      <tr>

+        <td>\${4 le 3}</td>

+        <td>${4 le 3}</td>

+      </tr>

+      <tr>

+        <td>\${100.0 == 100}</td>

+        <td>${100.0 == 100}</td>

+      </tr>

+      <tr>

+        <td>\${100.0 eq 100}</td>

+        <td>${100.0 eq 100}</td>

+      </tr>

+      <tr>

+        <td>\${(10*10) != 100}</td>

+        <td>${(10*10) != 100}</td>

+      </tr>

+      <tr>

+        <td>\${(10*10) ne 100}</td>

+        <td>${(10*10) ne 100}</td>

+      </tr>

+    </table>

       </code>

       <br>

       <u><b>Alphabetic</b></u>

       <code>

         <table border="1">

           <thead>

-	    <td><b>EL Expression</b></td>

-	    <td><b>Result</b></td>

-	  </thead>

-	  <tr>

-	    <td>\${'a' &lt; 'b'}</td>

-	    <td>${'a' < 'b'}</td>

-	  </tr>

-	  <tr>

-	    <td>\${'hip' &gt; 'hit'}</td>

-	    <td>${'hip' > 'hit'}</td>

-	  </tr>

-	  <tr>

-	    <td>\${'4' &gt; 3}</td>

-	    <td>${'4' > 3}</td>

-	  </tr>

-	</table>

+            <td><b>EL Expression</b></td>

+            <td><b>Result</b></td>

+          </thead>

+          <tr>

+            <td>\${'a' &lt; 'b'}</td>

+            <td>${'a' < 'b'}</td>

+          </tr>

+          <tr>

+            <td>\${'hip' &gt; 'hit'}</td>

+            <td>${'hip' > 'hit'}</td>

+          </tr>

+          <tr>

+            <td>\${'4' &gt; 3}</td>

+            <td>${'4' > 3}</td>

+          </tr>

+        </table>

       </code>

     </blockquote>

   </body>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/el/basic-comparisons.jsp.html b/tomcat-uid/webapps/examples/jsp/jsp2/el/basic-comparisons.jsp.html
index efc4da3..c5db858 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/el/basic-comparisons.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/el/basic-comparisons.jsp.html
@@ -1,5 +1,5 @@
 <html><body><pre>

-&lt;!--

+&lt;%--

  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.

@@ -14,7 +14,7 @@
   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.

--->

+--%>

 &lt;html>

   &lt;head>

     &lt;title>JSP 2.0 Expression Language - Basic Comparisons&lt;/title>

@@ -37,80 +37,80 @@
       &lt;code>

         &lt;table border="1">

           &lt;thead>

-	    &lt;td>&lt;b>EL Expression&lt;/b>&lt;/td>

-	    &lt;td>&lt;b>Result&lt;/b>&lt;/td>

-	  &lt;/thead>

-	  &lt;tr>

-	    &lt;td>\${1 &amp;lt; 2}&lt;/td>

-	    &lt;td>${1 &lt; 2}&lt;/td>

-	  &lt;/tr>

-	  &lt;tr>

-	    &lt;td>\${1 lt 2}&lt;/td>

-	    &lt;td>${1 lt 2}&lt;/td>

-	  &lt;/tr>

-	  &lt;tr>

-	    &lt;td>\${1 &amp;gt; (4/2)}&lt;/td>

-	    &lt;td>${1 > (4/2)}&lt;/td>

-	  &lt;/tr>

-	  &lt;tr>

-	    &lt;td>\${1 gt (4/2)}&lt;/td>

-	    &lt;td>${1 gt (4/2)}&lt;/td>

-	  &lt;/tr>

-	  &lt;tr>

-	    &lt;td>\${4.0 &amp;gt;= 3}&lt;/td>

-	    &lt;td>${4.0 >= 3}&lt;/td>

-	  &lt;/tr>

-	  &lt;tr>

-	    &lt;td>\${4.0 ge 3}&lt;/td>

-	    &lt;td>${4.0 ge 3}&lt;/td>

-	  &lt;/tr>

-	  &lt;tr>

-	    &lt;td>\${4 &amp;lt;= 3}&lt;/td>

-	    &lt;td>${4 &lt;= 3}&lt;/td>

-	  &lt;/tr>

-	  &lt;tr>

-	    &lt;td>\${4 le 3}&lt;/td>

-	    &lt;td>${4 le 3}&lt;/td>

-	  &lt;/tr>

-	  &lt;tr>

-	    &lt;td>\${100.0 == 100}&lt;/td>

-	    &lt;td>${100.0 == 100}&lt;/td>

-	  &lt;/tr>

-	  &lt;tr>

-	    &lt;td>\${100.0 eq 100}&lt;/td>

-	    &lt;td>${100.0 eq 100}&lt;/td>

-	  &lt;/tr>

-	  &lt;tr>

-	    &lt;td>\${(10*10) != 100}&lt;/td>

-	    &lt;td>${(10*10) != 100}&lt;/td>

-	  &lt;/tr>

-	  &lt;tr>

-	    &lt;td>\${(10*10) ne 100}&lt;/td>

-	    &lt;td>${(10*10) ne 100}&lt;/td>

-	  &lt;/tr>

-	&lt;/table>

+        &lt;td>&lt;b>EL Expression&lt;/b>&lt;/td>

+        &lt;td>&lt;b>Result&lt;/b>&lt;/td>

+      &lt;/thead>

+      &lt;tr>

+        &lt;td>\${1 &amp;lt; 2}&lt;/td>

+        &lt;td>${1 &lt; 2}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${1 lt 2}&lt;/td>

+        &lt;td>${1 lt 2}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${1 &amp;gt; (4/2)}&lt;/td>

+        &lt;td>${1 > (4/2)}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${1 gt (4/2)}&lt;/td>

+        &lt;td>${1 gt (4/2)}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${4.0 &amp;gt;= 3}&lt;/td>

+        &lt;td>${4.0 >= 3}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${4.0 ge 3}&lt;/td>

+        &lt;td>${4.0 ge 3}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${4 &amp;lt;= 3}&lt;/td>

+        &lt;td>${4 &lt;= 3}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${4 le 3}&lt;/td>

+        &lt;td>${4 le 3}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${100.0 == 100}&lt;/td>

+        &lt;td>${100.0 == 100}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${100.0 eq 100}&lt;/td>

+        &lt;td>${100.0 eq 100}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${(10*10) != 100}&lt;/td>

+        &lt;td>${(10*10) != 100}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${(10*10) ne 100}&lt;/td>

+        &lt;td>${(10*10) ne 100}&lt;/td>

+      &lt;/tr>

+    &lt;/table>

       &lt;/code>

       &lt;br>

       &lt;u>&lt;b>Alphabetic&lt;/b>&lt;/u>

       &lt;code>

         &lt;table border="1">

           &lt;thead>

-	    &lt;td>&lt;b>EL Expression&lt;/b>&lt;/td>

-	    &lt;td>&lt;b>Result&lt;/b>&lt;/td>

-	  &lt;/thead>

-	  &lt;tr>

-	    &lt;td>\${'a' &amp;lt; 'b'}&lt;/td>

-	    &lt;td>${'a' &lt; 'b'}&lt;/td>

-	  &lt;/tr>

-	  &lt;tr>

-	    &lt;td>\${'hip' &amp;gt; 'hit'}&lt;/td>

-	    &lt;td>${'hip' > 'hit'}&lt;/td>

-	  &lt;/tr>

-	  &lt;tr>

-	    &lt;td>\${'4' &amp;gt; 3}&lt;/td>

-	    &lt;td>${'4' > 3}&lt;/td>

-	  &lt;/tr>

-	&lt;/table>

+            &lt;td>&lt;b>EL Expression&lt;/b>&lt;/td>

+            &lt;td>&lt;b>Result&lt;/b>&lt;/td>

+          &lt;/thead>

+          &lt;tr>

+            &lt;td>\${'a' &amp;lt; 'b'}&lt;/td>

+            &lt;td>${'a' &lt; 'b'}&lt;/td>

+          &lt;/tr>

+          &lt;tr>

+            &lt;td>\${'hip' &amp;gt; 'hit'}&lt;/td>

+            &lt;td>${'hip' > 'hit'}&lt;/td>

+          &lt;/tr>

+          &lt;tr>

+            &lt;td>\${'4' &amp;gt; 3}&lt;/td>

+            &lt;td>${'4' > 3}&lt;/td>

+          &lt;/tr>

+        &lt;/table>

       &lt;/code>

     &lt;/blockquote>

   &lt;/body>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/el/composite.html b/tomcat-uid/webapps/examples/jsp/jsp2/el/composite.html
new file mode 100644
index 0000000..b8bfa0e
--- /dev/null
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/el/composite.html
@@ -0,0 +1,31 @@
+<html>

+<!--

+ 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.

+-->

+<head>

+<title>View Source Code</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="composite.jsp"><img src="../../images/execute.gif" align="right" border="0"></a><a href="../../index.html"><img src="../../images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+

+<h3><a href="composite.jsp.html">Source Code for composite.jsp</a></h3>

+<h3><a href="ValuesTag.java.html">Source Code for ValuesTag.java</a></h3>

+<h3><a href="ValuesBean.java.html">Source Code for ValuesBean.java</a></h3>

+

+</body>

+</html>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/el/composite.jsp b/tomcat-uid/webapps/examples/jsp/jsp2/el/composite.jsp
new file mode 100644
index 0000000..c6fa113
--- /dev/null
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/el/composite.jsp
@@ -0,0 +1,110 @@
+<%--

+ 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.

+--%>

+<%@ taglib prefix="my" uri="http://tomcat.apache.org/example-taglib" %>

+

+<html>

+  <head>

+    <title>JSP 2.0 Expression Language - Composite Expressions</title>

+  </head>

+  <body>

+    <h1>JSP 2.0 Expression Language - Composite Expressions</h1>

+    <hr>

+    This example illustrates EL composite expressions. Composite expressions

+    are formed by grouping together multiple EL expressions. Each of them is

+    evaluated from left to right, coerced to String, all those strings are

+    concatenated, and the result is coerced to the expected type.

+

+    <jsp:useBean id="values" class="jsp2.examples.ValuesBean" />

+

+    <blockquote>

+      <code>

+        <table border="1">

+          <thead>

+        <td><b>EL Expression</b></td>

+        <td><b>Type</b></td>

+        <td><b>Result</b></td>

+      </thead>

+      <tr>

+        <td>\${'hello'} wo\${'rld'}</td>

+        <td>String</td>

+        <td><jsp:setProperty name="values" property="stringValue" value="${'hello'} wo${'rld'}"/>${values.stringValue}</td>

+      </tr>

+      <tr>

+        <td>\${'hello'} wo\${'rld'}</td>

+        <td>String</td>

+        <td><my:values string="${'hello'} wo${'rld'}"/></td>

+      </tr>

+      <tr>

+        <td>\${1+2}.\${220}</td>

+        <td>Double</td>

+        <td><jsp:setProperty name="values" property="doubleValue" value="${1+2}.${220}"/>${values.doubleValue}</td>

+      </tr>

+      <tr>

+        <td>\${1+2}.\${220}</td>

+        <td>Double</td>

+        <td><my:values double="${1+2}.${220}"/></td>

+      </tr>

+      <tr>

+        <td>000\${1}\${7}</td>

+        <td>Long</td>

+        <td><jsp:setProperty name="values" property="longValue" value="000${1}${7}"/>${values.longValue}</td>

+      </tr>

+      <tr>

+        <td>000\${1}\${7}</td>

+        <td>Long</td>

+        <td><my:values long="000${1}${7}"/></td>

+      </tr>

+      <!--

+         Undefined values are to be coerced to String, to be "",

+         https://bz.apache.org/bugzilla/show_bug.cgi?id=47413

+       -->

+      <tr>

+        <td>\${undefinedFoo}hello world\${undefinedBar}</td>

+        <td>String</td>

+        <td><jsp:setProperty name="values" property="stringValue" value="${undefinedFoo}hello world${undefinedBar}"/>${values.stringValue}</td>

+      </tr>

+      <tr>

+        <td>\${undefinedFoo}hello world\${undefinedBar}</td>

+        <td>String</td>

+        <td><my:values string="${undefinedFoo}hello world${undefinedBar}"/></td>

+      </tr>

+      <tr>

+        <td>\${undefinedFoo}\${undefinedBar}</td>

+        <td>Double</td>

+        <td><jsp:setProperty name="values" property="doubleValue" value="${undefinedFoo}${undefinedBar}"/>${values.doubleValue}</td>

+      </tr>

+      <tr>

+        <td>\${undefinedFoo}\${undefinedBar}</td>

+        <td>Double</td>

+        <td><my:values double="${undefinedFoo}${undefinedBar}"/></td>

+      </tr>

+      <tr>

+        <td>\${undefinedFoo}\${undefinedBar}</td>

+        <td>Long</td>

+        <td><jsp:setProperty name="values" property="longValue" value="${undefinedFoo}${undefinedBar}"/>${values.longValue}</td>

+      </tr>

+      <tr>

+        <td>\${undefinedFoo}\${undefinedBar}</td>

+        <td>Long</td>

+        <td><my:values long="${undefinedFoo}${undefinedBar}"/></td>

+      </tr>

+    </table>

+      </code>

+    </blockquote>

+  </body>

+</html>

+

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/el/composite.jsp.html b/tomcat-uid/webapps/examples/jsp/jsp2/el/composite.jsp.html
new file mode 100644
index 0000000..1d0014f
--- /dev/null
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/el/composite.jsp.html
@@ -0,0 +1,112 @@
+<html><body><pre>

+&lt;%--

+ 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.

+--%>

+&lt;%@ taglib prefix="my" uri="http://tomcat.apache.org/example-taglib" %>

+

+&lt;html>

+  &lt;head>

+    &lt;title>JSP 2.0 Expression Language - Composite Expressions&lt;/title>

+  &lt;/head>

+  &lt;body>

+    &lt;h1>JSP 2.0 Expression Language - Composite Expressions&lt;/h1>

+    &lt;hr>

+    This example illustrates EL composite expressions. Composite expressions

+    are formed by grouping together multiple EL expressions. Each of them is

+    evaluated from left to right, coerced to String, all those strings are

+    concatenated, and the result is coerced to the expected type.

+

+    &lt;jsp:useBean id="values" class="jsp2.examples.ValuesBean" />

+

+    &lt;blockquote>

+      &lt;code>

+        &lt;table border="1">

+          &lt;thead>

+        &lt;td>&lt;b>EL Expression&lt;/b>&lt;/td>

+        &lt;td>&lt;b>Type&lt;/b>&lt;/td>

+        &lt;td>&lt;b>Result&lt;/b>&lt;/td>

+      &lt;/thead>

+      &lt;tr>

+        &lt;td>\${'hello'} wo\${'rld'}&lt;/td>

+        &lt;td>String&lt;/td>

+        &lt;td>&lt;jsp:setProperty name="values" property="stringValue" value="${'hello'} wo${'rld'}"/>${values.stringValue}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${'hello'} wo\${'rld'}&lt;/td>

+        &lt;td>String&lt;/td>

+        &lt;td>&lt;my:values string="${'hello'} wo${'rld'}"/>&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${1+2}.\${220}&lt;/td>

+        &lt;td>Double&lt;/td>

+        &lt;td>&lt;jsp:setProperty name="values" property="doubleValue" value="${1+2}.${220}"/>${values.doubleValue}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${1+2}.\${220}&lt;/td>

+        &lt;td>Double&lt;/td>

+        &lt;td>&lt;my:values double="${1+2}.${220}"/>&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>000\${1}\${7}&lt;/td>

+        &lt;td>Long&lt;/td>

+        &lt;td>&lt;jsp:setProperty name="values" property="longValue" value="000${1}${7}"/>${values.longValue}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>000\${1}\${7}&lt;/td>

+        &lt;td>Long&lt;/td>

+        &lt;td>&lt;my:values long="000${1}${7}"/>&lt;/td>

+      &lt;/tr>

+      &lt;!--

+         Undefined values are to be coerced to String, to be "",

+         https://bz.apache.org/bugzilla/show_bug.cgi?id=47413

+       -->

+      &lt;tr>

+        &lt;td>\${undefinedFoo}hello world\${undefinedBar}&lt;/td>

+        &lt;td>String&lt;/td>

+        &lt;td>&lt;jsp:setProperty name="values" property="stringValue" value="${undefinedFoo}hello world${undefinedBar}"/>${values.stringValue}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${undefinedFoo}hello world\${undefinedBar}&lt;/td>

+        &lt;td>String&lt;/td>

+        &lt;td>&lt;my:values string="${undefinedFoo}hello world${undefinedBar}"/>&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${undefinedFoo}\${undefinedBar}&lt;/td>

+        &lt;td>Double&lt;/td>

+        &lt;td>&lt;jsp:setProperty name="values" property="doubleValue" value="${undefinedFoo}${undefinedBar}"/>${values.doubleValue}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${undefinedFoo}\${undefinedBar}&lt;/td>

+        &lt;td>Double&lt;/td>

+        &lt;td>&lt;my:values double="${undefinedFoo}${undefinedBar}"/>&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${undefinedFoo}\${undefinedBar}&lt;/td>

+        &lt;td>Long&lt;/td>

+        &lt;td>&lt;jsp:setProperty name="values" property="longValue" value="${undefinedFoo}${undefinedBar}"/>${values.longValue}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${undefinedFoo}\${undefinedBar}&lt;/td>

+        &lt;td>Long&lt;/td>

+        &lt;td>&lt;my:values long="${undefinedFoo}${undefinedBar}"/>&lt;/td>

+      &lt;/tr>

+    &lt;/table>

+      &lt;/code>

+    &lt;/blockquote>

+  &lt;/body>

+&lt;/html>

+

+</pre></body></html>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/el/functions.jsp b/tomcat-uid/webapps/examples/jsp/jsp2/el/functions.jsp
index 66478c0..90895aa 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/el/functions.jsp
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/el/functions.jsp
@@ -1,4 +1,4 @@
-<!--

+<%--

  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.

@@ -13,7 +13,7 @@
   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.

--->

+--%>

 <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

 <%@ taglib prefix="my" uri="http://tomcat.apache.org/jsp2-example-taglib"%>

 

@@ -26,39 +26,39 @@
     <hr>

     An upgrade from the JSTL expression language, the JSP 2.0 EL also

     allows for simple function invocation.  Functions are defined

-    by tag libraries and are implemented by a Java programmer as 

+    by tag libraries and are implemented by a Java programmer as

     static methods.

 

     <blockquote>

       <u><b>Change Parameter</b></u>

       <form action="functions.jsp" method="GET">

-	  foo = <input type="text" name="foo" value="${fn:escapeXml(param["foo"])}">

+          foo = <input type="text" name="foo" value="${fn:escapeXml(param["foo"])}">

           <input type="submit">

       </form>

       <br>

       <code>

         <table border="1">

           <thead>

-	    <td><b>EL Expression</b></td>

-	    <td><b>Result</b></td>

-	  </thead>

-	  <tr>

-	    <td>\${param["foo"]}</td>

-	    <td>${fn:escapeXml(param["foo"])}&nbsp;</td>

-	  </tr>

-	  <tr>

-	    <td>\${my:reverse(param["foo"])}</td>

-	    <td>${my:reverse(fn:escapeXml(param["foo"]))}&nbsp;</td>

-	  </tr>

-	  <tr>

-	    <td>\${my:reverse(my:reverse(param["foo"]))}</td>

-	    <td>${my:reverse(my:reverse(fn:escapeXml(param["foo"])))}&nbsp;</td>

-	  </tr>

-	  <tr>

-	    <td>\${my:countVowels(param["foo"])}</td>

-	    <td>${my:countVowels(fn:escapeXml(param["foo"]))}&nbsp;</td>

-	  </tr>

-	</table>

+            <td><b>EL Expression</b></td>

+            <td><b>Result</b></td>

+          </thead>

+          <tr>

+            <td>\${param["foo"]}</td>

+            <td>${fn:escapeXml(param["foo"])}&nbsp;</td>

+          </tr>

+          <tr>

+            <td>\${my:reverse(param["foo"])}</td>

+            <td>${my:reverse(fn:escapeXml(param["foo"]))}&nbsp;</td>

+          </tr>

+          <tr>

+            <td>\${my:reverse(my:reverse(param["foo"]))}</td>

+            <td>${my:reverse(my:reverse(fn:escapeXml(param["foo"])))}&nbsp;</td>

+          </tr>

+          <tr>

+            <td>\${my:countVowels(param["foo"])}</td>

+            <td>${my:countVowels(fn:escapeXml(param["foo"]))}&nbsp;</td>

+          </tr>

+        </table>

       </code>

     </blockquote>

   </body>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/el/functions.jsp.html b/tomcat-uid/webapps/examples/jsp/jsp2/el/functions.jsp.html
index 9ac0c79..ecb761b 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/el/functions.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/el/functions.jsp.html
@@ -1,5 +1,5 @@
 <html><body><pre>

-&lt;!--

+&lt;%--

  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.

@@ -14,7 +14,7 @@
   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.

--->

+--%>

 &lt;%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

 &lt;%@ taglib prefix="my" uri="http://tomcat.apache.org/jsp2-example-taglib"%>

 

@@ -27,39 +27,39 @@
     &lt;hr>

     An upgrade from the JSTL expression language, the JSP 2.0 EL also

     allows for simple function invocation.  Functions are defined

-    by tag libraries and are implemented by a Java programmer as 

+    by tag libraries and are implemented by a Java programmer as

     static methods.

 

     &lt;blockquote>

       &lt;u>&lt;b>Change Parameter&lt;/b>&lt;/u>

       &lt;form action="functions.jsp" method="GET">

-	  foo = &lt;input type="text" name="foo" value="${fn:escapeXml(param["foo"])}">

+          foo = &lt;input type="text" name="foo" value="${fn:escapeXml(param["foo"])}">

           &lt;input type="submit">

       &lt;/form>

       &lt;br>

       &lt;code>

         &lt;table border="1">

           &lt;thead>

-	    &lt;td>&lt;b>EL Expression&lt;/b>&lt;/td>

-	    &lt;td>&lt;b>Result&lt;/b>&lt;/td>

-	  &lt;/thead>

-	  &lt;tr>

-	    &lt;td>\${param["foo"]}&lt;/td>

-	    &lt;td>${fn:escapeXml(param["foo"])}&amp;nbsp;&lt;/td>

-	  &lt;/tr>

-	  &lt;tr>

-	    &lt;td>\${my:reverse(param["foo"])}&lt;/td>

-	    &lt;td>${my:reverse(fn:escapeXml(param["foo"]))}&amp;nbsp;&lt;/td>

-	  &lt;/tr>

-	  &lt;tr>

-	    &lt;td>\${my:reverse(my:reverse(param["foo"]))}&lt;/td>

-	    &lt;td>${my:reverse(my:reverse(fn:escapeXml(param["foo"])))}&amp;nbsp;&lt;/td>

-	  &lt;/tr>

-	  &lt;tr>

-	    &lt;td>\${my:countVowels(param["foo"])}&lt;/td>

-	    &lt;td>${my:countVowels(fn:escapeXml(param["foo"]))}&amp;nbsp;&lt;/td>

-	  &lt;/tr>

-	&lt;/table>

+            &lt;td>&lt;b>EL Expression&lt;/b>&lt;/td>

+            &lt;td>&lt;b>Result&lt;/b>&lt;/td>

+          &lt;/thead>

+          &lt;tr>

+            &lt;td>\${param["foo"]}&lt;/td>

+            &lt;td>${fn:escapeXml(param["foo"])}&amp;nbsp;&lt;/td>

+          &lt;/tr>

+          &lt;tr>

+            &lt;td>\${my:reverse(param["foo"])}&lt;/td>

+            &lt;td>${my:reverse(fn:escapeXml(param["foo"]))}&amp;nbsp;&lt;/td>

+          &lt;/tr>

+          &lt;tr>

+            &lt;td>\${my:reverse(my:reverse(param["foo"]))}&lt;/td>

+            &lt;td>${my:reverse(my:reverse(fn:escapeXml(param["foo"])))}&amp;nbsp;&lt;/td>

+          &lt;/tr>

+          &lt;tr>

+            &lt;td>\${my:countVowels(param["foo"])}&lt;/td>

+            &lt;td>${my:countVowels(fn:escapeXml(param["foo"]))}&amp;nbsp;&lt;/td>

+          &lt;/tr>

+        &lt;/table>

       &lt;/code>

     &lt;/blockquote>

   &lt;/body>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/el/implicit-objects.jsp b/tomcat-uid/webapps/examples/jsp/jsp2/el/implicit-objects.jsp
index 8d6841a..999ad13 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/el/implicit-objects.jsp
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/el/implicit-objects.jsp
@@ -1,4 +1,4 @@
-<!--

+<%--

  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.

@@ -13,7 +13,7 @@
   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.

--->

+--%>

 <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

 

 <html>

@@ -23,28 +23,28 @@
   <body>

     <h1>JSP 2.0 Expression Language - Implicit Objects</h1>

     <hr>

-    This example illustrates some of the implicit objects available 

-    in the Expression Lanaguage.  The following implicit objects are 

+    This example illustrates some of the implicit objects available

+    in the Expression Language.  The following implicit objects are

     available (not all illustrated here):

     <ul>

       <li>pageContext - the PageContext object</li>

-      <li>pageScope - a Map that maps page-scoped attribute names to 

+      <li>pageScope - a Map that maps page-scoped attribute names to

           their values</li>

-      <li>requestScope - a Map that maps request-scoped attribute names 

+      <li>requestScope - a Map that maps request-scoped attribute names

           to their values</li>

-      <li>sessionScope - a Map that maps session-scoped attribute names 

+      <li>sessionScope - a Map that maps session-scoped attribute names

           to their values</li>

-      <li>applicationScope - a Map that maps application-scoped attribute 

+      <li>applicationScope - a Map that maps application-scoped attribute

           names to their values</li>

-      <li>param - a Map that maps parameter names to a single String 

+      <li>param - a Map that maps parameter names to a single String

           parameter value</li>

-      <li>paramValues - a Map that maps parameter names to a String[] of 

+      <li>paramValues - a Map that maps parameter names to a String[] of

           all values for that parameter</li>

-      <li>header - a Map that maps header names to a single String 

+      <li>header - a Map that maps header names to a single String

           header value</li>

-      <li>headerValues - a Map that maps header names to a String[] of 

+      <li>headerValues - a Map that maps header names to a String[] of

           all values for that header</li>

-      <li>initParam - a Map that maps context initialization parameter 

+      <li>initParam - a Map that maps context initialization parameter

           names to their String parameter value</li>

       <li>cookie - a Map that maps cookie names to a single Cookie object.</li>

     </ul>

@@ -52,37 +52,37 @@
     <blockquote>

       <u><b>Change Parameter</b></u>

       <form action="implicit-objects.jsp" method="GET">

-	  foo = <input type="text" name="foo" value="${fn:escapeXml(param["foo"])}">

+          foo = <input type="text" name="foo" value="${fn:escapeXml(param["foo"])}">

           <input type="submit">

       </form>

       <br>

       <code>

         <table border="1">

           <thead>

-	    <td><b>EL Expression</b></td>

-	    <td><b>Result</b></td>

-	  </thead>

-	  <tr>

-	    <td>\${param.foo}</td>

-	    <td>${fn:escapeXml(param["foo"])}&nbsp;</td>

-	  </tr>

-	  <tr>

-	    <td>\${param["foo"]}</td>

-	    <td>${fn:escapeXml(param["foo"])}&nbsp;</td>

-	  </tr>

-	  <tr>

-	    <td>\${header["host"]}</td>

-	    <td>${fn:escapeXml(header["host"])}&nbsp;</td>

-	  </tr>

-	  <tr>

-	    <td>\${header["accept"]}</td>

-	    <td>${fn:escapeXml(header["accept"])}&nbsp;</td>

-	  </tr>

-	  <tr>

-	    <td>\${header["user-agent"]}</td>

-	    <td>${fn:escapeXml(header["user-agent"])}&nbsp;</td>

-	  </tr>

-	</table>

+            <td><b>EL Expression</b></td>

+            <td><b>Result</b></td>

+          </thead>

+          <tr>

+            <td>\${param.foo}</td>

+            <td>${fn:escapeXml(param["foo"])}&nbsp;</td>

+          </tr>

+          <tr>

+            <td>\${param["foo"]}</td>

+            <td>${fn:escapeXml(param["foo"])}&nbsp;</td>

+          </tr>

+          <tr>

+            <td>\${header["host"]}</td>

+            <td>${fn:escapeXml(header["host"])}&nbsp;</td>

+          </tr>

+          <tr>

+            <td>\${header["accept"]}</td>

+            <td>${fn:escapeXml(header["accept"])}&nbsp;</td>

+          </tr>

+          <tr>

+            <td>\${header["user-agent"]}</td>

+            <td>${fn:escapeXml(header["user-agent"])}&nbsp;</td>

+          </tr>

+        </table>

       </code>

     </blockquote>

   </body>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/el/implicit-objects.jsp.html b/tomcat-uid/webapps/examples/jsp/jsp2/el/implicit-objects.jsp.html
index a2d9bdc..a036a07 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/el/implicit-objects.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/el/implicit-objects.jsp.html
@@ -1,5 +1,5 @@
 <html><body><pre>

-&lt;!--

+&lt;%--

  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.

@@ -14,7 +14,7 @@
   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.

--->

+--%>

 &lt;%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

 

 &lt;html>

@@ -24,28 +24,28 @@
   &lt;body>

     &lt;h1>JSP 2.0 Expression Language - Implicit Objects&lt;/h1>

     &lt;hr>

-    This example illustrates some of the implicit objects available 

-    in the Expression Lanaguage.  The following implicit objects are 

+    This example illustrates some of the implicit objects available

+    in the Expression Language.  The following implicit objects are

     available (not all illustrated here):

     &lt;ul>

       &lt;li>pageContext - the PageContext object&lt;/li>

-      &lt;li>pageScope - a Map that maps page-scoped attribute names to 

+      &lt;li>pageScope - a Map that maps page-scoped attribute names to

           their values&lt;/li>

-      &lt;li>requestScope - a Map that maps request-scoped attribute names 

+      &lt;li>requestScope - a Map that maps request-scoped attribute names

           to their values&lt;/li>

-      &lt;li>sessionScope - a Map that maps session-scoped attribute names 

+      &lt;li>sessionScope - a Map that maps session-scoped attribute names

           to their values&lt;/li>

-      &lt;li>applicationScope - a Map that maps application-scoped attribute 

+      &lt;li>applicationScope - a Map that maps application-scoped attribute

           names to their values&lt;/li>

-      &lt;li>param - a Map that maps parameter names to a single String 

+      &lt;li>param - a Map that maps parameter names to a single String

           parameter value&lt;/li>

-      &lt;li>paramValues - a Map that maps parameter names to a String[] of 

+      &lt;li>paramValues - a Map that maps parameter names to a String[] of

           all values for that parameter&lt;/li>

-      &lt;li>header - a Map that maps header names to a single String 

+      &lt;li>header - a Map that maps header names to a single String

           header value&lt;/li>

-      &lt;li>headerValues - a Map that maps header names to a String[] of 

+      &lt;li>headerValues - a Map that maps header names to a String[] of

           all values for that header&lt;/li>

-      &lt;li>initParam - a Map that maps context initialization parameter 

+      &lt;li>initParam - a Map that maps context initialization parameter

           names to their String parameter value&lt;/li>

       &lt;li>cookie - a Map that maps cookie names to a single Cookie object.&lt;/li>

     &lt;/ul>

@@ -53,37 +53,37 @@
     &lt;blockquote>

       &lt;u>&lt;b>Change Parameter&lt;/b>&lt;/u>

       &lt;form action="implicit-objects.jsp" method="GET">

-	  foo = &lt;input type="text" name="foo" value="${fn:escapeXml(param["foo"])}">

+          foo = &lt;input type="text" name="foo" value="${fn:escapeXml(param["foo"])}">

           &lt;input type="submit">

       &lt;/form>

       &lt;br>

       &lt;code>

         &lt;table border="1">

           &lt;thead>

-	    &lt;td>&lt;b>EL Expression&lt;/b>&lt;/td>

-	    &lt;td>&lt;b>Result&lt;/b>&lt;/td>

-	  &lt;/thead>

-	  &lt;tr>

-	    &lt;td>\${param.foo}&lt;/td>

-	    &lt;td>${fn:escapeXml(param["foo"])}&amp;nbsp;&lt;/td>

-	  &lt;/tr>

-	  &lt;tr>

-	    &lt;td>\${param["foo"]}&lt;/td>

-	    &lt;td>${fn:escapeXml(param["foo"])}&amp;nbsp;&lt;/td>

-	  &lt;/tr>

-	  &lt;tr>

-	    &lt;td>\${header["host"]}&lt;/td>

-	    &lt;td>${fn:escapeXml(header["host"])}&amp;nbsp;&lt;/td>

-	  &lt;/tr>

-	  &lt;tr>

-	    &lt;td>\${header["accept"]}&lt;/td>

-	    &lt;td>${fn:escapeXml(header["accept"])}&amp;nbsp;&lt;/td>

-	  &lt;/tr>

-	  &lt;tr>

-	    &lt;td>\${header["user-agent"]}&lt;/td>

-	    &lt;td>${fn:escapeXml(header["user-agent"])}&amp;nbsp;&lt;/td>

-	  &lt;/tr>

-	&lt;/table>

+            &lt;td>&lt;b>EL Expression&lt;/b>&lt;/td>

+            &lt;td>&lt;b>Result&lt;/b>&lt;/td>

+          &lt;/thead>

+          &lt;tr>

+            &lt;td>\${param.foo}&lt;/td>

+            &lt;td>${fn:escapeXml(param["foo"])}&amp;nbsp;&lt;/td>

+          &lt;/tr>

+          &lt;tr>

+            &lt;td>\${param["foo"]}&lt;/td>

+            &lt;td>${fn:escapeXml(param["foo"])}&amp;nbsp;&lt;/td>

+          &lt;/tr>

+          &lt;tr>

+            &lt;td>\${header["host"]}&lt;/td>

+            &lt;td>${fn:escapeXml(header["host"])}&amp;nbsp;&lt;/td>

+          &lt;/tr>

+          &lt;tr>

+            &lt;td>\${header["accept"]}&lt;/td>

+            &lt;td>${fn:escapeXml(header["accept"])}&amp;nbsp;&lt;/td>

+          &lt;/tr>

+          &lt;tr>

+            &lt;td>\${header["user-agent"]}&lt;/td>

+            &lt;td>${fn:escapeXml(header["user-agent"])}&amp;nbsp;&lt;/td>

+          &lt;/tr>

+        &lt;/table>

       &lt;/code>

     &lt;/blockquote>

   &lt;/body>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/FooBean.java.html b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/FooBean.java.html
index 0b15181..2711b30 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/FooBean.java.html
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/FooBean.java.html
@@ -21,18 +21,18 @@
 

 public class FooBean {

     private String bar;

-    

+

     public FooBean() {

         bar = "Initial value";

     }

-    

+

     public String getBar() {

         return this.bar;

     }

-    

+

     public void setBar(String bar) {

         this.bar = bar;

     }

-    

+

 }

 </pre></body></html>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/HelloWorldSimpleTag.java.html b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/HelloWorldSimpleTag.java.html
index c409839..6fb9b0d 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/HelloWorldSimpleTag.java.html
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/HelloWorldSimpleTag.java.html
@@ -19,16 +19,18 @@
 

 package jsp2.examples.simpletag;

 

+import java.io.IOException;

+

 import javax.servlet.jsp.JspException;

 import javax.servlet.jsp.tagext.SimpleTagSupport;

-import java.io.IOException;

 

 /**

  * SimpleTag handler that prints "Hello, world!"

  */

 public class HelloWorldSimpleTag extends SimpleTagSupport {

+    @Override

     public void doTag() throws JspException, IOException {

-	getJspContext().getOut().write( "Hello, world!" );

+        getJspContext().getOut().write( "Hello, world!" );

     }

 }

 </pre></body></html>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/ShuffleSimpleTag.java.html b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/ShuffleSimpleTag.java.html
index 1b66d06..806cf7b 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/ShuffleSimpleTag.java.html
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/ShuffleSimpleTag.java.html
@@ -19,22 +19,28 @@
 

 package jsp2.examples.simpletag;

 

+import java.io.IOException;

+import java.util.Random;

+

 import javax.servlet.jsp.JspException;

 import javax.servlet.jsp.tagext.JspFragment;

 import javax.servlet.jsp.tagext.SimpleTagSupport;

-import java.io.IOException;

 

 /**

  * SimpleTag handler that accepts takes three attributes of type

  * JspFragment and invokes then in a random order.

  */

 public class ShuffleSimpleTag extends SimpleTagSupport {

+    // No need for this to use SecureRandom

+    private static Random random = new Random();

+

     private JspFragment fragment1;

     private JspFragment fragment2;

     private JspFragment fragment3;

 

+    @Override

     public void doTag() throws JspException, IOException {

-        switch( (int)(Math.random() * 6) ) {

+        switch(random.nextInt(6)) {

             case 0:

                 fragment1.invoke( null );

                 fragment2.invoke( null );

@@ -71,11 +77,11 @@
     public void setFragment1( JspFragment fragment1 ) {

         this.fragment1 = fragment1;

     }

-    

+

     public void setFragment2( JspFragment fragment2 ) {

         this.fragment2 = fragment2;

     }

-    

+

     public void setFragment3( JspFragment fragment3 ) {

         this.fragment3 = fragment3;

     }

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/TileSimpleTag.java.html b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/TileSimpleTag.java.html
index 4453222..2cd454b 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/TileSimpleTag.java.html
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/TileSimpleTag.java.html
@@ -19,9 +19,10 @@
 

 package jsp2.examples.simpletag;

 

+import java.io.IOException;

+

 import javax.servlet.jsp.JspException;

 import javax.servlet.jsp.tagext.SimpleTagSupport;

-import java.io.IOException;

 

 /**

  * Displays a tile as a single cell in a table.

@@ -30,17 +31,18 @@
     private String color;

     private String label;

 

+    @Override

     public void doTag() throws JspException, IOException {

-	getJspContext().getOut().write( 

-	    "&lt;td width=\"32\" height=\"32\" bgcolor=\"" + this.color + 

-	    "\">&lt;font color=\"#ffffff\">&lt;center>" + this.label + 

+        getJspContext().getOut().write(

+                "&lt;td width=\"32\" height=\"32\" bgcolor=\"" + this.color +

+                "\">&lt;font color=\"#ffffff\">&lt;center>" + this.label +

                 "&lt;/center>&lt;/font>&lt;/td>" );

     }

 

     public void setColor( String color ) {

         this.color = color;

     }

-    

+

     public void setLabel( String label ) {

         this.label = label;

     }

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/jspattribute.jsp b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/jspattribute.jsp
index 64b6d6e..02abbd1 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/jspattribute.jsp
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/jspattribute.jsp
@@ -1,4 +1,4 @@
-<!--

+<%--

  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.

@@ -13,7 +13,7 @@
   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.

--->

+--%>

 <%@ taglib prefix="my" uri="http://tomcat.apache.org/jsp2-example-taglib"%>

 

 <html>

@@ -23,7 +23,7 @@
   <body>

     <h1>JSP 2.0 Examples - jsp:attribute and jsp:body</h1>

     <hr>

-    <p>The new &lt;jsp:attribute&gt; and &lt;jsp:body&gt; 

+    <p>The new &lt;jsp:attribute&gt; and &lt;jsp:body&gt;

     standard actions can be used to specify the value of any standard

     action or custom action attribute.</p>

     <p>This example uses the &lt;jsp:attribute&gt;

@@ -36,7 +36,7 @@
       Bean created!  Setting foo.bar...<br>

       <jsp:setProperty name="foo" property="bar">

         <jsp:attribute name="value">

-	  <my:helloWorld/>

+          <my:helloWorld/>

         </jsp:attribute>

       </jsp:setProperty>

     </jsp:useBean>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/jspattribute.jsp.html b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/jspattribute.jsp.html
index eb3a927..088ed20 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/jspattribute.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/jspattribute.jsp.html
@@ -1,5 +1,5 @@
 <html><body><pre>

-&lt;!--

+&lt;%--

  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.

@@ -14,7 +14,7 @@
   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.

--->

+--%>

 &lt;%@ taglib prefix="my" uri="http://tomcat.apache.org/jsp2-example-taglib"%>

 

 &lt;html>

@@ -24,7 +24,7 @@
   &lt;body>

     &lt;h1>JSP 2.0 Examples - jsp:attribute and jsp:body&lt;/h1>

     &lt;hr>

-    &lt;p>The new &amp;lt;jsp:attribute&amp;gt; and &amp;lt;jsp:body&amp;gt; 

+    &lt;p>The new &amp;lt;jsp:attribute&amp;gt; and &amp;lt;jsp:body&amp;gt;

     standard actions can be used to specify the value of any standard

     action or custom action attribute.&lt;/p>

     &lt;p>This example uses the &amp;lt;jsp:attribute&amp;gt;

@@ -37,7 +37,7 @@
       Bean created!  Setting foo.bar...&lt;br>

       &lt;jsp:setProperty name="foo" property="bar">

         &lt;jsp:attribute name="value">

-	  &lt;my:helloWorld/>

+          &lt;my:helloWorld/>

         &lt;/jsp:attribute>

       &lt;/jsp:setProperty>

     &lt;/jsp:useBean>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/shuffle.jsp b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/shuffle.jsp
index 2a318a7..424af35 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/shuffle.jsp
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/shuffle.jsp
@@ -1,4 +1,4 @@
-<!--

+<%--

  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.

@@ -13,7 +13,7 @@
   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.

--->

+--%>

 <%@ taglib prefix="my" uri="http://tomcat.apache.org/jsp2-example-taglib"%>

 

 <html>

@@ -25,10 +25,10 @@
     <hr>

     <p>Try reloading the page a few times.  Both the rows and the columns

     are shuffled and appear different each time.</p>

-    <p>Here's how the code works.  The SimpleTag handler called 

-    &lt;my:shuffle&gt; accepts three attributes.  Each attribute is a 

+    <p>Here's how the code works.  The SimpleTag handler called

+    &lt;my:shuffle&gt; accepts three attributes.  Each attribute is a

     JSP Fragment, meaning it is a fragment of JSP code that can be

-    dynamically executed by the shuffle tag handler on demand.  The 

+    dynamically executed by the shuffle tag handler on demand.  The

     shuffle tag handler executes the three fragments in a random order.

     To shuffle both the rows and the columns, the shuffle tag is used

     with itself as a parameter.</p>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/shuffle.jsp.html b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/shuffle.jsp.html
index 9329285..231eba6 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/shuffle.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/jspattribute/shuffle.jsp.html
@@ -1,5 +1,5 @@
 <html><body><pre>

-&lt;!--

+&lt;%--

  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.

@@ -14,7 +14,7 @@
   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.

--->

+--%>

 &lt;%@ taglib prefix="my" uri="http://tomcat.apache.org/jsp2-example-taglib"%>

 

 &lt;html>

@@ -26,10 +26,10 @@
     &lt;hr>

     &lt;p>Try reloading the page a few times.  Both the rows and the columns

     are shuffled and appear different each time.&lt;/p>

-    &lt;p>Here's how the code works.  The SimpleTag handler called 

-    &amp;lt;my:shuffle&amp;gt; accepts three attributes.  Each attribute is a 

+    &lt;p>Here's how the code works.  The SimpleTag handler called

+    &amp;lt;my:shuffle&amp;gt; accepts three attributes.  Each attribute is a

     JSP Fragment, meaning it is a fragment of JSP code that can be

-    dynamically executed by the shuffle tag handler on demand.  The 

+    dynamically executed by the shuffle tag handler on demand.  The

     shuffle tag handler executes the three fragments in a random order.

     To shuffle both the rows and the columns, the shuffle tag is used

     with itself as a parameter.&lt;/p>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/jspx/basic.jspx b/tomcat-uid/webapps/examples/jsp/jsp2/jspx/basic.jspx
index 8a5b27d..ba53d8d 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/jspx/basic.jspx
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/jspx/basic.jspx
@@ -17,7 +17,7 @@
 <tags:xhtmlbasic xmlns:tags="urn:jsptagdir:/WEB-INF/tags"

                  xmlns:jsp="http://java.sun.com/JSP/Page"

                  xmlns:fmt="http://java.sun.com/jsp/jstl/fmt"

-		 xmlns="http://www.w3.org/1999/xhtml">

+                 xmlns="http://www.w3.org/1999/xhtml">

   <jsp:directive.page contentType="text/html" />

   <head>

     <title>JSPX - XHTML Basic Example</title>

@@ -26,7 +26,7 @@
     <h1>JSPX - XHTML Basic Example</h1>

     <hr/>

     This example illustrates how to use JSPX to produce an XHTML basic

-    document suitable for use with mobile phones, televisions, 

+    document suitable for use with mobile phones, televisions,

     PDAs, vending machines, pagers, car navigation systems,

     mobile game machines, digital book readers, smart watches, etc.

     <p/>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/jspx/basic.jspx.html b/tomcat-uid/webapps/examples/jsp/jsp2/jspx/basic.jspx.html
index f177334..2116538 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/jspx/basic.jspx.html
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/jspx/basic.jspx.html
@@ -18,7 +18,7 @@
 &lt;tags:xhtmlbasic xmlns:tags="urn:jsptagdir:/WEB-INF/tags"

                  xmlns:jsp="http://java.sun.com/JSP/Page"

                  xmlns:fmt="http://java.sun.com/jsp/jstl/fmt"

-		 xmlns="http://www.w3.org/1999/xhtml">

+                 xmlns="http://www.w3.org/1999/xhtml">

   &lt;jsp:directive.page contentType="text/html" />

   &lt;head>

     &lt;title>JSPX - XHTML Basic Example&lt;/title>

@@ -27,7 +27,7 @@
     &lt;h1>JSPX - XHTML Basic Example&lt;/h1>

     &lt;hr/>

     This example illustrates how to use JSPX to produce an XHTML basic

-    document suitable for use with mobile phones, televisions, 

+    document suitable for use with mobile phones, televisions,

     PDAs, vending machines, pagers, car navigation systems,

     mobile game machines, digital book readers, smart watches, etc.

     &lt;p/>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/jspx/svgexample.html b/tomcat-uid/webapps/examples/jsp/jsp2/jspx/svgexample.html
index 12bcd82..6ef1b44 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/jspx/svgexample.html
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/jspx/svgexample.html
@@ -23,7 +23,7 @@
     <hr>

     This example uses JSP 2.0's new, simplified JSPX syntax to render a

     Scalable Vector Graphics (SVG) document.  When you view the source,

-    notice the lack of a &lt;jsp:root&gt; element!  The text to be rendered 

+    notice the lack of a &lt;jsp:root&gt; element!  The text to be rendered

     can be modified by changing the value of the name parameter.

     <p>

     SVG has many potential uses, such as searchable images, or images

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/jspx/textRotate.jspx b/tomcat-uid/webapps/examples/jsp/jsp2/jspx/textRotate.jspx
index ad97af2..2ade5d1 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/jspx/textRotate.jspx
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/jspx/textRotate.jspx
@@ -14,7 +14,7 @@
   See the License for the specific language governing permissions and

   limitations under the License.

 -->

-<!-- 

+<!--

   - This example is based off the textRotate.svg example that comes

   - with Apache Batik.  The original example was written by Bill Haneman.

   - This version by Mark Roth.

@@ -38,14 +38,14 @@
         <jsp:text>

           <![CDATA[<g opacity="0.95" transform="scale(1.05) rotate(15)">]]>

         </jsp:text>

-        <text x="0" y="0" transform="scale(1.6, 1.6)" fill="DarkSlateBlue" 

-              text-anchor="middle" font-size="40" font-family="Serif" 

+        <text x="0" y="0" transform="scale(1.6, 1.6)" fill="DarkSlateBlue"

+              text-anchor="middle" font-size="40" font-family="Serif"

               id="words">${name}</text>

       </c:forEach>

       <c:forEach var="i" begin="1" end="24">

         <jsp:text><![CDATA[</g>]]></jsp:text>

       </c:forEach>

-      <text style="font-size:75;font-family:Serif;fill:white" 

+      <text style="font-size:75;font-family:Serif;fill:white"

             text-anchor="middle">${name}</text>

     </g>

   </g>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/jspx/textRotate.jspx.html b/tomcat-uid/webapps/examples/jsp/jsp2/jspx/textRotate.jspx.html
index 5846a19..0313838 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/jspx/textRotate.jspx.html
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/jspx/textRotate.jspx.html
@@ -15,7 +15,7 @@
   See the License for the specific language governing permissions and

   limitations under the License.

 -->

-&lt;!-- 

+&lt;!--

   - This example is based off the textRotate.svg example that comes

   - with Apache Batik.  The original example was written by Bill Haneman.

   - This version by Mark Roth.

@@ -39,14 +39,14 @@
         &lt;jsp:text>

           &lt;![CDATA[&lt;g opacity="0.95" transform="scale(1.05) rotate(15)">]]>

         &lt;/jsp:text>

-        &lt;text x="0" y="0" transform="scale(1.6, 1.6)" fill="DarkSlateBlue" 

-              text-anchor="middle" font-size="40" font-family="Serif" 

+        &lt;text x="0" y="0" transform="scale(1.6, 1.6)" fill="DarkSlateBlue"

+              text-anchor="middle" font-size="40" font-family="Serif"

               id="words">${name}&lt;/text>

       &lt;/c:forEach>

       &lt;c:forEach var="i" begin="1" end="24">

         &lt;jsp:text>&lt;![CDATA[&lt;/g>]]>&lt;/jsp:text>

       &lt;/c:forEach>

-      &lt;text style="font-size:75;font-family:Serif;fill:white" 

+      &lt;text style="font-size:75;font-family:Serif;fill:white"

             text-anchor="middle">${name}&lt;/text>

     &lt;/g>

   &lt;/g>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/misc/EchoAttributesTag.java.html b/tomcat-uid/webapps/examples/jsp/jsp2/misc/EchoAttributesTag.java.html
index 4e62250..9b25ba0 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/misc/EchoAttributesTag.java.html
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/misc/EchoAttributesTag.java.html
@@ -19,38 +19,41 @@
 

 package jsp2.examples.simpletag;

 

+import java.io.IOException;

+import java.util.ArrayList;

+

 import javax.servlet.jsp.JspException;

 import javax.servlet.jsp.JspWriter;

-import javax.servlet.jsp.tagext.SimpleTagSupport;

 import javax.servlet.jsp.tagext.DynamicAttributes;

-import java.util.ArrayList;

-import java.io.IOException;

+import javax.servlet.jsp.tagext.SimpleTagSupport;

 

 /**

- * SimpleTag handler that echoes all its attributes 

+ * SimpleTag handler that echoes all its attributes

  */

-public class EchoAttributesTag 

+public class EchoAttributesTag

     extends SimpleTagSupport

     implements DynamicAttributes

 {

-    private ArrayList keys = new ArrayList();

-    private ArrayList values = new ArrayList();

+    private ArrayList&lt;String> keys = new ArrayList&lt;String>();

+    private ArrayList&lt;Object> values = new ArrayList&lt;Object>();

 

+    @Override

     public void doTag() throws JspException, IOException {

-	JspWriter out = getJspContext().getOut();

-	for( int i = 0; i &lt; keys.size(); i++ ) {

-	    String key = (String)keys.get( i );

-	    Object value = values.get( i );

-	    out.println( "&lt;li>" + key + " = " + value + "&lt;/li>" );

+        JspWriter out = getJspContext().getOut();

+        for( int i = 0; i &lt; keys.size(); i++ ) {

+            String key = keys.get( i );

+            Object value = values.get( i );

+            out.println( "&lt;li>" + key + " = " + value + "&lt;/li>" );

         }

     }

 

-    public void setDynamicAttribute( String uri, String localName, 

-	Object value ) 

-	throws JspException

+    @Override

+    public void setDynamicAttribute( String uri, String localName,

+        Object value )

+        throws JspException

     {

-	keys.add( localName );

-	values.add( value );

+        keys.add( localName );

+        values.add( value );

     }

 }

 </pre></body></html>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/misc/config.jsp b/tomcat-uid/webapps/examples/jsp/jsp2/misc/config.jsp
index 7ccf481..51608c7 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/misc/config.jsp
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/misc/config.jsp
@@ -1,4 +1,4 @@
-<!--

+<%--

  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.

@@ -13,18 +13,18 @@
   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.

--->

+--%>

 <%@ taglib prefix="my" uri="http://tomcat.apache.org/jsp2-example-taglib"%>

     <h1>JSP 2.0 Examples - JSP Configuration</h1>

     <hr>

-    <p>Using a &lt;jsp-property-group&gt; element in the web.xml 

+    <p>Using a &lt;jsp-property-group&gt; element in the web.xml

     deployment descriptor, this JSP page has been configured in the

     following ways:</p>

     <ul>

       <li>Uses &lt;include-prelude&gt; to include the top banner.</li>

       <li>Uses &lt;include-coda&gt; to include the bottom banner.</li>

-      <li>Uses &lt;scripting-invalid&gt; true to disable 

-	  &lt;% scripting %&gt; elements</li>

+      <li>Uses &lt;scripting-invalid&gt; true to disable

+          &lt;% scripting %&gt; elements</li>

       <li>Uses &lt;el-ignored&gt; true to disable ${EL} elements</li>

       <li>Uses &lt;page-encoding&gt; ISO-8859-1 to set the page encoding (though this is the default anyway)</li>

     </ul>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/misc/config.jsp.html b/tomcat-uid/webapps/examples/jsp/jsp2/misc/config.jsp.html
index 033f2d2..dbfc450 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/misc/config.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/misc/config.jsp.html
@@ -1,5 +1,5 @@
 <html><body><pre>

-&lt;!--

+&lt;%--

  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.

@@ -14,18 +14,18 @@
   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.

--->

+--%>

 &lt;%@ taglib prefix="my" uri="http://tomcat.apache.org/jsp2-example-taglib"%>

     &lt;h1>JSP 2.0 Examples - JSP Configuration&lt;/h1>

     &lt;hr>

-    &lt;p>Using a &amp;lt;jsp-property-group&amp;gt; element in the web.xml 

+    &lt;p>Using a &amp;lt;jsp-property-group&amp;gt; element in the web.xml

     deployment descriptor, this JSP page has been configured in the

     following ways:&lt;/p>

     &lt;ul>

       &lt;li>Uses &amp;lt;include-prelude&amp;gt; to include the top banner.&lt;/li>

       &lt;li>Uses &amp;lt;include-coda&amp;gt; to include the bottom banner.&lt;/li>

-      &lt;li>Uses &amp;lt;scripting-invalid&amp;gt; true to disable 

-	  &amp;lt;% scripting %&amp;gt; elements&lt;/li>

+      &lt;li>Uses &amp;lt;scripting-invalid&amp;gt; true to disable

+          &amp;lt;% scripting %&amp;gt; elements&lt;/li>

       &lt;li>Uses &amp;lt;el-ignored&amp;gt; true to disable ${EL} elements&lt;/li>

       &lt;li>Uses &amp;lt;page-encoding&amp;gt; ISO-8859-1 to set the page encoding (though this is the default anyway)&lt;/li>

     &lt;/ul>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/misc/dynamicattrs.jsp b/tomcat-uid/webapps/examples/jsp/jsp2/misc/dynamicattrs.jsp
index 637dea9..b351741 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/misc/dynamicattrs.jsp
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/misc/dynamicattrs.jsp
@@ -1,4 +1,4 @@
-<!--

+<%--

  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.

@@ -13,7 +13,7 @@
   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.

--->

+--%>

 <%@ taglib prefix="my" uri="http://tomcat.apache.org/jsp2-example-taglib"%>

 <html>

   <head>

@@ -22,7 +22,7 @@
   <body>

     <h1>JSP 2.0 Examples - Dynamic Attributes</h1>

     <hr>

-    <p>This JSP page invokes a custom tag that accepts a dynamic set 

+    <p>This JSP page invokes a custom tag that accepts a dynamic set

     of attributes.  The tag echoes the name and value of all attributes

     passed to it.</p>

     <hr>

@@ -36,9 +36,9 @@
     </ul>

     <h2>Invocation 3 (three attributes)</h2>

     <ul>

-      <my:echoAttributes dogName="Scruffy" 

-	   		 catName="Fluffy" 

-			 blowfishName="Puffy"/>

+      <my:echoAttributes dogName="Scruffy"

+                         catName="Fluffy"

+                         blowfishName="Puffy"/>

     </ul>

   </body>

 </html>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/misc/dynamicattrs.jsp.html b/tomcat-uid/webapps/examples/jsp/jsp2/misc/dynamicattrs.jsp.html
index ec47c8c..1179f82 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/misc/dynamicattrs.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/misc/dynamicattrs.jsp.html
@@ -1,5 +1,5 @@
 <html><body><pre>

-&lt;!--

+&lt;%--

  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.

@@ -14,7 +14,7 @@
   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.

--->

+--%>

 &lt;%@ taglib prefix="my" uri="http://tomcat.apache.org/jsp2-example-taglib"%>

 &lt;html>

   &lt;head>

@@ -23,7 +23,7 @@
   &lt;body>

     &lt;h1>JSP 2.0 Examples - Dynamic Attributes&lt;/h1>

     &lt;hr>

-    &lt;p>This JSP page invokes a custom tag that accepts a dynamic set 

+    &lt;p>This JSP page invokes a custom tag that accepts a dynamic set

     of attributes.  The tag echoes the name and value of all attributes

     passed to it.&lt;/p>

     &lt;hr>

@@ -37,9 +37,9 @@
     &lt;/ul>

     &lt;h2>Invocation 3 (three attributes)&lt;/h2>

     &lt;ul>

-      &lt;my:echoAttributes dogName="Scruffy" 

-	   		 catName="Fluffy" 

-			 blowfishName="Puffy"/>

+      &lt;my:echoAttributes dogName="Scruffy"

+                         catName="Fluffy"

+                         blowfishName="Puffy"/>

     &lt;/ul>

   &lt;/body>

 &lt;/html>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/BookBean.java.html b/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/BookBean.java.html
index a977a8c..143d754 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/BookBean.java.html
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/BookBean.java.html
@@ -23,7 +23,7 @@
     private String title;

     private String author;

     private String isbn;

-    

+

     public BookBean( String title, String author, String isbn ) {

         this.title = title;

         this.author = author;

@@ -33,14 +33,14 @@
     public String getTitle() {

         return this.title;

     }

-    

+

     public String getAuthor() {

         return this.author;

     }

-    

+

     public String getIsbn() {

         return this.isbn;

     }

-    

+

 }

 </pre></body></html>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/FindBookSimpleTag.java.html b/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/FindBookSimpleTag.java.html
index d010f0a..246df1f 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/FindBookSimpleTag.java.html
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/FindBookSimpleTag.java.html
@@ -21,6 +21,7 @@
 

 import javax.servlet.jsp.JspException;

 import javax.servlet.jsp.tagext.SimpleTagSupport;

+

 import jsp2.examples.BookBean;

 

 /**

@@ -29,18 +30,19 @@
  */

 public class FindBookSimpleTag extends SimpleTagSupport {

     private String var;

-    

+

     private static final String BOOK_TITLE = "The Lord of the Rings";

     private static final String BOOK_AUTHOR = "J. R. R. Tolkein";

     private static final String BOOK_ISBN = "0618002251";

 

+    @Override

     public void doTag() throws JspException {

         BookBean book = new BookBean( BOOK_TITLE, BOOK_AUTHOR, BOOK_ISBN );

         getJspContext().setAttribute( this.var, book );

     }

 

     public void setVar( String var ) {

-	this.var = var;

+        this.var = var;

     }

 }

 </pre></body></html>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/Functions.java.html b/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/Functions.java.html
index 350fce6..91abc75 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/Functions.java.html
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/Functions.java.html
@@ -17,29 +17,31 @@
 */

 package jsp2.examples.el;

 

+import java.util.Locale;

+

 /**

  * Defines the functions for the jsp2 example tag library.

- * 

+ *

  * &lt;p>Each function is defined as a static method.&lt;/p>

  */

 public class Functions {

     public static String reverse( String text ) {

-        return new StringBuffer( text ).reverse().toString();

+        return new StringBuilder( text ).reverse().toString();

     }

 

     public static int numVowels( String text ) {

         String vowels = "aeiouAEIOU";

-	int result = 0;

+        int result = 0;

         for( int i = 0; i &lt; text.length(); i++ ) {

-	    if( vowels.indexOf( text.charAt( i ) ) != -1 ) {

-	        result++;

-	    }

-	}

-	return result;

+            if( vowels.indexOf( text.charAt( i ) ) != -1 ) {

+                result++;

+            }

+        }

+        return result;

     }

 

     public static String caps( String text ) {

-        return text.toUpperCase();

+        return text.toUpperCase(Locale.ENGLISH);

     }

 }

 </pre></body></html>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/HelloWorldSimpleTag.java.html b/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/HelloWorldSimpleTag.java.html
index c409839..6fb9b0d 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/HelloWorldSimpleTag.java.html
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/HelloWorldSimpleTag.java.html
@@ -19,16 +19,18 @@
 

 package jsp2.examples.simpletag;

 

+import java.io.IOException;

+

 import javax.servlet.jsp.JspException;

 import javax.servlet.jsp.tagext.SimpleTagSupport;

-import java.io.IOException;

 

 /**

  * SimpleTag handler that prints "Hello, world!"

  */

 public class HelloWorldSimpleTag extends SimpleTagSupport {

+    @Override

     public void doTag() throws JspException, IOException {

-	getJspContext().getOut().write( "Hello, world!" );

+        getJspContext().getOut().write( "Hello, world!" );

     }

 }

 </pre></body></html>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/RepeatSimpleTag.java.html b/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/RepeatSimpleTag.java.html
index 2ad96eb..852ac2a 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/RepeatSimpleTag.java.html
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/RepeatSimpleTag.java.html
@@ -19,26 +19,28 @@
 

 package jsp2.examples.simpletag;

 

-import javax.servlet.jsp.JspException;

-import javax.servlet.jsp.tagext.SimpleTagSupport;

 import java.io.IOException;

 

+import javax.servlet.jsp.JspException;

+import javax.servlet.jsp.tagext.SimpleTagSupport;

+

 /**

- * SimpleTag handler that accepts a num attribute and 

+ * SimpleTag handler that accepts a num attribute and

  * invokes its body 'num' times.

  */

 public class RepeatSimpleTag extends SimpleTagSupport {

     private int num;

 

+    @Override

     public void doTag() throws JspException, IOException {

         for (int i=0; i&lt;num; i++) {

             getJspContext().setAttribute("count", String.valueOf( i + 1 ) );

-	    getJspBody().invoke(null);

+            getJspBody().invoke(null);

         }

     }

 

     public void setNum(int num) {

-	this.num = num;

+        this.num = num;

     }

 }

 </pre></body></html>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/book.jsp b/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/book.jsp
index 7a9a064..069bd37 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/book.jsp
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/book.jsp
@@ -1,4 +1,4 @@
-<!--

+<%--

  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.

@@ -13,7 +13,7 @@
   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.

--->

+--%>

 <%@ taglib prefix="my" uri="/WEB-INF/jsp2/jsp2-example-taglib.tld" %>

 <html>

   <head>

@@ -22,34 +22,34 @@
   <body>

     <h1>JSP 2.0 Examples - Book SimpleTag Handler</h1>

     <hr>

-    <p>Illustrates a semi-realistic use of SimpleTag and the Expression 

-    Language.  First, a &lt;my:findBook&gt; tag is invoked to populate 

-    the page context with a BookBean.  Then, the books fields are printed 

+    <p>Illustrates a semi-realistic use of SimpleTag and the Expression

+    Language.  First, a &lt;my:findBook&gt; tag is invoked to populate

+    the page context with a BookBean.  Then, the books fields are printed

     in all caps.</p>

     <br>

     <b><u>Result:</u></b><br>

     <my:findBook var="book"/>

     <table border="1">

         <thead>

-	    <td><b>Field</b></td>

-	    <td><b>Value</b></td>

-	    <td><b>Capitalized</b></td>

-	</thead>

-	<tr>

-	    <td>Title</td>

-	    <td>${book.title}</td>

-	    <td>${my:caps(book.title)}</td>

-	</tr>

-	<tr>

-	    <td>Author</td>

-	    <td>${book.author}</td>

-	    <td>${my:caps(book.author)}</td>

-	</tr>

-	<tr>

-	    <td>ISBN</td>

-	    <td>${book.isbn}</td>

-	    <td>${my:caps(book.isbn)}</td>

-	</tr>

+        <td><b>Field</b></td>

+        <td><b>Value</b></td>

+        <td><b>Capitalized</b></td>

+    </thead>

+    <tr>

+        <td>Title</td>

+        <td>${book.title}</td>

+        <td>${my:caps(book.title)}</td>

+    </tr>

+    <tr>

+        <td>Author</td>

+        <td>${book.author}</td>

+        <td>${my:caps(book.author)}</td>

+    </tr>

+    <tr>

+        <td>ISBN</td>

+        <td>${book.isbn}</td>

+        <td>${my:caps(book.isbn)}</td>

+    </tr>

     </table>

   </body>

 </html>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/book.jsp.html b/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/book.jsp.html
index 7ecfe3b..4d242ab 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/book.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/book.jsp.html
@@ -1,5 +1,5 @@
 <html><body><pre>

-&lt;!--

+&lt;%--

  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.

@@ -14,7 +14,7 @@
   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.

--->

+--%>

 &lt;%@ taglib prefix="my" uri="/WEB-INF/jsp2/jsp2-example-taglib.tld" %>

 &lt;html>

   &lt;head>

@@ -23,34 +23,34 @@
   &lt;body>

     &lt;h1>JSP 2.0 Examples - Book SimpleTag Handler&lt;/h1>

     &lt;hr>

-    &lt;p>Illustrates a semi-realistic use of SimpleTag and the Expression 

-    Language.  First, a &amp;lt;my:findBook&amp;gt; tag is invoked to populate 

-    the page context with a BookBean.  Then, the books fields are printed 

+    &lt;p>Illustrates a semi-realistic use of SimpleTag and the Expression

+    Language.  First, a &amp;lt;my:findBook&amp;gt; tag is invoked to populate

+    the page context with a BookBean.  Then, the books fields are printed

     in all caps.&lt;/p>

     &lt;br>

     &lt;b>&lt;u>Result:&lt;/u>&lt;/b>&lt;br>

     &lt;my:findBook var="book"/>

     &lt;table border="1">

         &lt;thead>

-	    &lt;td>&lt;b>Field&lt;/b>&lt;/td>

-	    &lt;td>&lt;b>Value&lt;/b>&lt;/td>

-	    &lt;td>&lt;b>Capitalized&lt;/b>&lt;/td>

-	&lt;/thead>

-	&lt;tr>

-	    &lt;td>Title&lt;/td>

-	    &lt;td>${book.title}&lt;/td>

-	    &lt;td>${my:caps(book.title)}&lt;/td>

-	&lt;/tr>

-	&lt;tr>

-	    &lt;td>Author&lt;/td>

-	    &lt;td>${book.author}&lt;/td>

-	    &lt;td>${my:caps(book.author)}&lt;/td>

-	&lt;/tr>

-	&lt;tr>

-	    &lt;td>ISBN&lt;/td>

-	    &lt;td>${book.isbn}&lt;/td>

-	    &lt;td>${my:caps(book.isbn)}&lt;/td>

-	&lt;/tr>

+        &lt;td>&lt;b>Field&lt;/b>&lt;/td>

+        &lt;td>&lt;b>Value&lt;/b>&lt;/td>

+        &lt;td>&lt;b>Capitalized&lt;/b>&lt;/td>

+    &lt;/thead>

+    &lt;tr>

+        &lt;td>Title&lt;/td>

+        &lt;td>${book.title}&lt;/td>

+        &lt;td>${my:caps(book.title)}&lt;/td>

+    &lt;/tr>

+    &lt;tr>

+        &lt;td>Author&lt;/td>

+        &lt;td>${book.author}&lt;/td>

+        &lt;td>${my:caps(book.author)}&lt;/td>

+    &lt;/tr>

+    &lt;tr>

+        &lt;td>ISBN&lt;/td>

+        &lt;td>${book.isbn}&lt;/td>

+        &lt;td>${my:caps(book.isbn)}&lt;/td>

+    &lt;/tr>

     &lt;/table>

   &lt;/body>

 &lt;/html>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/hello.jsp b/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/hello.jsp
index 4222b2e..d5ebf98 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/hello.jsp
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/hello.jsp
@@ -1,4 +1,4 @@
-<!--

+<%--

  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.

@@ -13,7 +13,7 @@
   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.

--->

+--%>

 <%@ taglib prefix="mytag" uri="/WEB-INF/jsp2/jsp2-example-taglib.tld" %>

 <html>

   <head>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/hello.jsp.html b/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/hello.jsp.html
index c363802..e43a05f 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/hello.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/hello.jsp.html
@@ -1,5 +1,5 @@
 <html><body><pre>

-&lt;!--

+&lt;%--

  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.

@@ -14,7 +14,7 @@
   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.

--->

+--%>

 &lt;%@ taglib prefix="mytag" uri="/WEB-INF/jsp2/jsp2-example-taglib.tld" %>

 &lt;html>

   &lt;head>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/repeat.jsp b/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/repeat.jsp
index 1f3d008..f66bdde 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/repeat.jsp
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/repeat.jsp
@@ -1,4 +1,4 @@
-<!--

+<%--

  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.

@@ -13,7 +13,7 @@
   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.

--->

+--%>

 <%@ taglib prefix="mytag" uri="/WEB-INF/jsp2/jsp2-example-taglib.tld" %>

 <html>

   <head>

@@ -23,11 +23,11 @@
     <h1>JSP 2.0 Examples - Repeat SimpleTag Handler</h1>

     <hr>

     <p>This tag handler accepts a "num" parameter and repeats the body of the

-    tag "num" times.  It's a simple example, but the implementation of 

-    such a tag in JSP 2.0 is substantially simpler than the equivalent 

+    tag "num" times.  It's a simple example, but the implementation of

+    such a tag in JSP 2.0 is substantially simpler than the equivalent

     JSP 1.2-style classic tag handler.</p>

     <p>The body of the tag is encapsulated in a "JSP Fragment" and passed

-    to the tag handler, which then executes it five times, inside a 

+    to the tag handler, which then executes it five times, inside a

     for loop.  The tag handler passes in the current invocation in a

     scoped variable called count, which can be accessed using the EL.</p>

     <br>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/repeat.jsp.html b/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/repeat.jsp.html
index e36b66c..a3bd71e 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/repeat.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/simpletag/repeat.jsp.html
@@ -1,5 +1,5 @@
 <html><body><pre>

-&lt;!--

+&lt;%--

  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.

@@ -14,7 +14,7 @@
   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.

--->

+--%>

 &lt;%@ taglib prefix="mytag" uri="/WEB-INF/jsp2/jsp2-example-taglib.tld" %>

 &lt;html>

   &lt;head>

@@ -24,11 +24,11 @@
     &lt;h1>JSP 2.0 Examples - Repeat SimpleTag Handler&lt;/h1>

     &lt;hr>

     &lt;p>This tag handler accepts a "num" parameter and repeats the body of the

-    tag "num" times.  It's a simple example, but the implementation of 

-    such a tag in JSP 2.0 is substantially simpler than the equivalent 

+    tag "num" times.  It's a simple example, but the implementation of

+    such a tag in JSP 2.0 is substantially simpler than the equivalent

     JSP 1.2-style classic tag handler.&lt;/p>

     &lt;p>The body of the tag is encapsulated in a "JSP Fragment" and passed

-    to the tag handler, which then executes it five times, inside a 

+    to the tag handler, which then executes it five times, inside a

     for loop.  The tag handler passes in the current invocation in a

     scoped variable called count, which can be accessed using the EL.&lt;/p>

     &lt;br>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/tagfiles/displayProducts.tag.html b/tomcat-uid/webapps/examples/jsp/jsp2/tagfiles/displayProducts.tag.html
index 6388336..7898fe2 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/tagfiles/displayProducts.tag.html
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/tagfiles/displayProducts.tag.html
@@ -25,28 +25,28 @@
 

 &lt;table border="1">

   &lt;tr>

-    &lt;td> 

+    &lt;td>

       &lt;c:set var="name" value="Hand-held Color PDA"/>

       &lt;c:set var="price" value="$298.86"/>

       &lt;jsp:invoke fragment="normalPrice"/>

     &lt;/td>

-    &lt;td> 

+    &lt;td>

       &lt;c:set var="name" value="4-Pack 150 Watt Light Bulbs"/>

       &lt;c:set var="origPrice" value="$2.98"/>

       &lt;c:set var="salePrice" value="$2.32"/>

       &lt;jsp:invoke fragment="onSale"/>

     &lt;/td>

-    &lt;td> 

+    &lt;td>

       &lt;c:set var="name" value="Digital Cellular Phone"/>

       &lt;c:set var="price" value="$68.74"/>

       &lt;jsp:invoke fragment="normalPrice"/>

     &lt;/td>

-    &lt;td> 

+    &lt;td>

       &lt;c:set var="name" value="Baby Grand Piano"/>

       &lt;c:set var="price" value="$10,800.00"/>

       &lt;jsp:invoke fragment="normalPrice"/>

     &lt;/td>

-    &lt;td> 

+    &lt;td>

       &lt;c:set var="name" value="Luxury Car w/ Leather Seats"/>

       &lt;c:set var="origPrice" value="$23,980.00"/>

       &lt;c:set var="salePrice" value="$21,070.00"/>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/tagfiles/hello.jsp b/tomcat-uid/webapps/examples/jsp/jsp2/tagfiles/hello.jsp
index e93c7c5..a5d9999 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/tagfiles/hello.jsp
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/tagfiles/hello.jsp
@@ -1,4 +1,4 @@
-<!--

+<%--

  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.

@@ -13,7 +13,7 @@
   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.

--->

+--%>

 <%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>

 <html>

   <head>

@@ -22,7 +22,7 @@
   <body>

     <h1>JSP 2.0 Examples - Hello World Using a Tag File</h1>

     <hr>

-    <p>This JSP page invokes a custom tag that simply echos "Hello, World!"  

+    <p>This JSP page invokes a custom tag that simply echos "Hello, World!"

     The custom tag is generated from a tag file in the /WEB-INF/tags

     directory.</p>

     <p>Notice that we did not need to write a TLD for this tag.  We just

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/tagfiles/hello.jsp.html b/tomcat-uid/webapps/examples/jsp/jsp2/tagfiles/hello.jsp.html
index c3b7b4f..4fbd217 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/tagfiles/hello.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/tagfiles/hello.jsp.html
@@ -1,5 +1,5 @@
 <html><body><pre>

-&lt;!--

+&lt;%--

  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.

@@ -14,7 +14,7 @@
   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.

--->

+--%>

 &lt;%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>

 &lt;html>

   &lt;head>

@@ -23,7 +23,7 @@
   &lt;body>

     &lt;h1>JSP 2.0 Examples - Hello World Using a Tag File&lt;/h1>

     &lt;hr>

-    &lt;p>This JSP page invokes a custom tag that simply echos "Hello, World!"  

+    &lt;p>This JSP page invokes a custom tag that simply echos "Hello, World!"

     The custom tag is generated from a tag file in the /WEB-INF/tags

     directory.&lt;/p>

     &lt;p>Notice that we did not need to write a TLD for this tag.  We just

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/tagfiles/panel.jsp b/tomcat-uid/webapps/examples/jsp/jsp2/tagfiles/panel.jsp
index 4dfc483..56f73b6 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/tagfiles/panel.jsp
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/tagfiles/panel.jsp
@@ -1,4 +1,4 @@
-<!--

+<%--

  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.

@@ -13,7 +13,7 @@
   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.

--->

+--%>

 <%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>

 <html>

   <head>

@@ -22,8 +22,8 @@
   <body>

     <h1>JSP 2.0 Examples - Panels using Tag Files</h1>

     <hr>

-    <p>This JSP page invokes a custom tag that draws a 

-    panel around the contents of the tag body.  Normally, such a tag 

+    <p>This JSP page invokes a custom tag that draws a

+    panel around the contents of the tag body.  Normally, such a tag

     implementation would require a Java class with many println() statements,

     outputting HTML.  Instead, we can use a .tag file as a template,

     and we don't need to write a single line of Java or even a TLD!</p>

@@ -32,25 +32,25 @@
       <tr valign="top">

         <td>

           <tags:panel color="#ff8080" bgcolor="#ffc0c0" title="Panel 1">

-	    First panel.<br/>

-	  </tags:panel>

+            First panel.<br/>

+          </tags:panel>

         </td>

         <td>

           <tags:panel color="#80ff80" bgcolor="#c0ffc0" title="Panel 2">

-	    Second panel.<br/>

-	    Second panel.<br/>

-	    Second panel.<br/>

-	    Second panel.<br/>

-	  </tags:panel>

+            Second panel.<br/>

+            Second panel.<br/>

+            Second panel.<br/>

+            Second panel.<br/>

+          </tags:panel>

         </td>

         <td>

           <tags:panel color="#8080ff" bgcolor="#c0c0ff" title="Panel 3">

-	    Third panel.<br/>

+            Third panel.<br/>

             <tags:panel color="#ff80ff" bgcolor="#ffc0ff" title="Inner">

-	      A panel in a panel.

-	    </tags:panel>

-	    Third panel.<br/>

-	  </tags:panel>

+              A panel in a panel.

+            </tags:panel>

+            Third panel.<br/>

+          </tags:panel>

         </td>

       </tr>

     </table>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/tagfiles/panel.jsp.html b/tomcat-uid/webapps/examples/jsp/jsp2/tagfiles/panel.jsp.html
index 0cc746d..4a8277c 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/tagfiles/panel.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/tagfiles/panel.jsp.html
@@ -1,5 +1,5 @@
 <html><body><pre>

-&lt;!--

+&lt;%--

  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.

@@ -14,7 +14,7 @@
   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.

--->

+--%>

 &lt;%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>

 &lt;html>

   &lt;head>

@@ -23,8 +23,8 @@
   &lt;body>

     &lt;h1>JSP 2.0 Examples - Panels using Tag Files&lt;/h1>

     &lt;hr>

-    &lt;p>This JSP page invokes a custom tag that draws a 

-    panel around the contents of the tag body.  Normally, such a tag 

+    &lt;p>This JSP page invokes a custom tag that draws a

+    panel around the contents of the tag body.  Normally, such a tag

     implementation would require a Java class with many println() statements,

     outputting HTML.  Instead, we can use a .tag file as a template,

     and we don't need to write a single line of Java or even a TLD!&lt;/p>

@@ -33,25 +33,25 @@
       &lt;tr valign="top">

         &lt;td>

           &lt;tags:panel color="#ff8080" bgcolor="#ffc0c0" title="Panel 1">

-	    First panel.&lt;br/>

-	  &lt;/tags:panel>

+            First panel.&lt;br/>

+          &lt;/tags:panel>

         &lt;/td>

         &lt;td>

           &lt;tags:panel color="#80ff80" bgcolor="#c0ffc0" title="Panel 2">

-	    Second panel.&lt;br/>

-	    Second panel.&lt;br/>

-	    Second panel.&lt;br/>

-	    Second panel.&lt;br/>

-	  &lt;/tags:panel>

+            Second panel.&lt;br/>

+            Second panel.&lt;br/>

+            Second panel.&lt;br/>

+            Second panel.&lt;br/>

+          &lt;/tags:panel>

         &lt;/td>

         &lt;td>

           &lt;tags:panel color="#8080ff" bgcolor="#c0c0ff" title="Panel 3">

-	    Third panel.&lt;br/>

+            Third panel.&lt;br/>

             &lt;tags:panel color="#ff80ff" bgcolor="#ffc0ff" title="Inner">

-	      A panel in a panel.

-	    &lt;/tags:panel>

-	    Third panel.&lt;br/>

-	  &lt;/tags:panel>

+              A panel in a panel.

+            &lt;/tags:panel>

+            Third panel.&lt;br/>

+          &lt;/tags:panel>

         &lt;/td>

       &lt;/tr>

     &lt;/table>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/tagfiles/products.jsp b/tomcat-uid/webapps/examples/jsp/jsp2/tagfiles/products.jsp
index 328cc96..23b84f1 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/tagfiles/products.jsp
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/tagfiles/products.jsp
@@ -1,4 +1,4 @@
-<!--

+<%--

  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.

@@ -13,7 +13,7 @@
   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.

--->

+--%>

 <%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>

 <html>

   <head>

@@ -22,7 +22,7 @@
   <body>

     <h1>JSP 2.0 Examples - Display Products Tag File</h1>

     <hr>

-    <p>This JSP page invokes a tag file that displays a listing of 

+    <p>This JSP page invokes a tag file that displays a listing of

     products.  The custom tag accepts two fragments that enable

     customization of appearance.  One for when the product is on sale

     and one for normal price.</p>

@@ -31,23 +31,23 @@
     <h2>Products</h2>

     <tags:displayProducts>

       <jsp:attribute name="normalPrice">

-	Item: ${name}<br/>

-	Price: ${price}

+        Item: ${name}<br/>

+        Price: ${price}

       </jsp:attribute>

       <jsp:attribute name="onSale">

-	Item: ${name}<br/>

-	<font color="red"><strike>Was: ${origPrice}</strike></font><br/>

-	<b>Now: ${salePrice}</b>

+        Item: ${name}<br/>

+        <font color="red"><strike>Was: ${origPrice}</strike></font><br/>

+        <b>Now: ${salePrice}</b>

       </jsp:attribute>

     </tags:displayProducts>

     <hr>

     <h2>Products (Same tag, alternate style)</h2>

     <tags:displayProducts>

       <jsp:attribute name="normalPrice">

-	<b>${name}</b> @ ${price} ea.

+        <b>${name}</b> @ ${price} ea.

       </jsp:attribute>

       <jsp:attribute name="onSale">

-	<b>${name}</b> @ ${salePrice} ea. (was: ${origPrice})

+        <b>${name}</b> @ ${salePrice} ea. (was: ${origPrice})

       </jsp:attribute>

     </tags:displayProducts>

   </body>

diff --git a/tomcat-uid/webapps/examples/jsp/jsp2/tagfiles/products.jsp.html b/tomcat-uid/webapps/examples/jsp/jsp2/tagfiles/products.jsp.html
index f9b6e6f..a081b23 100644
--- a/tomcat-uid/webapps/examples/jsp/jsp2/tagfiles/products.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/jsp2/tagfiles/products.jsp.html
@@ -1,5 +1,5 @@
 <html><body><pre>

-&lt;!--

+&lt;%--

  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.

@@ -14,7 +14,7 @@
   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.

--->

+--%>

 &lt;%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>

 &lt;html>

   &lt;head>

@@ -23,7 +23,7 @@
   &lt;body>

     &lt;h1>JSP 2.0 Examples - Display Products Tag File&lt;/h1>

     &lt;hr>

-    &lt;p>This JSP page invokes a tag file that displays a listing of 

+    &lt;p>This JSP page invokes a tag file that displays a listing of

     products.  The custom tag accepts two fragments that enable

     customization of appearance.  One for when the product is on sale

     and one for normal price.&lt;/p>

@@ -32,23 +32,23 @@
     &lt;h2>Products&lt;/h2>

     &lt;tags:displayProducts>

       &lt;jsp:attribute name="normalPrice">

-	Item: ${name}&lt;br/>

-	Price: ${price}

+        Item: ${name}&lt;br/>

+        Price: ${price}

       &lt;/jsp:attribute>

       &lt;jsp:attribute name="onSale">

-	Item: ${name}&lt;br/>

-	&lt;font color="red">&lt;strike>Was: ${origPrice}&lt;/strike>&lt;/font>&lt;br/>

-	&lt;b>Now: ${salePrice}&lt;/b>

+        Item: ${name}&lt;br/>

+        &lt;font color="red">&lt;strike>Was: ${origPrice}&lt;/strike>&lt;/font>&lt;br/>

+        &lt;b>Now: ${salePrice}&lt;/b>

       &lt;/jsp:attribute>

     &lt;/tags:displayProducts>

     &lt;hr>

     &lt;h2>Products (Same tag, alternate style)&lt;/h2>

     &lt;tags:displayProducts>

       &lt;jsp:attribute name="normalPrice">

-	&lt;b>${name}&lt;/b> @ ${price} ea.

+        &lt;b>${name}&lt;/b> @ ${price} ea.

       &lt;/jsp:attribute>

       &lt;jsp:attribute name="onSale">

-	&lt;b>${name}&lt;/b> @ ${salePrice} ea. (was: ${origPrice})

+        &lt;b>${name}&lt;/b> @ ${salePrice} ea. (was: ${origPrice})

       &lt;/jsp:attribute>

     &lt;/tags:displayProducts>

   &lt;/body>

diff --git a/tomcat-uid/webapps/examples/jsp/jsptoserv/hello.jsp b/tomcat-uid/webapps/examples/jsp/jsptoserv/hello.jsp
index 5f332ec..1b2b9fc 100644
--- a/tomcat-uid/webapps/examples/jsp/jsptoserv/hello.jsp
+++ b/tomcat-uid/webapps/examples/jsp/jsptoserv/hello.jsp
@@ -1,5 +1,4 @@
-<html>

-<!--

+<%--

  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.

@@ -14,7 +13,8 @@
   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.

--->

+--%>

+<html>

 <body bgcolor="white">

 

 <h1>

diff --git a/tomcat-uid/webapps/examples/jsp/jsptoserv/hello.jsp.html b/tomcat-uid/webapps/examples/jsp/jsptoserv/hello.jsp.html
index 44ac35e..d9e6138 100644
--- a/tomcat-uid/webapps/examples/jsp/jsptoserv/hello.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/jsptoserv/hello.jsp.html
@@ -1,6 +1,5 @@
 <html><body><pre>

-&lt;html>

-&lt;!--

+&lt;%--

  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.

@@ -15,7 +14,8 @@
   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.

--->

+--%>

+&lt;html>

 &lt;body bgcolor="white">

 

 &lt;h1>

diff --git a/tomcat-uid/webapps/examples/jsp/jsptoserv/jsptoservlet.jsp b/tomcat-uid/webapps/examples/jsp/jsptoserv/jsptoservlet.jsp
index c08192f..c2a460a 100644
--- a/tomcat-uid/webapps/examples/jsp/jsptoserv/jsptoservlet.jsp
+++ b/tomcat-uid/webapps/examples/jsp/jsptoserv/jsptoservlet.jsp
@@ -1,5 +1,4 @@
-<html>

-<!--

+<%--

  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.

@@ -14,7 +13,8 @@
   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.

--->

+--%>

+<html>

 <body bgcolor="white">

 

 <!-- Forward to a servlet -->

diff --git a/tomcat-uid/webapps/examples/jsp/jsptoserv/jsptoservlet.jsp.html b/tomcat-uid/webapps/examples/jsp/jsptoserv/jsptoservlet.jsp.html
index d694ab4..9e8ea56 100644
--- a/tomcat-uid/webapps/examples/jsp/jsptoserv/jsptoservlet.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/jsptoserv/jsptoservlet.jsp.html
@@ -1,6 +1,5 @@
 <html><body><pre>

-&lt;html>

-&lt;!--

+&lt;%--

  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.

@@ -15,7 +14,8 @@
   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.

--->

+--%>

+&lt;html>

 &lt;body bgcolor="white">

 

 &lt;!-- Forward to a servlet -->

diff --git a/tomcat-uid/webapps/examples/jsp/jsptoserv/jts.html b/tomcat-uid/webapps/examples/jsp/jsptoserv/jts.html
index ec7d5ad..20aa42b 100644
--- a/tomcat-uid/webapps/examples/jsp/jsptoserv/jts.html
+++ b/tomcat-uid/webapps/examples/jsp/jsptoserv/jts.html
@@ -27,7 +27,7 @@
 <h3><a href="jsptoservlet.jsp.html">Source Code for JSP calling servlet <font color="#0000FF"></a>

   </font> </h3>

 

-<h3><a href="servletToJsp.java.html">Source Code for Servlet calling JSP 

+<h3><a href="ServletToJsp.java.html">Source Code for Servlet calling JSP

 <font color="#0000FF"></a> </font> </h3>

 

 </body>

diff --git a/tomcat-uid/webapps/examples/jsp/jsptoserv/servletToJsp.java.html b/tomcat-uid/webapps/examples/jsp/jsptoserv/servletToJsp.java.html
index bf6f249..9e30da5 100644
--- a/tomcat-uid/webapps/examples/jsp/jsptoserv/servletToJsp.java.html
+++ b/tomcat-uid/webapps/examples/jsp/jsptoserv/servletToJsp.java.html
@@ -15,20 +15,27 @@
 * See the License for the specific language governing permissions and

 * limitations under the License.

 */

-import javax.servlet.http.*;

 

-public class servletToJsp extends HttpServlet {

+import javax.servlet.http.HttpServlet;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

 

+public class ServletToJsp extends HttpServlet {

+

+    private static final long serialVersionUID = 1L;

+

+    @Override

     public void doGet (HttpServletRequest request,

-		       HttpServletResponse response) {

+            HttpServletResponse response) {

 

-	try {

-	    // Set the attribute and Forward to hello.jsp

-	    request.setAttribute ("servletName", "servletToJsp");

-	    getServletConfig().getServletContext().getRequestDispatcher("/jsp/jsptoserv/hello.jsp").forward(request, response);

-	} catch (Exception ex) {

-	    ex.printStackTrace ();

-	}

+       try {

+           // Set the attribute and Forward to hello.jsp

+           request.setAttribute ("servletName", "servletToJsp");

+           getServletConfig().getServletContext().getRequestDispatcher(

+                   "/jsp/jsptoserv/hello.jsp").forward(request, response);

+       } catch (Exception ex) {

+           ex.printStackTrace ();

+       }

     }

 }

 </pre></body></html>

diff --git a/tomcat-uid/webapps/examples/jsp/num/numguess.jsp b/tomcat-uid/webapps/examples/jsp/num/numguess.jsp
index cfcf6fb..a30eeb5 100644
--- a/tomcat-uid/webapps/examples/jsp/num/numguess.jsp
+++ b/tomcat-uid/webapps/examples/jsp/num/numguess.jsp
@@ -1,4 +1,4 @@
-<!--

+<%--

  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.

@@ -17,7 +17,7 @@
   Number Guess Game

   Written by Jason Hunter, CTO, K&A Software

   http://www.servlets.com

--->

+--%>

 

 <%@ page import = "num.NumberGuessBean" %>

 

diff --git a/tomcat-uid/webapps/examples/jsp/num/numguess.jsp.html b/tomcat-uid/webapps/examples/jsp/num/numguess.jsp.html
index 01fef5d..3362ac4 100644
--- a/tomcat-uid/webapps/examples/jsp/num/numguess.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/num/numguess.jsp.html
@@ -1,5 +1,5 @@
 <html><body><pre>

-&lt;!--

+&lt;%--

  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.

@@ -18,7 +18,7 @@
   Number Guess Game

   Written by Jason Hunter, CTO, K&amp;A Software

   http://www.servlets.com

--->

+--%>

 

 &lt;%@ page import = "num.NumberGuessBean" %>

 

diff --git a/tomcat-uid/webapps/examples/jsp/plugin/applet/Clock2.class b/tomcat-uid/webapps/examples/jsp/plugin/applet/Clock2.class
index 32fa663..cc968cd 100644
--- a/tomcat-uid/webapps/examples/jsp/plugin/applet/Clock2.class
+++ b/tomcat-uid/webapps/examples/jsp/plugin/applet/Clock2.class
Binary files differ
diff --git a/tomcat-uid/webapps/examples/jsp/plugin/applet/Clock2.java b/tomcat-uid/webapps/examples/jsp/plugin/applet/Clock2.java
index f228b82..ccc96d1 100644
--- a/tomcat-uid/webapps/examples/jsp/plugin/applet/Clock2.java
+++ b/tomcat-uid/webapps/examples/jsp/plugin/applet/Clock2.java
@@ -15,10 +15,13 @@
 * limitations under the License.

 */

 

-import java.util.*;

-import java.awt.*;

-import java.applet.*;

-import java.text.*;

+import java.applet.Applet;

+import java.awt.Color;

+import java.awt.Font;

+import java.awt.Graphics;

+import java.text.SimpleDateFormat;

+import java.util.Date;

+import java.util.Locale;

 

 /**

  * Time!

@@ -27,9 +30,10 @@
  */

 

 public class Clock2 extends Applet implements Runnable {

+    private static final long serialVersionUID = 1L;

     Thread timer;                // The thread that displays clock

     int lastxs, lastys, lastxm,

-        lastym, lastxh, lastyh;  // Dimensions used to draw hands 

+        lastym, lastxh, lastyh;  // Dimensions used to draw hands

     SimpleDateFormat formatter;  // Formats the date displayed

     String lastdate;             // String to hold date displayed

     Font clockFaceFont;          // Font for number display on clock

@@ -37,8 +41,8 @@
     Color handColor;             // Color of main hands and dial

     Color numberColor;           // Color of second hand and numbers

 

+    @Override

     public void init() {

-        int x,y;

         lastxs = lastys = lastxm = lastym = lastxh = lastyh = 0;

         formatter = new SimpleDateFormat ("EEE MMM dd hh:mm:ss yyyy", Locale.getDefault());

         currentDate = new Date();

@@ -96,6 +100,7 @@
     }

 

     // Paint is the main part of the program

+    @Override

     public void paint(Graphics g) {

         int xh, yh, xm, ym, xs, ys, s = 0, m = 10, h = 10, xcenter, ycenter;

         String today;

@@ -112,7 +117,7 @@
             m = Integer.parseInt(formatter.format(currentDate));

         } catch (NumberFormatException n) {

             m = 10;

-        }    

+        }

         formatter.applyPattern("h");

         try {

             h = Integer.parseInt(formatter.format(currentDate));

@@ -123,30 +128,30 @@
         today = formatter.format(currentDate);

         xcenter=80;

         ycenter=55;

-    

+

     // a= s* pi/2 - pi/2 (to switch 0,0 from 3:00 to 12:00)

     // x = r(cos a) + xcenter, y = r(sin a) + ycenter

-    

+

         xs = (int)(Math.cos(s * 3.14f/30 - 3.14f/2) * 45 + xcenter);

         ys = (int)(Math.sin(s * 3.14f/30 - 3.14f/2) * 45 + ycenter);

         xm = (int)(Math.cos(m * 3.14f/30 - 3.14f/2) * 40 + xcenter);

         ym = (int)(Math.sin(m * 3.14f/30 - 3.14f/2) * 40 + ycenter);

         xh = (int)(Math.cos((h*30 + m/2) * 3.14f/180 - 3.14f/2) * 30 + xcenter);

         yh = (int)(Math.sin((h*30 + m/2) * 3.14f/180 - 3.14f/2) * 30 + ycenter);

-    

+

     // Draw the circle and numbers

-    

+

         g.setFont(clockFaceFont);

         g.setColor(handColor);

         circle(xcenter,ycenter,50,g);

         g.setColor(numberColor);

-        g.drawString("9",xcenter-45,ycenter+3); 

+        g.drawString("9",xcenter-45,ycenter+3);

         g.drawString("3",xcenter+40,ycenter+3);

         g.drawString("12",xcenter-5,ycenter-37);

         g.drawString("6",xcenter-3,ycenter+45);

 

     // Erase if necessary, and redraw

-    

+

         g.setColor(getBackground());

         if (xs != lastxs || ys != lastys) {

             g.drawLine(xcenter, ycenter, lastxs, lastys);

@@ -160,7 +165,7 @@
             g.drawLine(xcenter-1, ycenter, lastxh, lastyh); }

         g.setColor(numberColor);

         g.drawString("", 5, 125);

-        g.drawString(today, 5, 125);    

+        g.drawString(today, 5, 125);

         g.drawLine(xcenter, ycenter, xs, ys);

         g.setColor(handColor);

         g.drawLine(xcenter, ycenter-1, xm, ym);

@@ -174,34 +179,40 @@
         currentDate=null;

     }

 

+    @Override

     public void start() {

         timer = new Thread(this);

         timer.start();

     }

 

+    @Override

     public void stop() {

         timer = null;

     }

 

+    @Override

     public void run() {

         Thread me = Thread.currentThread();

         while (timer == me) {

             try {

-                Thread.currentThread().sleep(100);

+                Thread.sleep(100);

             } catch (InterruptedException e) {

             }

             repaint();

         }

     }

 

+    @Override

     public void update(Graphics g) {

         paint(g);

     }

 

+    @Override

     public String getAppletInfo() {

         return "Title: A Clock \nAuthor: Rachel Gollub, 1995 \nAn analog clock.";

     }

-  

+

+    @Override

     public String[][] getParameterInfo() {

         String[][] info = {

             {"bgcolor", "hexadecimal RGB number", "The background color. Default is the color of your browser."},

diff --git a/tomcat-uid/webapps/examples/jsp/plugin/plugin.jsp b/tomcat-uid/webapps/examples/jsp/plugin/plugin.jsp
index 12db7d4..3347f6e 100644
--- a/tomcat-uid/webapps/examples/jsp/plugin/plugin.jsp
+++ b/tomcat-uid/webapps/examples/jsp/plugin/plugin.jsp
@@ -1,5 +1,4 @@
-<html>

-<!--

+<%--

  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.

@@ -14,7 +13,8 @@
   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.

--->

+--%>

+<html>

 <title> Plugin example </title>

 <body bgcolor="white">

 <h3> Current time is : </h3>

@@ -25,7 +25,7 @@
 </jsp:plugin>

 <p>

 <h4>

-<font color=red> 

+<font color=red>

 The above applet is loaded using the Java Plugin from a jsp page using the

 plugin tag.

 </font>

diff --git a/tomcat-uid/webapps/examples/jsp/plugin/plugin.jsp.html b/tomcat-uid/webapps/examples/jsp/plugin/plugin.jsp.html
index b350d5e..121b375 100644
--- a/tomcat-uid/webapps/examples/jsp/plugin/plugin.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/plugin/plugin.jsp.html
@@ -1,6 +1,5 @@
 <html><body><pre>

-&lt;html>

-&lt;!--

+&lt;%--

  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.

@@ -15,7 +14,8 @@
   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.

--->

+--%>

+&lt;html>

 &lt;title> Plugin example &lt;/title>

 &lt;body bgcolor="white">

 &lt;h3> Current time is : &lt;/h3>

@@ -26,7 +26,7 @@
 &lt;/jsp:plugin>

 &lt;p>

 &lt;h4>

-&lt;font color=red> 

+&lt;font color=red>

 The above applet is loaded using the Java Plugin from a jsp page using the

 plugin tag.

 &lt;/font>

diff --git a/tomcat-uid/webapps/examples/jsp/security/protected/error.jsp b/tomcat-uid/webapps/examples/jsp/security/protected/error.jsp
index 50e0ed5..db7a466 100644
--- a/tomcat-uid/webapps/examples/jsp/security/protected/error.jsp
+++ b/tomcat-uid/webapps/examples/jsp/security/protected/error.jsp
@@ -1,4 +1,4 @@
-<!--

+<%--

  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.

@@ -13,7 +13,7 @@
   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.

--->

+--%>

 <html>

 <head>

 <title>Error Page For Examples</title>

diff --git a/tomcat-uid/webapps/examples/jsp/security/protected/error.jsp.html b/tomcat-uid/webapps/examples/jsp/security/protected/error.jsp.html
index d45fb6c..950029e 100644
--- a/tomcat-uid/webapps/examples/jsp/security/protected/error.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/security/protected/error.jsp.html
@@ -1,5 +1,5 @@
 <html><body><pre>

-&lt;!--

+&lt;%--

  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.

@@ -14,7 +14,7 @@
   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.

--->

+--%>

 &lt;html>

 &lt;head>

 &lt;title>Error Page For Examples&lt;/title>

diff --git a/tomcat-uid/webapps/examples/jsp/security/protected/index.jsp b/tomcat-uid/webapps/examples/jsp/security/protected/index.jsp
index bef9700..1d6495c 100644
--- a/tomcat-uid/webapps/examples/jsp/security/protected/index.jsp
+++ b/tomcat-uid/webapps/examples/jsp/security/protected/index.jsp
@@ -1,4 +1,4 @@
-<!--

+<%--

  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.

@@ -13,7 +13,7 @@
   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.

--->

+--%>

 <%

   if (request.getParameter("logoff") != null) {

     session.invalidate();

diff --git a/tomcat-uid/webapps/examples/jsp/security/protected/index.jsp.html b/tomcat-uid/webapps/examples/jsp/security/protected/index.jsp.html
index b8a9a54..399f05c 100644
--- a/tomcat-uid/webapps/examples/jsp/security/protected/index.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/security/protected/index.jsp.html
@@ -1,5 +1,5 @@
 <html><body><pre>

-&lt;!--

+&lt;%--

  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.

@@ -14,7 +14,7 @@
   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.

--->

+--%>

 &lt;%

   if (request.getParameter("logoff") != null) {

     session.invalidate();

diff --git a/tomcat-uid/webapps/examples/jsp/security/protected/login.jsp b/tomcat-uid/webapps/examples/jsp/security/protected/login.jsp
index dc7e50e..8b6d483 100644
--- a/tomcat-uid/webapps/examples/jsp/security/protected/login.jsp
+++ b/tomcat-uid/webapps/examples/jsp/security/protected/login.jsp
@@ -1,4 +1,4 @@
-<!--

+<%--

  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.

@@ -13,7 +13,7 @@
   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.

--->

+--%>

 <html>

 <head>

 <title>Login Page for Examples</title>

diff --git a/tomcat-uid/webapps/examples/jsp/security/protected/login.jsp.html b/tomcat-uid/webapps/examples/jsp/security/protected/login.jsp.html
index 94e16ef..a516764 100644
--- a/tomcat-uid/webapps/examples/jsp/security/protected/login.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/security/protected/login.jsp.html
@@ -1,5 +1,5 @@
 <html><body><pre>

-&lt;!--

+&lt;%--

  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.

@@ -14,7 +14,7 @@
   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.

--->

+--%>

 &lt;html>

 &lt;head>

 &lt;title>Login Page for Examples&lt;/title>

diff --git a/tomcat-uid/webapps/examples/jsp/sessions/carts.html b/tomcat-uid/webapps/examples/jsp/sessions/carts.html
index fe7dbb5..e972327 100644
--- a/tomcat-uid/webapps/examples/jsp/sessions/carts.html
+++ b/tomcat-uid/webapps/examples/jsp/sessions/carts.html
@@ -47,7 +47,7 @@
 <INPUT TYPE=submit name="submit" value="remove">

 

 </form>

-       

+

 </FONT>

 </body>

 </html>

diff --git a/tomcat-uid/webapps/examples/jsp/sessions/carts.jsp b/tomcat-uid/webapps/examples/jsp/sessions/carts.jsp
index e84170a..8847e58 100644
--- a/tomcat-uid/webapps/examples/jsp/sessions/carts.jsp
+++ b/tomcat-uid/webapps/examples/jsp/sessions/carts.jsp
@@ -1,5 +1,4 @@
-<html>

-<!--

+<%--

  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.

@@ -14,26 +13,26 @@
   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.

--->

-

+--%>

+<html>

 <jsp:useBean id="cart" scope="session" class="sessions.DummyCart" />

 

 <jsp:setProperty name="cart" property="*" />

 <%

-	cart.processRequest();

+    cart.processRequest();

 %>

 

 

 <FONT size = 5 COLOR="#CC0000">

 <br> You have the following items in your cart:

 <ol>

-<% 

-	String[] items = cart.getItems();

-	for (int i=0; i<items.length; i++) {

-%>

-<li> <% out.print(util.HTMLFilter.filter(items[i])); %> 

 <%

-	}

+    String[] items = cart.getItems();

+    for (int i=0; i<items.length; i++) {

+%>

+<li> <% out.print(util.HTMLFilter.filter(items[i])); %>

+<%

+    }

 %>

 </ol>

 

diff --git a/tomcat-uid/webapps/examples/jsp/sessions/carts.jsp.html b/tomcat-uid/webapps/examples/jsp/sessions/carts.jsp.html
index 92d40c9..9c7add0 100644
--- a/tomcat-uid/webapps/examples/jsp/sessions/carts.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/sessions/carts.jsp.html
@@ -1,6 +1,5 @@
 <html><body><pre>

-&lt;html>

-&lt;!--

+&lt;%--

  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.

@@ -15,26 +14,26 @@
   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.

--->

-

+--%>

+&lt;html>

 &lt;jsp:useBean id="cart" scope="session" class="sessions.DummyCart" />

 

 &lt;jsp:setProperty name="cart" property="*" />

 &lt;%

-	cart.processRequest();

+    cart.processRequest();

 %>

 

 

 &lt;FONT size = 5 COLOR="#CC0000">

 &lt;br> You have the following items in your cart:

 &lt;ol>

-&lt;% 

-	String[] items = cart.getItems();

-	for (int i=0; i&lt;items.length; i++) {

-%>

-&lt;li> &lt;% out.print(util.HTMLFilter.filter(items[i])); %> 

 &lt;%

-	}

+    String[] items = cart.getItems();

+    for (int i=0; i&lt;items.length; i++) {

+%>

+&lt;li> &lt;% out.print(util.HTMLFilter.filter(items[i])); %>

+&lt;%

+    }

 %>

 &lt;/ol>

 

diff --git a/tomcat-uid/webapps/examples/jsp/simpletag/foo.jsp b/tomcat-uid/webapps/examples/jsp/simpletag/foo.jsp
index 19ff087..a31890c 100644
--- a/tomcat-uid/webapps/examples/jsp/simpletag/foo.jsp
+++ b/tomcat-uid/webapps/examples/jsp/simpletag/foo.jsp
@@ -1,5 +1,4 @@
-<html>

-<!--

+<%--

  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.

@@ -14,9 +13,10 @@
   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.

--->

+--%>

+<html>

 <body>

-<%@ taglib uri="http://tomcat.apache.org/examples-taglib" prefix="eg"%>

+<%@ taglib uri="http://tomcat.apache.org/example-taglib" prefix="eg"%>

 

 Radio stations that rock:

 

diff --git a/tomcat-uid/webapps/examples/jsp/simpletag/foo.jsp.html b/tomcat-uid/webapps/examples/jsp/simpletag/foo.jsp.html
index ce7fb97..30c6272 100644
--- a/tomcat-uid/webapps/examples/jsp/simpletag/foo.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/simpletag/foo.jsp.html
@@ -1,6 +1,5 @@
 <html><body><pre>

-&lt;html>

-&lt;!--

+&lt;%--

  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.

@@ -15,9 +14,10 @@
   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.

--->

+--%>

+&lt;html>

 &lt;body>

-&lt;%@ taglib uri="http://tomcat.apache.org/examples-taglib" prefix="eg"%>

+&lt;%@ taglib uri="http://tomcat.apache.org/example-taglib" prefix="eg"%>

 

 Radio stations that rock:

 

diff --git a/tomcat-uid/webapps/examples/jsp/snp/snoop.jsp b/tomcat-uid/webapps/examples/jsp/snp/snoop.jsp
index 06a3830..500a648 100644
--- a/tomcat-uid/webapps/examples/jsp/snp/snoop.jsp
+++ b/tomcat-uid/webapps/examples/jsp/snp/snoop.jsp
@@ -1,5 +1,4 @@
-<html>

-<!--

+<%--

  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.

@@ -14,8 +13,8 @@
   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.

--->

-

+--%>

+<html>

 <body bgcolor="white">

 <h1> Request Information </h1>

 <font size="4">

@@ -45,7 +44,7 @@
 <br>

 Remote host: <%= util.HTMLFilter.filter(request.getRemoteHost()) %>

 <br>

-Authorization scheme: <%= util.HTMLFilter.filter(request.getAuthType()) %> 

+Authorization scheme: <%= util.HTMLFilter.filter(request.getAuthType()) %>

 <br>

 Locale: <%= request.getLocale() %>

 <hr>

diff --git a/tomcat-uid/webapps/examples/jsp/snp/snoop.jsp.html b/tomcat-uid/webapps/examples/jsp/snp/snoop.jsp.html
index 13025fb..ad7be57 100644
--- a/tomcat-uid/webapps/examples/jsp/snp/snoop.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/snp/snoop.jsp.html
@@ -1,6 +1,5 @@
 <html><body><pre>

-&lt;html>

-&lt;!--

+&lt;%--

  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.

@@ -15,8 +14,8 @@
   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.

--->

-

+--%>

+&lt;html>

 &lt;body bgcolor="white">

 &lt;h1> Request Information &lt;/h1>

 &lt;font size="4">

@@ -46,7 +45,7 @@
 &lt;br>

 Remote host: &lt;%= util.HTMLFilter.filter(request.getRemoteHost()) %>

 &lt;br>

-Authorization scheme: &lt;%= util.HTMLFilter.filter(request.getAuthType()) %> 

+Authorization scheme: &lt;%= util.HTMLFilter.filter(request.getAuthType()) %>

 &lt;br>

 Locale: &lt;%= request.getLocale() %>

 &lt;hr>

diff --git a/tomcat-uid/webapps/examples/jsp/source.jsp b/tomcat-uid/webapps/examples/jsp/source.jsp
index efa329a..12a660c 100644
--- a/tomcat-uid/webapps/examples/jsp/source.jsp
+++ b/tomcat-uid/webapps/examples/jsp/source.jsp
@@ -1,4 +1,4 @@
-<!--

+<%--

  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.

@@ -13,8 +13,8 @@
   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.

--->

-<%@ taglib uri="http://tomcat.apache.org/examples-taglib"

+--%>

+<%@ taglib uri="http://tomcat.apache.org/example-taglib"

         prefix="eg" %>

 

 <eg:ShowSource jspFile="<%= util.HTMLFilter.filter(request.getQueryString()) %>"/>

diff --git a/tomcat-uid/webapps/examples/jsp/source.jsp.html b/tomcat-uid/webapps/examples/jsp/source.jsp.html
index 841dd3f..8c3f367 100644
--- a/tomcat-uid/webapps/examples/jsp/source.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/source.jsp.html
@@ -1,5 +1,5 @@
 <html><body><pre>

-&lt;!--

+&lt;%--

  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.

@@ -14,8 +14,8 @@
   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.

--->

-&lt;%@ taglib uri="http://tomcat.apache.org/examples-taglib"

+--%>

+&lt;%@ taglib uri="http://tomcat.apache.org/example-taglib"

         prefix="eg" %>

 

 &lt;eg:ShowSource jspFile="&lt;%= util.HTMLFilter.filter(request.getQueryString()) %>"/>

diff --git a/tomcat-uid/webapps/examples/jsp/tagplugin/choose.jsp b/tomcat-uid/webapps/examples/jsp/tagplugin/choose.jsp
index 2427249..52a9011 100644
--- a/tomcat-uid/webapps/examples/jsp/tagplugin/choose.jsp
+++ b/tomcat-uid/webapps/examples/jsp/tagplugin/choose.jsp
@@ -1,4 +1,4 @@
-<!--

+<%--

  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.

@@ -13,7 +13,7 @@
   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.

--->

+--%>

 <html>

   <head>

     <title>Tag Examples - choose</title>

@@ -21,38 +21,34 @@
   <body>

     <h1>Tag Plugin Examples - &lt;c:choose></h1>

 

-    <hr>

-    </br>

-    <a href="notes.html">Plugin Introductory Notes<font <font color="#0000FF"></

-a>

+    <hr/>

     <br/>

-    <a href="howto.html">Brief Instructions for Writing Plugins<font color="#000

-0

-FF"></a>

+    <a href="notes.html">Plugin Introductory Notes</a>

+    <br/>

+    <a href="howto.html">Brief Instructions for Writing Plugins</a>

     <br/> <br/>

-    <hr>

+    <hr/>

 

-    <font color="#000000"/>

-    </br>

+    <br/>

 

     <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

 

     <c:forEach var="index" begin="0" end="4">

-      # ${index}: 

+      # ${index}:

       <c:choose>

-	<c:when test="${index == 1}">

-          One!</br>

-	</c:when>

-	<c:when test="${index == 4}">

-          Four!</br>

-	</c:when>

-	<c:when test="${index == 3}">

-          Three!</br>

-	</c:when>

-	<c:otherwise>

-          Huh?</br>

-	</c:otherwise>

+        <c:when test="${index == 1}">

+          One!<br/>

+        </c:when>

+        <c:when test="${index == 4}">

+          Four!<br/>

+        </c:when>

+        <c:when test="${index == 3}">

+          Three!<br/>

+        </c:when>

+        <c:otherwise>

+          Huh?<br/>

+        </c:otherwise>

       </c:choose>

     </c:forEach>

   </body>

-</html> 

+</html>

diff --git a/tomcat-uid/webapps/examples/jsp/tagplugin/choose.jsp.html b/tomcat-uid/webapps/examples/jsp/tagplugin/choose.jsp.html
index d95ab00..5d70ede 100644
--- a/tomcat-uid/webapps/examples/jsp/tagplugin/choose.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/tagplugin/choose.jsp.html
@@ -1,5 +1,5 @@
 <html><body><pre>

-&lt;!--

+&lt;%--

  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.

@@ -14,7 +14,7 @@
   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.

--->

+--%>

 &lt;html>

   &lt;head>

     &lt;title>Tag Examples - choose&lt;/title>

@@ -22,39 +22,35 @@
   &lt;body>

     &lt;h1>Tag Plugin Examples - &amp;lt;c:choose>&lt;/h1>

 

-    &lt;hr>

-    &lt;/br>

-    &lt;a href="notes.html">Plugin Introductory Notes&lt;font &lt;font color="#0000FF">&lt;/

-a>

+    &lt;hr/>

     &lt;br/>

-    &lt;a href="howto.html">Brief Instructions for Writing Plugins&lt;font color="#000

-0

-FF">&lt;/a>

+    &lt;a href="notes.html">Plugin Introductory Notes&lt;/a>

+    &lt;br/>

+    &lt;a href="howto.html">Brief Instructions for Writing Plugins&lt;/a>

     &lt;br/> &lt;br/>

-    &lt;hr>

+    &lt;hr/>

 

-    &lt;font color="#000000"/>

-    &lt;/br>

+    &lt;br/>

 

     &lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

 

     &lt;c:forEach var="index" begin="0" end="4">

-      # ${index}: 

+      # ${index}:

       &lt;c:choose>

-	&lt;c:when test="${index == 1}">

-          One!&lt;/br>

-	&lt;/c:when>

-	&lt;c:when test="${index == 4}">

-          Four!&lt;/br>

-	&lt;/c:when>

-	&lt;c:when test="${index == 3}">

-          Three!&lt;/br>

-	&lt;/c:when>

-	&lt;c:otherwise>

-          Huh?&lt;/br>

-	&lt;/c:otherwise>

+        &lt;c:when test="${index == 1}">

+          One!&lt;br/>

+        &lt;/c:when>

+        &lt;c:when test="${index == 4}">

+          Four!&lt;br/>

+        &lt;/c:when>

+        &lt;c:when test="${index == 3}">

+          Three!&lt;br/>

+        &lt;/c:when>

+        &lt;c:otherwise>

+          Huh?&lt;br/>

+        &lt;/c:otherwise>

       &lt;/c:choose>

     &lt;/c:forEach>

   &lt;/body>

-&lt;/html> 

+&lt;/html>

 </pre></body></html>

diff --git a/tomcat-uid/webapps/examples/jsp/tagplugin/foreach.jsp b/tomcat-uid/webapps/examples/jsp/tagplugin/foreach.jsp
index 135d5ed..a7a57c5 100644
--- a/tomcat-uid/webapps/examples/jsp/tagplugin/foreach.jsp
+++ b/tomcat-uid/webapps/examples/jsp/tagplugin/foreach.jsp
@@ -1,4 +1,4 @@
-<!--

+<%--

  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.

@@ -13,7 +13,7 @@
   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.

--->

+--%>

 <html>

   <head>

     <title>Tag Plugin Examples: forEach</title>

@@ -21,18 +21,15 @@
   <body>

     <h1>Tag Plugin Examples - &lt;c:forEach></h1>

 

-    <hr>

-    </br>

-    <a href="notes.html">Plugin Introductory Notes<font <font color="#0000FF"></

-a>

+    <hr/>

     <br/>

-    <a href="howto.html">Brief Instructions for Writing Plugins<font color="#0000

-FF"></a>

+    <a href="notes.html">Plugin Introductory Notes</a>

+    <br/>

+    <a href="howto.html">Brief Instructions for Writing Plugins</a>

     <br/> <br/>

-    <hr>

+    <hr/>

 

-    <font color="#000000"/>

-    </br>

+    <br/>

 

     <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

     <%@ page import="java.util.Vector" %>

@@ -43,15 +40,15 @@
     </c:forEach>

 

     <% Vector v = new Vector();

-	v.add("One"); v.add("Two"); v.add("Three"); v.add("Four");

+        v.add("One"); v.add("Two"); v.add("Three"); v.add("Four");

 

-	pageContext.setAttribute("vector", v);

+        pageContext.setAttribute("vector", v);

     %>

 

     <h3>Iterating over a Vector</h3>

 

     <c:forEach items="${vector}" var="item" >

-	${item}

+        ${item}

     </c:forEach>

   </body>

-</html> 

+</html>

diff --git a/tomcat-uid/webapps/examples/jsp/tagplugin/foreach.jsp.html b/tomcat-uid/webapps/examples/jsp/tagplugin/foreach.jsp.html
index 1d153c1..1f63f15 100644
--- a/tomcat-uid/webapps/examples/jsp/tagplugin/foreach.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/tagplugin/foreach.jsp.html
@@ -1,5 +1,5 @@
 <html><body><pre>

-&lt;!--

+&lt;%--

  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.

@@ -14,7 +14,7 @@
   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.

--->

+--%>

 &lt;html>

   &lt;head>

     &lt;title>Tag Plugin Examples: forEach&lt;/title>

@@ -22,18 +22,15 @@
   &lt;body>

     &lt;h1>Tag Plugin Examples - &amp;lt;c:forEach>&lt;/h1>

 

-    &lt;hr>

-    &lt;/br>

-    &lt;a href="notes.html">Plugin Introductory Notes&lt;font &lt;font color="#0000FF">&lt;/

-a>

+    &lt;hr/>

     &lt;br/>

-    &lt;a href="howto.html">Brief Instructions for Writing Plugins&lt;font color="#0000

-FF">&lt;/a>

+    &lt;a href="notes.html">Plugin Introductory Notes&lt;/a>

+    &lt;br/>

+    &lt;a href="howto.html">Brief Instructions for Writing Plugins&lt;/a>

     &lt;br/> &lt;br/>

-    &lt;hr>

+    &lt;hr/>

 

-    &lt;font color="#000000"/>

-    &lt;/br>

+    &lt;br/>

 

     &lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

     &lt;%@ page import="java.util.Vector" %>

@@ -44,16 +41,16 @@
     &lt;/c:forEach>

 

     &lt;% Vector v = new Vector();

-	v.add("One"); v.add("Two"); v.add("Three"); v.add("Four");

+        v.add("One"); v.add("Two"); v.add("Three"); v.add("Four");

 

-	pageContext.setAttribute("vector", v);

+        pageContext.setAttribute("vector", v);

     %>

 

     &lt;h3>Iterating over a Vector&lt;/h3>

 

     &lt;c:forEach items="${vector}" var="item" >

-	${item}

+        ${item}

     &lt;/c:forEach>

   &lt;/body>

-&lt;/html> 

+&lt;/html>

 </pre></body></html>

diff --git a/tomcat-uid/webapps/examples/jsp/tagplugin/howto.html b/tomcat-uid/webapps/examples/jsp/tagplugin/howto.html
index 02e746d..a193228 100644
--- a/tomcat-uid/webapps/examples/jsp/tagplugin/howto.html
+++ b/tomcat-uid/webapps/examples/jsp/tagplugin/howto.html
@@ -21,12 +21,12 @@
   <body>

     <h2>How to write tag plugins</h2>

     <p>

-      To write a plugin, you'll need to download the source for Tomcat 5.

+      To write a plugin, you'll need to download the source for Tomcat.

       There are two steps:

     <ol>

       <li>

         Implement the plugin class.<p/>

-        This class, which implements 

+        This class, which implements

         <tt>org.apache.jasper.compiler.tagplugin.TagPlugin</tt>

         instructs Jasper what Java codes to generate in place of the tag

         handler calls.

diff --git a/tomcat-uid/webapps/examples/jsp/tagplugin/if.jsp b/tomcat-uid/webapps/examples/jsp/tagplugin/if.jsp
index ad9414a..70ad14e 100644
--- a/tomcat-uid/webapps/examples/jsp/tagplugin/if.jsp
+++ b/tomcat-uid/webapps/examples/jsp/tagplugin/if.jsp
@@ -1,4 +1,4 @@
-<!--

+<%--

  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.

@@ -13,7 +13,7 @@
   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.

--->

+--%>

 <html>

   <head>

     <title>Tag Plugin Examples: if</title>

@@ -21,25 +21,27 @@
   <body>

     <h1>Tag Plugin Examples - &lt;c:if></h1>

 

-    <hr>

-    </br>

-    <a href="notes.html">Plugin Introductory Notes<font <font color="#0000FF"></a>

+    <hr/>

     <br/>

-    <a href="howto.html">Brief Instructions for Writing Plugins<font color="#0000FF"></a>

+    <a href="notes.html">Plugin Introductory Notes</a>

+    <br/>

+    <a href="howto.html">Brief Instructions for Writing Plugins</a>

     <br/> <br/>

-    <hr>

+    <hr/>

 

-    <font color="#000000"/>

-    </br>

+    <br/>

     <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

 

     <h3>Set the test result to a variable</h3>

-    <c:if test="${1==1}" var="theTruth" scope="session"/>

+    <c:if test="${1==1}" var="theTruth" scope="page"/>

     The result of testing for (1==1) is: ${theTruth}

 

     <h3>Conditionally execute the body</h3>

     <c:if test="${2>0}">

-	It's true that (2>0)!

+        <p>It's true that (2>0)! Working.</p>

+    </c:if>

+    <c:if test="${0>2}">

+        <p>It's not true that (0>2)! Failed.</p>

     </c:if>

   </body>

-</html> 

+</html>

diff --git a/tomcat-uid/webapps/examples/jsp/tagplugin/if.jsp.html b/tomcat-uid/webapps/examples/jsp/tagplugin/if.jsp.html
index efcefe4..ca05498 100644
--- a/tomcat-uid/webapps/examples/jsp/tagplugin/if.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/tagplugin/if.jsp.html
@@ -1,5 +1,5 @@
 <html><body><pre>

-&lt;!--

+&lt;%--

  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.

@@ -14,7 +14,7 @@
   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.

--->

+--%>

 &lt;html>

   &lt;head>

     &lt;title>Tag Plugin Examples: if&lt;/title>

@@ -22,26 +22,28 @@
   &lt;body>

     &lt;h1>Tag Plugin Examples - &amp;lt;c:if>&lt;/h1>

 

-    &lt;hr>

-    &lt;/br>

-    &lt;a href="notes.html">Plugin Introductory Notes&lt;font &lt;font color="#0000FF">&lt;/a>

+    &lt;hr/>

     &lt;br/>

-    &lt;a href="howto.html">Brief Instructions for Writing Plugins&lt;font color="#0000FF">&lt;/a>

+    &lt;a href="notes.html">Plugin Introductory Notes&lt;/a>

+    &lt;br/>

+    &lt;a href="howto.html">Brief Instructions for Writing Plugins&lt;/a>

     &lt;br/> &lt;br/>

-    &lt;hr>

+    &lt;hr/>

 

-    &lt;font color="#000000"/>

-    &lt;/br>

+    &lt;br/>

     &lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

 

     &lt;h3>Set the test result to a variable&lt;/h3>

-    &lt;c:if test="${1==1}" var="theTruth" scope="session"/>

+    &lt;c:if test="${1==1}" var="theTruth" scope="page"/>

     The result of testing for (1==1) is: ${theTruth}

 

     &lt;h3>Conditionally execute the body&lt;/h3>

     &lt;c:if test="${2>0}">

-	It's true that (2>0)!

+        &lt;p>It's true that (2>0)! Working.&lt;/p>

+    &lt;/c:if>

+    &lt;c:if test="${0>2}">

+        &lt;p>It's not true that (0>2)! Failed.&lt;/p>

     &lt;/c:if>

   &lt;/body>

-&lt;/html> 

+&lt;/html>

 </pre></body></html>

diff --git a/tomcat-uid/webapps/examples/jsp/tagplugin/notes.html b/tomcat-uid/webapps/examples/jsp/tagplugin/notes.html
index 281a74c..0b10d40 100644
--- a/tomcat-uid/webapps/examples/jsp/tagplugin/notes.html
+++ b/tomcat-uid/webapps/examples/jsp/tagplugin/notes.html
@@ -21,17 +21,17 @@
   <body>

     <h2>Tag Plugins: Introductory Notes</h2>

     <p>

-      Tomcat 5 provides a framework for implementing tag plugins.  The

+      Tomcat provides a framework for implementing tag plugins.  The

       plugins instruct Jasper, at translation time, to replace tag handler

       calls with Java scriptlets.

       The framework allows tag library authors to implement plugins for

       their tags.

     </p>

     <p>

-      Tomcat 5 is released with plugins for several JSTL tags.  Note

+      Tomcat is released with plugins for several JSTL tags.  Note

       that these plugins work with JSTL 1.1 as well as JSTL 1.0, though

-      the examples uses JSTL 1.1 and JSP 2.0.  

-      These plugins are not complete (for instance, some item types not

+      the examples uses JSTL 1.1 and JSP 2.0.

+      These plugins are not complete (for instance, some item types are not

       handled in &lt;c:if>).

       They do serve as examples to show plugins in action (just

       examine the generated Java files), and how they can be implemented.

diff --git a/tomcat-uid/webapps/examples/jsp/xml/xml.jsp b/tomcat-uid/webapps/examples/jsp/xml/xml.jsp
index e7ff43b..9b0c1fc 100644
--- a/tomcat-uid/webapps/examples/jsp/xml/xml.jsp
+++ b/tomcat-uid/webapps/examples/jsp/xml/xml.jsp
@@ -34,7 +34,7 @@
 </head>

 

 <body>

-This is the output of a simple JSP using XML format. 

+This is the output of a simple JSP using XML format.

 <br />

 

 <div>Use a jsp:scriptlet to loop from 1 to 10: </div>

@@ -56,7 +56,7 @@
 ]]>

 

 <div align="left">

-  Use a jsp:expression to write the date and time in the browser's locale: 

+  Use a jsp:expression to write the date and time in the browser's locale:

   <jsp:expression>getDateTimeStr(request.getLocale())</jsp:expression>

 </div>

 

diff --git a/tomcat-uid/webapps/examples/jsp/xml/xml.jsp.html b/tomcat-uid/webapps/examples/jsp/xml/xml.jsp.html
index 00d2980..b0b8274 100644
--- a/tomcat-uid/webapps/examples/jsp/xml/xml.jsp.html
+++ b/tomcat-uid/webapps/examples/jsp/xml/xml.jsp.html
@@ -35,7 +35,7 @@
 &lt;/head>

 

 &lt;body>

-This is the output of a simple JSP using XML format. 

+This is the output of a simple JSP using XML format.

 &lt;br />

 

 &lt;div>Use a jsp:scriptlet to loop from 1 to 10: &lt;/div>

@@ -57,7 +57,7 @@
 ]]>

 

 &lt;div align="left">

-  Use a jsp:expression to write the date and time in the browser's locale: 

+  Use a jsp:expression to write the date and time in the browser's locale:

   &lt;jsp:expression>getDateTimeStr(request.getLocale())&lt;/jsp:expression>

 &lt;/div>

 

diff --git a/tomcat-uid/webapps/examples/jsp/chat/index.jsp b/tomcat-uid/webapps/examples/servlets/chat/index.jsp
similarity index 98%
rename from tomcat-uid/webapps/examples/jsp/chat/index.jsp
rename to tomcat-uid/webapps/examples/servlets/chat/index.jsp
index b7bc0d0..5a33fcd 100644
--- a/tomcat-uid/webapps/examples/jsp/chat/index.jsp
+++ b/tomcat-uid/webapps/examples/servlets/chat/index.jsp
@@ -1,12 +1,4 @@
-<%@page contentType="text/html; charset=UTF-8" %>

-<% if (session.getAttribute("nickname") == null) {

-    response.sendRedirect("login.jsp");

-    return;

-}

-%>

-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

-<html>

-<!--

+<%--

  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.

@@ -21,7 +13,15 @@
   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.

--->

+--%>

+<%@page contentType="text/html; charset=UTF-8" %>

+<% if (session.getAttribute("nickname") == null) {

+    response.sendRedirect("login.jsp");

+    return;

+}

+%>

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

+<html>

 <head>

    <title>JSP Chat</title>

 </head>

diff --git a/tomcat-uid/webapps/examples/jsp/chat/index.jsp.html b/tomcat-uid/webapps/examples/servlets/chat/index.jsp.html
similarity index 98%
rename from tomcat-uid/webapps/examples/jsp/chat/index.jsp.html
rename to tomcat-uid/webapps/examples/servlets/chat/index.jsp.html
index 0b98ebf..250c249 100644
--- a/tomcat-uid/webapps/examples/jsp/chat/index.jsp.html
+++ b/tomcat-uid/webapps/examples/servlets/chat/index.jsp.html
@@ -1,13 +1,5 @@
 <html><body><pre>

-&lt;%@page contentType="text/html; charset=UTF-8" %>

-&lt;% if (session.getAttribute("nickname") == null) {

-    response.sendRedirect("login.jsp");

-    return;

-}

-%>

-&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

-&lt;html>

-&lt;!--

+&lt;%--

  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.

@@ -22,7 +14,15 @@
   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.

--->

+--%>

+&lt;%@page contentType="text/html; charset=UTF-8" %>

+&lt;% if (session.getAttribute("nickname") == null) {

+    response.sendRedirect("login.jsp");

+    return;

+}

+%>

+&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

+&lt;html>

 &lt;head>

    &lt;title>JSP Chat&lt;/title>

 &lt;/head>

diff --git a/tomcat-uid/webapps/examples/jsp/chat/login.jsp b/tomcat-uid/webapps/examples/servlets/chat/login.jsp
similarity index 98%
rename from tomcat-uid/webapps/examples/jsp/chat/login.jsp
rename to tomcat-uid/webapps/examples/servlets/chat/login.jsp
index e1c6496..8578ac9 100644
--- a/tomcat-uid/webapps/examples/jsp/chat/login.jsp
+++ b/tomcat-uid/webapps/examples/servlets/chat/login.jsp
@@ -1,7 +1,4 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

-<%@page contentType="text/html; charset=UTF-8" %>

-<html>

-<!--

+<%--

  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.

@@ -16,7 +13,10 @@
   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.

--->

+--%>

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<%@page contentType="text/html; charset=UTF-8" %>

+<html>

 <head>

    <title>JSP Chat</title>

 </head>

diff --git a/tomcat-uid/webapps/examples/jsp/chat/login.jsp.html b/tomcat-uid/webapps/examples/servlets/chat/login.jsp.html
similarity index 98%
rename from tomcat-uid/webapps/examples/jsp/chat/login.jsp.html
rename to tomcat-uid/webapps/examples/servlets/chat/login.jsp.html
index d0fbe40..699a939 100644
--- a/tomcat-uid/webapps/examples/jsp/chat/login.jsp.html
+++ b/tomcat-uid/webapps/examples/servlets/chat/login.jsp.html
@@ -1,8 +1,5 @@
 <html><body><pre>

-&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

-&lt;%@page contentType="text/html; charset=UTF-8" %>

-&lt;html>

-&lt;!--

+&lt;%--

  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.

@@ -17,7 +14,10 @@
   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.

--->

+--%>

+&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+&lt;%@page contentType="text/html; charset=UTF-8" %>

+&lt;html>

 &lt;head>

    &lt;title>JSP Chat&lt;/title>

 &lt;/head>

diff --git a/tomcat-uid/webapps/examples/jsp/chat/post.jsp b/tomcat-uid/webapps/examples/servlets/chat/post.jsp
similarity index 99%
rename from tomcat-uid/webapps/examples/jsp/chat/post.jsp
rename to tomcat-uid/webapps/examples/servlets/chat/post.jsp
index cc8134d..91fee7b 100644
--- a/tomcat-uid/webapps/examples/jsp/chat/post.jsp
+++ b/tomcat-uid/webapps/examples/servlets/chat/post.jsp
@@ -1,7 +1,4 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

-<%@page contentType="text/html; charset=UTF-8" %>

-<html>

-<!--

+<%--

  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.

@@ -16,7 +13,10 @@
   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.

--->

+--%>

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<%@page contentType="text/html; charset=UTF-8" %>

+<html>

 <head>

    <title>JSP Chat</title>

 </head>

diff --git a/tomcat-uid/webapps/examples/jsp/chat/post.jsp.html b/tomcat-uid/webapps/examples/servlets/chat/post.jsp.html
similarity index 99%
rename from tomcat-uid/webapps/examples/jsp/chat/post.jsp.html
rename to tomcat-uid/webapps/examples/servlets/chat/post.jsp.html
index 90fa323..2ccfcbc 100644
--- a/tomcat-uid/webapps/examples/jsp/chat/post.jsp.html
+++ b/tomcat-uid/webapps/examples/servlets/chat/post.jsp.html
@@ -1,8 +1,5 @@
 <html><body><pre>

-&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

-&lt;%@page contentType="text/html; charset=UTF-8" %>

-&lt;html>

-&lt;!--

+&lt;%--

  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.

@@ -17,7 +14,10 @@
   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.

--->

+--%>

+&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+&lt;%@page contentType="text/html; charset=UTF-8" %>

+&lt;html>

 &lt;head>

    &lt;title>JSP Chat&lt;/title>

 &lt;/head>

diff --git a/tomcat-uid/webapps/examples/servlets/cookies.html b/tomcat-uid/webapps/examples/servlets/cookies.html
index 659a26d..91ee584 100644
--- a/tomcat-uid/webapps/examples/servlets/cookies.html
+++ b/tomcat-uid/webapps/examples/servlets/cookies.html
@@ -24,7 +24,7 @@
 <p><font color="#0000FF"><a href="servlet/CookieExample"><img src="images/execute.gif" align="right" border="0"></a><a href="index.html"><img src="images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

 <h3>Source Code for Cookie Example<font color="#0000FF"><br>

   </font> </h3>

-<font color="#0000FF"></font> 

+<font color="#0000FF"></font>

 <pre><font color="#0000FF">import</font> java.io.*;

 <font color="#0000FF">import</font> javax.servlet.*;

 <font color="#0000FF">import</font> javax.servlet.http.*;

@@ -36,7 +36,7 @@
     {

         response.setContentType(&quot;<font color="#009900">text/html</font>&quot;);

         PrintWriter out = response.getWriter();

-        

+

         <font color="#CC0000">// print out cookies</font>

 

         Cookie[] cookies = request.getCookies();

diff --git a/tomcat-uid/webapps/examples/servlets/index.html b/tomcat-uid/webapps/examples/servlets/index.html
index b778706..89fbbbe 100644
--- a/tomcat-uid/webapps/examples/servlets/index.html
+++ b/tomcat-uid/webapps/examples/servlets/index.html
@@ -116,6 +116,65 @@
 <p>Note: The source code for these examples does not contain all of the

 source code that is actually in the example, only the important sections

 of code. Code not important to understand the example has been removed

-for clarity.

+for clarity.</p>

+

+<b><u><font size="+1">Other Examples</font></u></b><br>

+<table BORDER=0 CELLSPACING=5 WIDTH="85%" >

+

+<tr>

+  <td colspan="3">Servlet 3.0 Asynchronous processing examples:</td>

+</tr>

+<tr VALIGN=TOP>

+  <td>async0&nbsp;</td>

+  <td VALIGN=TOP WIDTH="30%">

+    <a href="../async/async0"><img SRC="images/execute.gif" HSPACE=4 BORDER=0 align=TOP> Execute</a>

+  </td>

+  <td WIDTH="30%"></td>

+</tr>

+<tr VALIGN=TOP>

+  <td>async1&nbsp;</td>

+  <td VALIGN=TOP WIDTH="30%">

+    <a href="../async/async1"><img SRC="images/execute.gif" HSPACE=4 BORDER=0 align=TOP> Execute</a>

+  </td>

+  <td WIDTH="30%"></td>

+</tr>

+<tr VALIGN=TOP>

+  <td>async2&nbsp;</td>

+  <td VALIGN=TOP WIDTH="30%">

+    <a href="../async/async2"><img SRC="images/execute.gif" HSPACE=4 BORDER=0 align=TOP> Execute</a>

+  </td>

+  <td WIDTH="30%"></td>

+</tr>

+<tr VALIGN=TOP>

+  <td>async3&nbsp;</td>

+  <td VALIGN=TOP WIDTH="30%">

+    <a href="../async/async3"><img SRC="images/execute.gif" HSPACE=4 BORDER=0 align=TOP> Execute</a>

+  </td>

+  <td WIDTH="30%"></td>

+</tr>

+<tr VALIGN=TOP>

+  <td>stockticker&nbsp;</td>

+  <td VALIGN=TOP WIDTH="30%">

+    <a href="../async/stockticker"><img SRC="images/execute.gif" HSPACE=4 BORDER=0 align=TOP> Execute</a>

+  </td>

+  <td WIDTH="30%"></td>

+</tr>

+

+<tr>

+  <td colspan="3">Comet processing example:<br />

+    See the <strong>"Advanced IO"</strong> chapter in the User Guide for

+    details. This example only works with the HTTP NIO or HTTP APR/native

+    connectors as these are the only connectors that support Comet.</td>

+</tr>

+<tr VALIGN=TOP>

+  <td>Comet Chat&nbsp;</td>

+  <td VALIGN=TOP WIDTH="30%">

+    <a href="chat/"><img SRC="images/execute.gif" HSPACE=4 BORDER=0 align=TOP> Execute</a>

+  </td>

+  <td WIDTH="30%"></td>

+</tr>

+

+</table>

+

 </body>

 </html>

diff --git a/tomcat-uid/webapps/examples/servlets/reqinfo.html b/tomcat-uid/webapps/examples/servlets/reqinfo.html
index 4ac664b..97a54ce 100644
--- a/tomcat-uid/webapps/examples/servlets/reqinfo.html
+++ b/tomcat-uid/webapps/examples/servlets/reqinfo.html
@@ -24,7 +24,7 @@
 <p><font color="#0000FF"><a href="servlet/RequestInfoExample"><img src="images/execute.gif" align="right" border="0"></a><a href="index.html"><img src="images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

 <h3>Source Code for Request Info Example<font color="#0000FF"><br>

   </font> </h3>

-<font color="#0000FF"></font> 

+<font color="#0000FF"></font>

 <pre><font color="#0000FF">import</font> java.io.*;

 <font color="#0000FF">import</font> javax.servlet.*;

 <font color="#0000FF">import</font> javax.servlet.http.*;

diff --git a/tomcat-uid/webapps/examples/servlets/reqparams.html b/tomcat-uid/webapps/examples/servlets/reqparams.html
index b0de031..42ec507 100644
--- a/tomcat-uid/webapps/examples/servlets/reqparams.html
+++ b/tomcat-uid/webapps/examples/servlets/reqparams.html
@@ -24,7 +24,7 @@
 <p><font color="#0000FF"><a href="servlet/RequestParamExample"><img src="images/execute.gif" align="right" border="0"></a><a href="index.html"><img src="images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

 <h3>Source Code for Request Parameter Example<font color="#0000FF"><br>

   </font> </h3>

-<font color="#0000FF"></font> 

+<font color="#0000FF"></font>

 <pre><font color="#0000FF">import</font> java.io.*;

 <font color="#0000FF">import</font> java.util.*;

 <font color="#0000FF">import</font> javax.servlet.*;

diff --git a/tomcat-uid/webapps/examples/servlets/sessions.html b/tomcat-uid/webapps/examples/servlets/sessions.html
index 65fc7fd..febef83 100644
--- a/tomcat-uid/webapps/examples/servlets/sessions.html
+++ b/tomcat-uid/webapps/examples/servlets/sessions.html
@@ -24,7 +24,7 @@
 <p><font color="#0000FF"><a href="servlet/SessionExample"><img src="images/execute.gif" align="right" border="0"></a><a href="index.html"><img src="images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

 <h3>Source Code for Session Example<font color="#0000FF"><br>

   </font> </h3>

-<font color="#0000FF"></font> 

+<font color="#0000FF"></font>

 <pre><font color="#0000FF">import</font> java.io.*;

 <font color="#0000FF">import</font> java.util.*;

 <font color="#0000FF">import</font> javax.servlet.*;

@@ -37,7 +37,7 @@
     {

         response.setContentType(&quot;<font color="#009900">text/html</font>&quot;);

         PrintWriter out = response.getWriter();

-        

+

         HttpSession session = request.getSession(true);

 

         <font color="#CC0000">// print session info</font>

diff --git a/tomcat-uid/webapps/examples/websocket-deprecated/chat.html b/tomcat-uid/webapps/examples/websocket-deprecated/chat.html
new file mode 100644
index 0000000..9c49d63
--- /dev/null
+++ b/tomcat-uid/webapps/examples/websocket-deprecated/chat.html
@@ -0,0 +1,125 @@
+<!--

+  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.

+-->

+<!DOCTYPE html>

+<html>

+<head>

+    <title>Apache Tomcat WebSocket Examples: Chat</title>

+    <style type="text/css">

+        input#chat {

+            width: 410px

+        }

+

+        #console-container {

+            width: 400px;

+        }

+

+        #console {

+            border: 1px solid #CCCCCC;

+            border-right-color: #999999;

+            border-bottom-color: #999999;

+            height: 170px;

+            overflow-y: scroll;

+            padding: 5px;

+            width: 100%;

+        }

+

+        #console p {

+            padding: 0;

+            margin: 0;

+        }

+    </style>

+    <script type="text/javascript">

+        var Chat = {};

+

+        Chat.socket = null;

+

+        Chat.connect = (function(host) {

+            if ('WebSocket' in window) {

+                Chat.socket = new WebSocket(host);

+            } else if ('MozWebSocket' in window) {

+                Chat.socket = new MozWebSocket(host);

+            } else {

+                Console.log('Error: WebSocket is not supported by this browser.');

+                return;

+            }

+

+            Chat.socket.onopen = function () {

+                Console.log('Info: WebSocket connection opened.');

+                document.getElementById('chat').onkeydown = function(event) {

+                    if (event.keyCode == 13) {

+                        Chat.sendMessage();

+                    }

+                };

+            };

+

+            Chat.socket.onclose = function () {

+                document.getElementById('chat').onkeydown = null;

+                Console.log('Info: WebSocket closed.');

+            };

+

+            Chat.socket.onmessage = function (message) {

+                Console.log(message.data);

+            };

+        });

+

+        Chat.initialize = function() {

+            if (window.location.protocol == 'http:') {

+                Chat.connect('ws://' + window.location.host + '/examples/websocket/tc7/chat');

+            } else {

+                Chat.connect('wss://' + window.location.host + '/examples/websocket/tc7/chat');

+            }

+        };

+

+        Chat.sendMessage = (function() {

+            var message = document.getElementById('chat').value;

+            if (message != '') {

+                Chat.socket.send(message);

+                document.getElementById('chat').value = '';

+            }

+        });

+

+        var Console = {};

+

+        Console.log = (function(message) {

+            var console = document.getElementById('console');

+            var p = document.createElement('p');

+            p.style.wordWrap = 'break-word';

+            p.innerHTML = message;

+            console.appendChild(p);

+            while (console.childNodes.length > 25) {

+                console.removeChild(console.firstChild);

+            }

+            console.scrollTop = console.scrollHeight;

+        });

+

+        Chat.initialize();

+

+    </script>

+</head>

+<body>

+<noscript><h2 style="color: #ff0000">Seems your browser doesn't support Javascript! Websockets rely on Javascript being enabled. Please enable

+    Javascript and reload this page!</h2></noscript>

+<div>

+    <p>

+        <input type="text" placeholder="type and press enter to chat" id="chat">

+    </p>

+    <div id="console-container">

+        <div id="console"></div>

+    </div>

+</div>

+</body>

+</html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/examples/websocket-deprecated/echo.html b/tomcat-uid/webapps/examples/websocket-deprecated/echo.html
new file mode 100644
index 0000000..51b61a5
--- /dev/null
+++ b/tomcat-uid/webapps/examples/websocket-deprecated/echo.html
@@ -0,0 +1,160 @@
+<!--

+  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.

+-->

+<!DOCTYPE html>

+<html>

+<head>

+    <title>Apache Tomcat WebSocket Examples: Echo</title>

+    <style type="text/css">

+        #connect-container {

+            float: left;

+            width: 400px

+        }

+

+        #connect-container div {

+            padding: 5px;

+        }

+

+        #console-container {

+            float: left;

+            margin-left: 15px;

+            width: 400px;

+        }

+

+        #console {

+            border: 1px solid #CCCCCC;

+            border-right-color: #999999;

+            border-bottom-color: #999999;

+            height: 170px;

+            overflow-y: scroll;

+            padding: 5px;

+            width: 100%;

+        }

+

+        #console p {

+            padding: 0;

+            margin: 0;

+        }

+    </style>

+    <script type="text/javascript">

+        var ws = null;

+

+        function setConnected(connected) {

+            document.getElementById('connect').disabled = connected;

+            document.getElementById('disconnect').disabled = !connected;

+            document.getElementById('echo').disabled = !connected;

+        }

+

+        function connect() {

+            var target = document.getElementById('target').value;

+            if (target == '') {

+                alert('Please select server side connection implementation.');

+                return;

+            }

+            if ('WebSocket' in window) {

+                ws = new WebSocket(target);

+            } else if ('MozWebSocket' in window) {

+                ws = new MozWebSocket(target);

+            } else {

+                alert('WebSocket is not supported by this browser.');

+                return;

+            }

+            ws.onopen = function () {

+                setConnected(true);

+                log('Info: WebSocket connection opened.');

+            };

+            ws.onmessage = function (event) {

+                log('Received: ' + event.data);

+            };

+            ws.onclose = function () {

+                setConnected(false);

+                log('Info: WebSocket connection closed.');

+            };

+        }

+

+        function disconnect() {

+            if (ws != null) {

+                ws.close();

+                ws = null;

+            }

+            setConnected(false);

+        }

+

+        function echo() {

+            if (ws != null) {

+                var message = document.getElementById('message').value;

+                log('Sent: ' + message);

+                ws.send(message);

+            } else {

+                alert('WebSocket connection not established, please connect.');

+            }

+        }

+

+        function updateTarget(target) {

+            if (window.location.protocol == 'http:') {

+                document.getElementById('target').value = 'ws://' + window.location.host + target;

+            } else {

+                document.getElementById('target').value = 'wss://' + window.location.host + target;

+            }

+        }

+

+        function log(message) {

+            var console = document.getElementById('console');

+            var p = document.createElement('p');

+            p.style.wordWrap = 'break-word';

+            p.appendChild(document.createTextNode(message));

+            console.appendChild(p);

+            while (console.childNodes.length > 25) {

+                console.removeChild(console.firstChild);

+            }

+            console.scrollTop = console.scrollHeight;

+        }

+    </script>

+</head>

+<body>

+<noscript><h2 style="color: #ff0000">Seems your browser doesn't support Javascript! Websockets rely on Javascript being enabled. Please enable

+    Javascript and reload this page!</h2></noscript>

+<div>

+    <div id="connect-container">

+        <div>

+            <span>Connect using:</span>

+            <!-- echo example using streams on the server side -->

+            <input id="radio1" type="radio" name="group1" value="/examples/websocket/tc7/echoStream"

+                   onclick="updateTarget(this.value);"> <label for="radio1">streams</label>

+            <!-- echo example using messages on the server side -->

+            <input id="radio2" type="radio" name="group1" value="/examples/websocket/tc7/echoMessage"

+                   onclick="updateTarget(this.value);"> <label for="radio2">messages</label>

+        </div>

+        <div>

+            <input id="target" type="text" size="40" style="width: 350px"/>

+        </div>

+        <div>

+            <button id="connect" onclick="connect();">Connect</button>

+            <button id="disconnect" disabled="disabled" onclick="disconnect();">Disconnect</button>

+        </div>

+        <div>

+            <textarea id="message" style="width: 350px">Here is a message!</textarea>

+        </div>

+        <div>

+            <button id="echo" onclick="echo();" disabled="disabled">Echo message</button>

+        </div>

+    </div>

+    <div id="console-container">

+        <div id="console"></div>

+    </div>

+</div>

+</body>

+</html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/examples/websocket-deprecated/index.html b/tomcat-uid/webapps/examples/websocket-deprecated/index.html
new file mode 100644
index 0000000..6f076e3
--- /dev/null
+++ b/tomcat-uid/webapps/examples/websocket-deprecated/index.html
@@ -0,0 +1,33 @@
+<!--

+  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.

+-->

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<html>

+<head>

+    <meta http-equiv=Content-Type content="text/html">

+    <title>Apache Tomcat Deprecated WebSocket Examples</title>

+</head>

+<body>

+<h3>Apache Tomcat Deprecated WebSocket Examples</h3>

+<ul>

+    <li><a href="echo.html">Echo example</a></li>

+    <li><a href="chat.html">Chat example</a></li>

+    <li><a href="snake.html">Multiplayer snake example</a></li>

+</ul>

+<p>This API has been deprecated. The examples are also available using the JSR

+   356 <a href="../websocket/index.xhtml">Java WebSocket 1.1 API</a>.</p> 

+</body>

+</html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/examples/websocket-deprecated/snake.html b/tomcat-uid/webapps/examples/websocket-deprecated/snake.html
new file mode 100644
index 0000000..d52149e
--- /dev/null
+++ b/tomcat-uid/webapps/examples/websocket-deprecated/snake.html
@@ -0,0 +1,258 @@
+<!--

+  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.

+-->

+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

+<head>

+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

+    <title>Apache Tomcat WebSocket Examples: Multiplayer Snake</title>

+    <style type="text/css">

+        #playground {

+            width: 640px;

+            height: 480px;

+            background-color: #000;

+        }

+

+        #console-container {

+            float: left;

+            margin-left: 15px;

+            width: 300px;

+        }

+

+        #console {

+            border: 1px solid #CCCCCC;

+            border-right-color: #999999;

+            border-bottom-color: #999999;

+            height: 480px;

+            overflow-y: scroll;

+            padding-left: 5px;

+            padding-right: 5px;

+            width: 100%;

+        }

+

+        #console p {

+            padding: 0;

+            margin: 0;

+        }

+    </style>

+</head>

+<body>

+    <noscript><h2 style="color: #ff0000">Seems your browser doesn't support Javascript! Websockets rely on Javascript being enabled. Please enable

+    Javascript and reload this page!</h2></noscript>

+    <div style="float: left">

+        <canvas id="playground" width="640" height="480"></canvas>

+    </div>

+    <div id="console-container">

+        <div id="console"></div>

+    </div>

+    <script type="text/javascript">

+

+        var Game = {};

+

+        Game.fps = 30;

+        Game.socket = null;

+        Game.nextFrame = null;

+        Game.interval = null;

+        Game.direction = 'none';

+        Game.gridSize = 10;

+

+        function Snake() {

+            this.snakeBody = [];

+            this.color = null;

+        }

+

+        Snake.prototype.draw = function(context) {

+            for (var id in this.snakeBody) {

+                context.fillStyle = this.color;

+                context.fillRect(this.snakeBody[id].x, this.snakeBody[id].y, Game.gridSize, Game.gridSize);

+            }

+        };

+

+        Game.initialize = function() {

+            this.entities = [];

+            canvas = document.getElementById('playground');

+            if (!canvas.getContext) {

+                Console.log('Error: 2d canvas not supported by this browser.');

+                return;

+            }

+            this.context = canvas.getContext('2d');

+            window.addEventListener('keydown', function (e) {

+                var code = e.keyCode;

+                if (code > 36 && code < 41) {

+                    switch (code) {

+                        case 37:

+                            if (Game.direction != 'east') Game.setDirection('west');

+                            break;

+                        case 38:

+                            if (Game.direction != 'south') Game.setDirection('north');

+                            break;

+                        case 39:

+                            if (Game.direction != 'west') Game.setDirection('east');

+                            break;

+                        case 40:

+                            if (Game.direction != 'north') Game.setDirection('south');

+                            break;

+                    }

+                }

+            }, false);

+            if (window.location.protocol == 'http:') {

+                Game.connect('ws://' + window.location.host + '/examples/websocket/tc7/snake');

+            } else {

+                Game.connect('wss://' + window.location.host + '/examples/websocket/tc7/snake');

+            }

+        };

+

+        Game.setDirection  = function(direction) {

+            Game.direction = direction;

+            Game.socket.send(direction);

+            Console.log('Sent: Direction ' + direction);

+        };

+

+        Game.startGameLoop = function() {

+            if (window.webkitRequestAnimationFrame) {

+                Game.nextFrame = function () {

+                    webkitRequestAnimationFrame(Game.run);

+                };

+            } else if (window.mozRequestAnimationFrame) {

+                Game.nextFrame = function () {

+                    mozRequestAnimationFrame(Game.run);

+                };

+            } else {

+                Game.interval = setInterval(Game.run, 1000 / Game.fps);

+            }

+            if (Game.nextFrame != null) {

+                Game.nextFrame();

+            }

+        };

+

+        Game.stopGameLoop = function () {

+            Game.nextFrame = null;

+            if (Game.interval != null) {

+                clearInterval(Game.interval);

+            }

+        };

+

+        Game.draw = function() {

+            this.context.clearRect(0, 0, 640, 480);

+            for (var id in this.entities) {

+                this.entities[id].draw(this.context);

+            }

+        };

+

+        Game.addSnake = function(id, color) {

+            Game.entities[id] = new Snake();

+            Game.entities[id].color = color;

+        };

+

+        Game.updateSnake = function(id, snakeBody) {

+            if (typeof Game.entities[id] != "undefined") {

+                Game.entities[id].snakeBody = snakeBody;

+            }

+        };

+

+        Game.removeSnake = function(id) {

+            Game.entities[id] = null;

+            // Force GC.

+            delete Game.entities[id];

+        };

+

+        Game.run = (function() {

+            var skipTicks = 1000 / Game.fps, nextGameTick = (new Date).getTime();

+

+            return function() {

+                while ((new Date).getTime() > nextGameTick) {

+                    nextGameTick += skipTicks;

+                }

+                Game.draw();

+                if (Game.nextFrame != null) {

+                    Game.nextFrame();

+                }

+            };

+        })();

+

+        Game.connect = (function(host) {

+            if ('WebSocket' in window) {

+                Game.socket = new WebSocket(host);

+            } else if ('MozWebSocket' in window) {

+                Game.socket = new MozWebSocket(host);

+            } else {

+                Console.log('Error: WebSocket is not supported by this browser.');

+                return;

+            }

+

+            Game.socket.onopen = function () {

+                // Socket open.. start the game loop.

+                Console.log('Info: WebSocket connection opened.');

+                Console.log('Info: Press an arrow key to begin.');

+                Game.startGameLoop();

+                setInterval(function() {

+                    // Prevent server read timeout.

+                    Game.socket.send('ping');

+                }, 5000);

+            };

+

+            Game.socket.onclose = function () {

+                Console.log('Info: WebSocket closed.');

+                Game.stopGameLoop();

+            };

+

+            Game.socket.onmessage = function (message) {

+                // _Potential_ security hole, consider using json lib to parse data in production.

+                var packet = eval('(' + message.data + ')');

+                switch (packet.type) {

+                    case 'update':

+                        for (var i = 0; i < packet.data.length; i++) {

+                            Game.updateSnake(packet.data[i].id, packet.data[i].body);

+                        }

+                        break;

+                    case 'join':

+                        for (var j = 0; j < packet.data.length; j++) {

+                            Game.addSnake(packet.data[j].id, packet.data[j].color);

+                        }

+                        break;

+                    case 'leave':

+                        Game.removeSnake(packet.id);

+                        break;

+                    case 'dead':

+                        Console.log('Info: Your snake is dead, bad luck!');

+                        Game.direction = 'none';

+                        break;

+                    case 'kill':

+                        Console.log('Info: Head shot!');

+                        break;

+                }

+            };

+        });

+

+        var Console = {};

+

+        Console.log = (function(message) {

+            var console = document.getElementById('console');

+            var p = document.createElement('p');

+            p.style.wordWrap = 'break-word';

+            p.innerHTML = message;

+            console.appendChild(p);

+            while (console.childNodes.length > 25) {

+                console.removeChild(console.firstChild);

+            }

+            console.scrollTop = console.scrollHeight;

+        });

+

+        Game.initialize();

+    </script>

+</body>

+</html>

diff --git a/tomcat-uid/webapps/examples/websocket/chat.xhtml b/tomcat-uid/webapps/examples/websocket/chat.xhtml
new file mode 100644
index 0000000..5e31dab
--- /dev/null
+++ b/tomcat-uid/webapps/examples/websocket/chat.xhtml
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+  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.

+-->

+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

+<head>

+    <title>Apache Tomcat WebSocket Examples: Chat</title>

+    <style type="text/css"><![CDATA[

+        input#chat {

+            width: 410px

+        }

+

+        #console-container {

+            width: 400px;

+        }

+

+        #console {

+            border: 1px solid #CCCCCC;

+            border-right-color: #999999;

+            border-bottom-color: #999999;

+            height: 170px;

+            overflow-y: scroll;

+            padding: 5px;

+            width: 100%;

+        }

+

+        #console p {

+            padding: 0;

+            margin: 0;

+        }

+    ]]></style>

+    <script type="application/javascript"><![CDATA[

+        var Chat = {};

+

+        Chat.socket = null;

+

+        Chat.connect = (function(host) {

+            if ('WebSocket' in window) {

+                Chat.socket = new WebSocket(host);

+            } else if ('MozWebSocket' in window) {

+                Chat.socket = new MozWebSocket(host);

+            } else {

+                Console.log('Error: WebSocket is not supported by this browser.');

+                return;

+            }

+

+            Chat.socket.onopen = function () {

+                Console.log('Info: WebSocket connection opened.');

+                document.getElementById('chat').onkeydown = function(event) {

+                    if (event.keyCode == 13) {

+                        Chat.sendMessage();

+                    }

+                };

+            };

+

+            Chat.socket.onclose = function () {

+                document.getElementById('chat').onkeydown = null;

+                Console.log('Info: WebSocket closed.');

+            };

+

+            Chat.socket.onmessage = function (message) {

+                Console.log(message.data);

+            };

+        });

+

+        Chat.initialize = function() {

+            if (window.location.protocol == 'http:') {

+                Chat.connect('ws://' + window.location.host + '/examples/websocket/chat');

+            } else {

+                Chat.connect('wss://' + window.location.host + '/examples/websocket/chat');

+            }

+        };

+

+        Chat.sendMessage = (function() {

+            var message = document.getElementById('chat').value;

+            if (message != '') {

+                Chat.socket.send(message);

+                document.getElementById('chat').value = '';

+            }

+        });

+

+        var Console = {};

+

+        Console.log = (function(message) {

+            var console = document.getElementById('console');

+            var p = document.createElement('p');

+            p.style.wordWrap = 'break-word';

+            p.innerHTML = message;

+            console.appendChild(p);

+            while (console.childNodes.length > 25) {

+                console.removeChild(console.firstChild);

+            }

+            console.scrollTop = console.scrollHeight;

+        });

+

+        Chat.initialize();

+

+

+        document.addEventListener("DOMContentLoaded", function() {

+            // Remove elements with "noscript" class - <noscript> is not allowed in XHTML

+            var noscripts = document.getElementsByClassName("noscript");

+            for (var i = 0; i < noscripts.length; i++) {

+                noscripts[i].parentNode.removeChild(noscripts[i]);

+            }

+        }, false);

+

+    ]]></script>

+</head>

+<body>

+<div class="noscript"><h2 style="color: #ff0000">Seems your browser doesn't support Javascript! Websockets rely on Javascript being enabled. Please enable

+    Javascript and reload this page!</h2></div>

+<div>

+    <p>

+        <input type="text" placeholder="type and press enter to chat" id="chat" />

+    </p>

+    <div id="console-container">

+        <div id="console"/>

+    </div>

+</div>

+</body>

+</html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/examples/websocket/drawboard.xhtml b/tomcat-uid/webapps/examples/websocket/drawboard.xhtml
new file mode 100644
index 0000000..342bef4
--- /dev/null
+++ b/tomcat-uid/webapps/examples/websocket/drawboard.xhtml
@@ -0,0 +1,897 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+  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.

+-->

+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

+<head>

+    <title>Apache Tomcat WebSocket Examples: Drawboard</title>

+    <style type="text/css"><![CDATA[

+

+        body {

+            font-family: Arial, sans-serif;

+            font-size: 11pt;

+            background-color: #eeeeea;

+            padding: 10px;

+        }

+

+        #console-container {

+            float: left;

+            background-color: #fff;

+            width: 250px;

+        }

+

+        #console {

+            font-size: 10pt;

+            height: 600px;

+            overflow-y: scroll;

+            padding-left: 5px;

+            padding-right: 5px;

+        }

+

+        #console p {

+            padding: 0;

+            margin: 0;

+        }

+

+        #drawContainer {

+            float: left;

+            display: none;

+            margin-right: 25px;

+        }

+

+        #drawContainer canvas {

+            display: block;

+            -ms-touch-action: none;

+            touch-action: none; /* Disable touch behaviors, like pan and zoom */

+            cursor: crosshair;

+        }

+

+        #labelContainer {

+            margin-bottom: 15px;

+        }

+

+        #drawContainer, #console-container {

+            box-shadow: 0px 0px 8px 3px #bbb;

+            border: 1px solid #CCCCCC;

+        }

+

+    ]]></style>

+    <script type="application/javascript"><![CDATA[

+    "use strict";

+

+    (function() {

+

+        document.addEventListener("DOMContentLoaded", function() {

+            // Remove elements with "noscript" class - <noscript> is not

+            // allowed in XHTML

+            var noscripts = document.getElementsByClassName("noscript");

+            for (var i = 0; i < noscripts.length; i++) {

+                noscripts[i].parentNode.removeChild(noscripts[i]);

+            }

+

+            // Add script for expand content.

+            var expandElements = document.getElementsByClassName("expand");

+            for (var ixx = 0; ixx < expandElements.length; ixx++) {

+                (function(el) {

+                    var expandContent = document.getElementById(el.getAttribute("data-content-id"));

+                    expandContent.style.display = "none";

+                    var arrow = document.createTextNode("◢ ");

+                    var arrowSpan = document.createElement("span");

+                    arrowSpan.appendChild(arrow);

+

+                    var link = document.createElement("a");

+                    link.setAttribute("href", "#!");

+                    while (el.firstChild != null) {

+                        link.appendChild(el.removeChild(el.firstChild));

+                    }

+                    el.appendChild(arrowSpan);

+                    el.appendChild(link);

+

+                    var textSpan = document.createElement("span");

+                    textSpan.setAttribute("style", "font-weight: normal;");

+                    textSpan.appendChild(document.createTextNode(" (click to expand)"));

+                    el.appendChild(textSpan);

+

+

+                    var visible = true;

+

+                    var switchExpand = function() {

+                        visible = !visible;

+                        expandContent.style.display = visible ? "block" : "none";

+                        arrowSpan.style.color = visible ? "#000" : "#888";

+                        return false;

+                    };

+

+                    link.onclick = switchExpand;

+                    switchExpand();

+

+                })(expandElements[ixx]);

+            }

+

+

+            var Console = {};

+

+            Console.log = (function() {

+                var consoleContainer =

+                    document.getElementById("console-container");

+                var console = document.createElement("div");

+                console.setAttribute("id", "console");

+                consoleContainer.appendChild(console);

+

+                return function(message) {

+                    var p = document.createElement('p');

+                    p.style.wordWrap = "break-word";

+                    p.appendChild(document.createTextNode(message));

+                    console.appendChild(p);

+                    while (console.childNodes.length > 25) {

+                        console.removeChild(console.firstChild);

+                    }

+                    console.scrollTop = console.scrollHeight;

+                }

+            })();

+

+

+            function Room(drawContainer) {

+

+                /* A pausable event forwarder that can be used to pause and

+                 * resume handling of events (e.g. when we need to wait

+                 * for a Image's load event before we can process further

+                 * WebSocket messages).

+                 * The object's callFunction(func) should be called from an

+                 * event handler and give the function to handle the event as

+                 * argument.

+                 * Call pauseProcessing() to suspend event forwarding and

+                 * resumeProcessing() to resume it.

+                 */

+                function PausableEventForwarder() {

+

+                    var pauseProcessing = false;

+                    // Queue for buffering functions to be called.

+                    var functionQueue = [];

+

+                    this.callFunction = function(func) {

+                        // If message processing is paused, we push it

+                        // into the queue - otherwise we process it directly.

+                        if (pauseProcessing) {

+                            functionQueue.push(func);

+                        } else {

+                            func();

+                        }

+                    };

+

+                    this.pauseProcessing = function() {

+                        pauseProcessing = true;

+                    };

+

+                    this.resumeProcessing = function() {

+                        pauseProcessing = false;

+

+                        // Process all queued functions until some handler calls

+                        // pauseProcessing() again.

+                        while (functionQueue.length > 0 && !pauseProcessing) {

+                            var func = functionQueue.pop();

+                            func();

+                        }

+                    };

+                }

+

+                // The WebSocket object.

+                var socket;

+                // ID of the timer which sends ping messages.

+                var pingTimerId;

+

+                var isStarted = false;

+                var playerCount = 0;

+

+                // An array of PathIdContainer objects that the server

+                // did not yet handle.

+                // They are ordered by id (ascending).

+                var pathsNotHandled = [];

+

+                var nextMsgId = 1;

+

+                var canvasDisplay = document.createElement("canvas");

+                var canvasBackground = document.createElement("canvas");

+                var canvasServerImage = document.createElement("canvas");

+                var canvasArray = [canvasDisplay, canvasBackground,

+                    canvasServerImage];

+                canvasDisplay.addEventListener("mousedown", function(e) {

+                    // Prevent default mouse event to prevent browsers from marking text

+                    // (and Chrome from displaying the "text" cursor).

+                    e.preventDefault();

+                }, false);

+

+                var labelPlayerCount = document.createTextNode("0");

+                var optionContainer = document.createElement("div");

+

+

+                var canvasDisplayCtx = canvasDisplay.getContext("2d");

+                var canvasBackgroundCtx = canvasBackground.getContext("2d");

+                var canvasServerImageCtx = canvasServerImage.getContext("2d");

+                var canvasMouseMoveHandler;

+                var canvasMouseDownHandler;

+

+                var isActive = false;

+                var mouseInWindow = false;

+                var mouseDown = false;

+                var currentMouseX = 0, currentMouseY = 0;

+                var currentPreviewPath = null;

+

+                var availableColors = [];

+                var currentColorIndex;

+                var colorContainers;

+                var previewTransparency = 0.65;

+

+                var availableThicknesses = [2, 3, 6, 10, 16, 28, 50];

+                var currentThicknessIndex;

+                var thicknessContainers;

+

+                var availableDrawTypes = [

+                           { name: "Brush", id: 1, continuous: true },

+                           { name: "Line", id: 2, continuous: false },

+                           { name: "Rectangle", id: 3, continuous: false },

+                           { name: "Ellipse", id: 4, continuous: false }

+                ];

+                var currentDrawTypeIndex;

+                var drawTypeContainers;

+

+

+                var labelContainer = document.getElementById("labelContainer");

+                var placeholder = document.createElement("div");

+                placeholder.appendChild(document.createTextNode("Loading... "));

+                var progressElem = document.createElement("progress");

+                placeholder.appendChild(progressElem);

+

+                labelContainer.appendChild(placeholder);

+

+                function rgb(color) {

+                       return "rgba(" + color[0] + "," + color[1] + ","

+                               + color[2] + "," + color[3] + ")";

+                   }

+

+                function PathIdContainer(path, id) {

+                    this.path = path;

+                    this.id = id;

+                }

+

+                function Path(type, color, thickness, x1, y1, x2, y2, lastInChain) {

+                    this.type = type;

+                    this.color = color;

+                    this.thickness = thickness;

+                    this.x1 = x1;

+                    this.y1 = y1;

+                    this.x2 = x2;

+                    this.y2 = y2;

+                    this.lastInChain = lastInChain;

+

+                    function ellipse(ctx, x, y, w, h) {

+                        /* Drawing a ellipse cannot be done directly in a

+                         * CanvasRenderingContext2D - we need to use drawArc()

+                         * in conjunction with scaling the context so that we

+                         * get the needed proportion.

+                         */

+                        ctx.save();

+

+                        // Translate and scale the context so that we can draw

+                        // an arc at (0, 0) with a radius of 1.

+                        ctx.translate(x + w / 2, y + h / 2);

+                        ctx.scale(w / 2, h / 2);

+

+                        ctx.beginPath();

+                        ctx.arc(0, 0, 1, 0, Math.PI * 2, false);

+

+                        ctx.restore();

+                    }

+

+                    this.draw = function(ctx) {

+                        ctx.beginPath();

+                        ctx.lineCap = "round";

+                        ctx.lineWidth = thickness;

+                        var style = rgb(color);

+                        ctx.strokeStyle = style;

+

+                        if (x1 == x2 && y1 == y2) {

+                            // Always draw as arc to meet the behavior

+                            // in Java2D.

+                            ctx.fillStyle = style;

+                            ctx.arc(x1, y1, thickness / 2.0, 0,

+                                    Math.PI * 2.0, false);

+                            ctx.fill();

+                        } else {

+                            if (type == 1 || type == 2) {

+                                // Draw a line.

+                                ctx.moveTo(x1, y1);

+                                ctx.lineTo(x2, y2);

+                                ctx.stroke();

+                            } else if (type == 3) {

+                                // Draw a rectangle.

+                                if (x1 == x2 || y1 == y2) {

+                                    // Draw as line

+                                    ctx.moveTo(x1, y1);

+                                    ctx.lineTo(x2, y2);

+                                    ctx.stroke();

+                                } else {

+                                    ctx.strokeRect(x1, y1, x2 - x1, y2 - y1);

+                                }

+                            } else if (type == 4) {

+                                // Draw a ellipse.

+                                ellipse(ctx, x1, y1, x2 - x1, y2 - y1);

+                                ctx.closePath();

+                                ctx.stroke();

+                            }

+                        }

+                    };

+                }

+

+

+                function connect() {

+                    var host = (window.location.protocol == "https:"

+                            ? "wss://" : "ws://") + window.location.host

+                            + "/examples/websocket/drawboard";

+                    socket = new WebSocket(host);

+

+                    /* Use a pausable event forwarder.

+                     * This is needed when we load an Image object with data

+                     * from a previous message, because we must wait until the

+                     * Image's load event it raised before we can use it (and

+                     * in the meantime the socket.message event could be

+                     * raised).

+                     * Therefore we need this pausable event handler to handle

+                     * e.g. socket.onmessage and socket.onclose.

+                     */

+                    var eventForwarder = new PausableEventForwarder();

+

+                    socket.onopen = function () {

+                        // Socket has opened. Now wait for the server to

+                        // send us the initial packet.

+                        Console.log("WebSocket connection opened.");

+

+                        // Set up a timer for pong messages.

+                        pingTimerId = window.setInterval(function() {

+                            socket.send("0");

+                        }, 30000);

+                    };

+

+                    socket.onclose = function () {

+                        eventForwarder.callFunction(function() {

+                            Console.log("WebSocket connection closed.");

+                            disableControls();

+

+                            // Disable pong timer.

+                            window.clearInterval(pingTimerId);

+                        });

+                    };

+

+                    // Handles an incoming Websocket message.

+                    var handleOnMessage = function(message) {

+

+                        // Split joined message and process them

+                        // individually.

+                        var messages = message.data.split(";");

+                        for (var msgArrIdx = 0; msgArrIdx < messages.length;

+                                msgArrIdx++) {

+                            var msg = messages[msgArrIdx];

+                            var type = msg.substring(0, 1);

+

+                            if (type == "0") {

+                                // Error message.

+                                var error = msg.substring(1);

+                                // Log it to the console and show an alert.

+                                Console.log("Error: " + error);

+                                alert(error);

+

+                            } else {

+                                if (!isStarted) {

+                                    if (type == "2") {

+                                        // Initial message. It contains the

+                                        // number of players.

+                                        // After this message we will receive

+                                        // a binary message containing the current

+                                        // room image as PNG.

+                                        playerCount = parseInt(msg.substring(1));

+

+                                        refreshPlayerCount();

+

+                                        // The next message will be a binary

+                                        // message containing the room images

+                                        // as PNG. Therefore we temporarily swap

+                                        // the message handler.

+                                        var originalHandler = handleOnMessage;

+                                        handleOnMessage = function(message) {

+                                            // First, we restore the original handler.

+                                            handleOnMessage = originalHandler;

+

+                                            // Read the image.

+                                            var blob = message.data;

+                                            // Create new blob with correct MIME type.

+                                            blob = new Blob([blob], {type : "image/png"});

+

+                                            var url = URL.createObjectURL(blob);

+

+                                            var img = new Image();

+

+                                            // We must wait until the onload event is

+                                            // raised until we can draw the image onto

+                                            // the canvas.

+                                            // Therefore we need to pause the event

+                                            // forwarder until the image is loaded.

+                                            eventForwarder.pauseProcessing();

+

+                                            img.onload = function() {

+

+                                                // Release the object URL.

+                                                URL.revokeObjectURL(url);

+

+                                                // Set the canvases to the correct size.

+                                                for (var i = 0; i < canvasArray.length; i++) {

+                                                    canvasArray[i].width = img.width;

+                                                    canvasArray[i].height = img.height;

+                                                }

+

+                                                // Now draw the image on the last canvas.

+                                                canvasServerImageCtx.clearRect(0, 0,

+                                                        canvasServerImage.width,

+                                                        canvasServerImage.height);

+                                                canvasServerImageCtx.drawImage(img, 0, 0);

+

+                                                // Draw it on the background canvas.

+                                                canvasBackgroundCtx.drawImage(canvasServerImage,

+                                                        0, 0);

+

+                                                isStarted = true;

+                                                startControls();

+

+                                                // Refresh the display canvas.

+                                                refreshDisplayCanvas();

+

+

+                                                // Finally, resume the event forwarder.

+                                                eventForwarder.resumeProcessing();

+                                            };

+

+                                            img.src = url;

+                                        };

+                                    }

+                                } else {

+                                    if (type == "3") {

+                                        // The number of players in this room changed.

+                                        var playerAdded = msg.substring(1) == "+";

+                                        playerCount += playerAdded ? 1 : -1;

+                                        refreshPlayerCount();

+

+                                        Console.log("Player " + (playerAdded

+                                                ? "joined." : "left."));

+

+                                    } else if (type == "1") {

+                                        // We received a new DrawMessage.

+                                        var maxLastHandledId = -1;

+                                        var drawMessages = msg.substring(1).split("|");

+                                        for (var i = 0; i < drawMessages.length; i++) {

+                                            var elements = drawMessages[i].split(",");

+                                            var lastHandledId = parseInt(elements[0]);

+                                               maxLastHandledId = Math.max(maxLastHandledId,

+                                                       lastHandledId);

+

+                                            var path = new Path(

+                                                    parseInt(elements[1]),

+                                                    [parseInt(elements[2]),

+                                                    parseInt(elements[3]),

+                                                    parseInt(elements[4]),

+                                                    parseInt(elements[5]) / 255.0],

+                                                    parseFloat(elements[6]),

+                                                    parseFloat(elements[7]),

+                                                    parseFloat(elements[8]),

+                                                    parseFloat(elements[9]),

+                                                    parseFloat(elements[10]),

+                                                    elements[11] != "0");

+

+                                            // Draw the path onto the last canvas.

+                                            path.draw(canvasServerImageCtx);

+                                        }

+

+                                        // Draw the last canvas onto the background one.

+                                        canvasBackgroundCtx.drawImage(canvasServerImage,

+                                                0, 0);

+

+                                        // Now go through the pathsNotHandled array and

+                                        // remove the paths that were already handled by

+                                        // the server.

+                                        while (pathsNotHandled.length > 0

+                                                && pathsNotHandled[0].id <= maxLastHandledId)

+                                            pathsNotHandled.shift();

+

+                                        // Now me must draw the remaining paths onto

+                                        // the background canvas.

+                                        for (var i = 0; i < pathsNotHandled.length; i++) {

+                                            pathsNotHandled[i].path.draw(canvasBackgroundCtx);

+                                        }

+

+                                        refreshDisplayCanvas();

+                                    }

+                                }

+                            }

+                        }

+                    };

+

+                    socket.onmessage = function(message) {

+                        eventForwarder.callFunction(function() {

+                            handleOnMessage(message);

+                        });

+                    };

+

+                }

+

+

+                function refreshPlayerCount() {

+                    labelPlayerCount.nodeValue = String(playerCount);

+                }

+

+                function refreshDisplayCanvas() {

+                    if (!isActive) { // Don't draw a curser when not active.

+                        return;

+                    }

+

+                    canvasDisplayCtx.drawImage(canvasBackground, 0, 0);

+                    if (currentPreviewPath != null) {

+                        // Draw the preview path.

+                        currentPreviewPath.draw(canvasDisplayCtx);

+

+                    } else if (mouseInWindow && !mouseDown) {

+                        canvasDisplayCtx.beginPath();

+                        var color = availableColors[currentColorIndex].slice(0);

+                        color[3] = previewTransparency;

+                        canvasDisplayCtx.fillStyle = rgb(color);

+

+                        canvasDisplayCtx.arc(currentMouseX, currentMouseY,

+                                availableThicknesses[currentThicknessIndex] / 2,

+                                0, Math.PI * 2.0, true);

+                        canvasDisplayCtx.fill();

+                    }

+

+                }

+

+                function startControls() {

+                    isActive = true;

+

+                    labelContainer.removeChild(placeholder);

+                    placeholder = undefined;

+

+                    labelContainer.appendChild(

+                            document.createTextNode("Number of Players: "));

+                    labelContainer.appendChild(labelPlayerCount);

+

+

+                    drawContainer.style.display = "block";

+                    drawContainer.appendChild(canvasDisplay);

+

+                    drawContainer.appendChild(optionContainer);

+                    

+                    canvasMouseDownHandler = function(e) {

+                        if (e.button == 0) {

+                            currentMouseX = e.pageX - canvasDisplay.offsetLeft;

+                            currentMouseY = e.pageY - canvasDisplay.offsetTop;

+

+                            mouseDown = true;

+                            canvasMouseMoveHandler(e);

+

+                        } else if (mouseDown) {

+                            // Cancel drawing.

+                            mouseDown = false;

+                            currentPreviewPath = null;

+

+                            currentMouseX = e.pageX - canvasDisplay.offsetLeft;

+                            currentMouseY = e.pageY - canvasDisplay.offsetTop;

+

+                            refreshDisplayCanvas();

+                        }

+                    };

+                    canvasDisplay.addEventListener("mousedown", canvasMouseDownHandler, false);

+

+                    canvasMouseMoveHandler = function(e) {

+                        var mouseX = e.pageX - canvasDisplay.offsetLeft;

+                        var mouseY = e.pageY - canvasDisplay.offsetTop;

+

+                        if (mouseDown) {

+                            var drawType = availableDrawTypes[currentDrawTypeIndex];

+

+                            if (drawType.continuous) {

+

+                                var path = new Path(drawType.id,

+                                        availableColors[currentColorIndex],

+                                        availableThicknesses[currentThicknessIndex],

+                                        currentMouseX, currentMouseY, mouseX,

+                                        mouseY, false);

+                                // Draw it on the background canvas.

+                                path.draw(canvasBackgroundCtx);

+

+                                // Send it to the sever.

+                                pushPath(path);

+

+                                // Refresh old coordinates

+                                currentMouseX = mouseX;

+                                currentMouseY = mouseY;

+

+                            } else {

+                                // Create a new preview path.

+                                var color = availableColors[currentColorIndex].slice(0);

+                                color[3] = previewTransparency;

+                                currentPreviewPath = new Path(drawType.id,

+                                        color,

+                                        availableThicknesses[currentThicknessIndex],

+                                        currentMouseX, currentMouseY, mouseX,

+                                        mouseY, false);

+                            }

+

+                            refreshDisplayCanvas();

+                        } else {

+                            currentMouseX = mouseX;

+                            currentMouseY = mouseY;

+

+                            if (mouseInWindow) {

+                                refreshDisplayCanvas();

+                            }

+                        }

+

+                    };

+                    document.addEventListener("mousemove", canvasMouseMoveHandler, false);

+

+                    document.addEventListener("mouseup", function(e) {

+                        if (e.button == 0) {

+                            if (mouseDown) {

+                                mouseDown = false;

+                                currentPreviewPath = null;

+

+                                var mouseX = e.pageX - canvasDisplay.offsetLeft;

+                                var mouseY = e.pageY - canvasDisplay.offsetTop;

+                                var drawType = availableDrawTypes[currentDrawTypeIndex];

+

+                                var path = new Path(drawType.id, availableColors[currentColorIndex],

+                                        availableThicknesses[currentThicknessIndex],

+                                        currentMouseX, currentMouseY, mouseX,

+                                        mouseY, true);

+                                // Draw it on the background canvas.

+                                path.draw(canvasBackgroundCtx);

+

+                                // Send it to the sever.

+                                pushPath(path);

+

+                                // Refresh old coordinates

+                                currentMouseX = mouseX;

+                                currentMouseY = mouseY;

+

+                                refreshDisplayCanvas();

+                            }

+                        }

+                    }, false);

+

+                    canvasDisplay.addEventListener("mouseout", function(e) {

+                        mouseInWindow = false;

+                        refreshDisplayCanvas();

+                    }, false);

+

+                    canvasDisplay.addEventListener("mousemove", function(e) {

+                        if (!mouseInWindow) {

+                            mouseInWindow = true;

+                            refreshDisplayCanvas();

+                        }

+                    }, false);

+

+

+                    // Create color and thickness controls.

+                    var colorContainersBox = document.createElement("div");

+                    colorContainersBox.setAttribute("style",

+                            "margin: 4px; border: 1px solid #bbb; border-radius: 3px;");

+                    optionContainer.appendChild(colorContainersBox);

+

+                    colorContainers = new Array(3 * 3 * 3);

+                    for (var i = 0; i < colorContainers.length; i++) {

+                        var colorContainer = colorContainers[i] =

+                            document.createElement("div");

+                        var color = availableColors[i] =

+                            [

+                                Math.floor((i % 3) * 255 / 2),

+                                Math.floor((Math.floor(i / 3) % 3) * 255 / 2),

+                                Math.floor((Math.floor(i / (3 * 3)) % 3) * 255 / 2),

+                                1.0

+                            ];

+                        colorContainer.setAttribute("style",

+                                "margin: 3px; width: 18px; height: 18px; "

+                                + "float: left; background-color: " + rgb(color));

+                        colorContainer.style.border = '2px solid #000';

+                        colorContainer.addEventListener("mousedown", (function(ix) {

+                            return function() {

+                                setColor(ix);

+                            };

+                        })(i), false);

+

+                        colorContainersBox.appendChild(colorContainer);

+                    }

+

+                    var divClearLeft = document.createElement("div");

+                    divClearLeft.setAttribute("style", "clear: left;");

+                    colorContainersBox.appendChild(divClearLeft);

+

+

+                    var drawTypeContainersBox = document.createElement("div");

+                    drawTypeContainersBox.setAttribute("style",

+                           "float: right; margin-right: 3px; margin-top: 1px;");

+                    optionContainer.appendChild(drawTypeContainersBox);

+

+                    drawTypeContainers = new Array(availableDrawTypes.length);

+                    for (var i = 0; i < drawTypeContainers.length; i++) {

+                        var drawTypeContainer = drawTypeContainers[i] =

+                            document.createElement("div");

+                        drawTypeContainer.setAttribute("style",

+                                "text-align: center; margin: 3px; padding: 0 3px;"

+                                + "height: 18px; float: left;");

+                        drawTypeContainer.style.border = "2px solid #000";

+                        drawTypeContainer.appendChild(document.createTextNode(

+                                String(availableDrawTypes[i].name)));

+                        drawTypeContainer.addEventListener("mousedown", (function(ix) {

+                            return function() {

+                                setDrawType(ix);

+                            };

+                        })(i), false);

+

+                        drawTypeContainersBox.appendChild(drawTypeContainer);

+                    }

+

+

+                    var thicknessContainersBox = document.createElement("div");

+                    thicknessContainersBox.setAttribute("style",

+                            "margin: 3px; border: 1px solid #bbb; border-radius: 3px;");

+                    optionContainer.appendChild(thicknessContainersBox);

+

+                    thicknessContainers = new Array(availableThicknesses.length);

+                    for (var i = 0; i < thicknessContainers.length; i++) {

+                        var thicknessContainer = thicknessContainers[i] =

+                            document.createElement("div");

+                        thicknessContainer.setAttribute("style",

+                                "text-align: center; margin: 3px; width: 18px; "

+                                + "height: 18px; float: left;");

+                        thicknessContainer.style.border = "2px solid #000";

+                        thicknessContainer.appendChild(document.createTextNode(

+                                String(availableThicknesses[i])));

+                        thicknessContainer.addEventListener("mousedown", (function(ix) {

+                            return function() {

+                                setThickness(ix);

+                            };

+                        })(i), false);

+

+                        thicknessContainersBox.appendChild(thicknessContainer);

+                    }

+

+

+                    divClearLeft = document.createElement("div");

+                    divClearLeft.setAttribute("style", "clear: left;");

+                    thicknessContainersBox.appendChild(divClearLeft);

+

+

+                    setColor(0);

+                    setThickness(0);

+                    setDrawType(0);

+

+                }

+

+                function disableControls() {

+                    document.removeEventListener("mousedown", canvasMouseDownHandler);

+                    document.removeEventListener("mousemove", canvasMouseMoveHandler);

+                    mouseInWindow = false;

+                    refreshDisplayCanvas();

+

+                    isActive = false;

+                }

+

+                function pushPath(path) {

+

+                    // Push it into the pathsNotHandled array.

+                    var container = new PathIdContainer(path, nextMsgId++);

+                    pathsNotHandled.push(container);

+

+                    // Send the path to the server.

+                    var message = container.id + "|" + path.type + ","

+                            + path.color[0] + "," + path.color[1] + ","

+                            + path.color[2] + ","

+                            + Math.round(path.color[3] * 255.0) + ","

+                            + path.thickness + "," + path.x1 + ","

+                            + path.y1 + "," + path.x2 + "," + path.y2 + ","

+                            + (path.lastInChain ? "1" : "0");

+

+                    socket.send("1" + message);

+                }

+

+                function setThickness(thicknessIndex) {

+                    if (typeof currentThicknessIndex !== "undefined")

+                        thicknessContainers[currentThicknessIndex]

+                            .style.borderColor = "#000";

+                    currentThicknessIndex = thicknessIndex;

+                    thicknessContainers[currentThicknessIndex]

+                        .style.borderColor = "#d08";

+                }

+

+                function setColor(colorIndex) {

+                    if (typeof currentColorIndex !== "undefined")

+                        colorContainers[currentColorIndex]

+                            .style.borderColor = "#000";

+                    currentColorIndex = colorIndex;

+                    colorContainers[currentColorIndex]

+                        .style.borderColor = "#d08";

+                }

+

+                function setDrawType(drawTypeIndex) {

+                    if (typeof currentDrawTypeIndex !== "undefined")

+                        drawTypeContainers[currentDrawTypeIndex]

+                            .style.borderColor = "#000";

+                    currentDrawTypeIndex = drawTypeIndex;

+                    drawTypeContainers[currentDrawTypeIndex]

+                        .style.borderColor = "#d08";

+                }

+

+

+                connect();

+

+            }

+

+

+            // Initialize the room

+            var room = new Room(document.getElementById("drawContainer"));

+

+

+        }, false);

+

+    })();

+    ]]></script>

+</head>

+<body>

+    <div class="noscript"><div style="color: #ff0000; font-size: 16pt;">Seems your browser doesn't support Javascript! Websockets rely on Javascript being enabled. Please enable

+    Javascript and reload this page!</div></div>

+    <div id="labelContainer"/>

+    <div id="drawContainer"/>

+    <div id="console-container"/>

+    <div style="clear: left;"/>

+

+    <h1 class="expand" data-content-id="expandContent" style="font-size: 1.3em;"

+        >About Drawboard WebSocket Example</h1>

+    <div id="expandContent">

+        <p>

+            This drawboard is a page where you can draw with your mouse or touch input

+            (using different colors) and everybody else which has the page open will

+            <em>immediately</em> see what you are drawing.<br/>

+            If someone opens the page later, they will get the current room image (so they

+            can see what was already drawn by other people).

+        </p>

+        <p>

+            It uses asynchronous sending of messages so that it doesn't need separate threads

+            for each client to send messages (this needs NIO or APR connector to be used).<br/>

+            Each "Room" (where the drawing happens) uses a ReentrantLock to synchronize access

+            (currently, only a single Room is implemented).

+        </p>

+        <p>

+            When you open the page, first you will receive a binary websocket message containing

+            the current room image as PNG image. After that, you will receive string messages

+            that contain the drawing actions (line from x1,y1 to x2,y2).<br/>

+            <small>Note that it currently only uses simple string messages instead of JSON because

+            I did not want to introduce a dependency on a JSON lib.</small>

+        </p>

+        <p>

+            It uses synchronization mechanisms to ensure that the final image will look the same

+            for every user, regardless of what their network latency/speed is – e.g. if two user

+            draw at the same time on the same place, the server will decide which line was the

+            first one, and that will be reflected on every client.

+        </p>

+    </div>

+</body>

+</html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/examples/websocket/echo.xhtml b/tomcat-uid/webapps/examples/websocket/echo.xhtml
new file mode 100644
index 0000000..6153bff
--- /dev/null
+++ b/tomcat-uid/webapps/examples/websocket/echo.xhtml
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+  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.

+-->

+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

+<head>

+    <title>Apache Tomcat WebSocket Examples: Echo</title>

+    <style type="text/css"><![CDATA[

+        #connect-container {

+            float: left;

+            width: 400px

+        }

+

+        #connect-container div {

+            padding: 5px;

+        }

+

+        #console-container {

+            float: left;

+            margin-left: 15px;

+            width: 400px;

+        }

+

+        #console {

+            border: 1px solid #CCCCCC;

+            border-right-color: #999999;

+            border-bottom-color: #999999;

+            height: 170px;

+            overflow-y: scroll;

+            padding: 5px;

+            width: 100%;

+        }

+

+        #console p {

+            padding: 0;

+            margin: 0;

+        }

+    ]]></style>

+    <script type="application/javascript"><![CDATA[

+        var ws = null;

+

+        function setConnected(connected) {

+            document.getElementById('connect').disabled = connected;

+            document.getElementById('disconnect').disabled = !connected;

+            document.getElementById('echo').disabled = !connected;

+        }

+

+        function connect() {

+            var target = document.getElementById('target').value;

+            if (target == '') {

+                alert('Please select server side connection implementation.');

+                return;

+            }

+            if ('WebSocket' in window) {

+                ws = new WebSocket(target);

+            } else if ('MozWebSocket' in window) {

+                ws = new MozWebSocket(target);

+            } else {

+                alert('WebSocket is not supported by this browser.');

+                return;

+            }

+            ws.onopen = function () {

+                setConnected(true);

+                log('Info: WebSocket connection opened.');

+            };

+            ws.onmessage = function (event) {

+                log('Received: ' + event.data);

+            };

+            ws.onclose = function (event) {

+                setConnected(false);

+                log('Info: WebSocket connection closed, Code: ' + event.code + (event.reason == "" ? "" : ", Reason: " + event.reason));

+            };

+        }

+

+        function disconnect() {

+            if (ws != null) {

+                ws.close();

+                ws = null;

+            }

+            setConnected(false);

+        }

+

+        function echo() {

+            if (ws != null) {

+                var message = document.getElementById('message').value;

+                log('Sent: ' + message);

+                ws.send(message);

+            } else {

+                alert('WebSocket connection not established, please connect.');

+            }

+        }

+

+        function updateTarget(target) {

+            if (window.location.protocol == 'http:') {

+                document.getElementById('target').value = 'ws://' + window.location.host + target;

+            } else {

+                document.getElementById('target').value = 'wss://' + window.location.host + target;

+            }

+        }

+

+        function log(message) {

+            var console = document.getElementById('console');

+            var p = document.createElement('p');

+            p.style.wordWrap = 'break-word';

+            p.appendChild(document.createTextNode(message));

+            console.appendChild(p);

+            while (console.childNodes.length > 25) {

+                console.removeChild(console.firstChild);

+            }

+            console.scrollTop = console.scrollHeight;

+        }

+

+

+        document.addEventListener("DOMContentLoaded", function() {

+            // Remove elements with "noscript" class - <noscript> is not allowed in XHTML

+            var noscripts = document.getElementsByClassName("noscript");

+            for (var i = 0; i < noscripts.length; i++) {

+                noscripts[i].parentNode.removeChild(noscripts[i]);

+            }

+        }, false);

+    ]]></script>

+</head>

+<body>

+<div class="noscript"><h2 style="color: #ff0000">Seems your browser doesn't support Javascript! Websockets rely on Javascript being enabled. Please enable

+    Javascript and reload this page!</h2></div>

+<div>

+    <div id="connect-container">

+        <div>

+            <span>Connect to service implemented using:</span>

+            <!-- echo example using new programmatic API on the server side -->

+            <input id="radio1" type="radio" name="group1" value="/examples/websocket/echoProgrammatic"

+                   onclick="updateTarget(this.value);"/> <label for="radio1">programmatic API</label>

+            <!-- echo example using new annotation API on the server side -->

+            <input id="radio2" type="radio" name="group1" value="/examples/websocket/echoAnnotation"

+                   onclick="updateTarget(this.value);"/> <label for="radio2">annotation API</label>

+        </div>

+        <div>

+            <input id="target" type="text" size="40" style="width: 350px"/>

+        </div>

+        <div>

+            <button id="connect" onclick="connect();">Connect</button>

+            <button id="disconnect" disabled="disabled" onclick="disconnect();">Disconnect</button>

+        </div>

+        <div>

+            <textarea id="message" style="width: 350px">Here is a message!</textarea>

+        </div>

+        <div>

+            <button id="echo" onclick="echo();" disabled="disabled">Echo message</button>

+        </div>

+    </div>

+    <div id="console-container">

+        <div id="console"/>

+    </div>

+</div>

+</body>

+</html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/examples/websocket/index.xhtml b/tomcat-uid/webapps/examples/websocket/index.xhtml
new file mode 100644
index 0000000..2b8d8cd
--- /dev/null
+++ b/tomcat-uid/webapps/examples/websocket/index.xhtml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+  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.

+-->

+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

+<head>

+    <title>Apache Tomcat WebSocket Examples</title>

+</head>

+<body>

+<h1>Apache Tomcat WebSocket Examples</h1>

+<ul>

+    <li><a href="echo.xhtml">Echo example</a></li>

+    <li><a href="chat.xhtml">Chat example</a></li>

+    <li><a href="snake.xhtml">Multiplayer snake example</a></li>

+    <li><a href="drawboard.xhtml">Multiplayer drawboard example</a></li>

+

+</ul>

+</body>

+</html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/examples/websocket/snake.xhtml b/tomcat-uid/webapps/examples/websocket/snake.xhtml
new file mode 100644
index 0000000..86d1b3c
--- /dev/null
+++ b/tomcat-uid/webapps/examples/websocket/snake.xhtml
@@ -0,0 +1,266 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+  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.

+-->

+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

+<head>

+    <title>Apache Tomcat WebSocket Examples: Multiplayer Snake</title>

+    <style type="text/css"><![CDATA[

+        #playground {

+            width: 640px;

+            height: 480px;

+            background-color: #000;

+        }

+

+        #console-container {

+            float: left;

+            margin-left: 15px;

+            width: 300px;

+        }

+

+        #console {

+            border: 1px solid #CCCCCC;

+            border-right-color: #999999;

+            border-bottom-color: #999999;

+            height: 480px;

+            overflow-y: scroll;

+            padding-left: 5px;

+            padding-right: 5px;

+            width: 100%;

+        }

+

+        #console p {

+            padding: 0;

+            margin: 0;

+        }

+    ]]></style>

+</head>

+<body>

+    <div class="noscript"><h2 style="color: #ff0000">Seems your browser doesn't support Javascript! Websockets rely on Javascript being enabled. Please enable

+    Javascript and reload this page!</h2></div>

+    <div style="float: left">

+        <canvas id="playground" width="640" height="480"/>

+    </div>

+    <div id="console-container">

+        <div id="console"/>

+    </div>

+    <script type="application/javascript"><![CDATA[

+

+        var Game = {};

+

+        Game.fps = 30;

+        Game.socket = null;

+        Game.nextFrame = null;

+        Game.interval = null;

+        Game.direction = 'none';

+        Game.gridSize = 10;

+

+        function Snake() {

+            this.snakeBody = [];

+            this.color = null;

+        }

+

+        Snake.prototype.draw = function(context) {

+            for (var id in this.snakeBody) {

+                context.fillStyle = this.color;

+                context.fillRect(this.snakeBody[id].x, this.snakeBody[id].y, Game.gridSize, Game.gridSize);

+            }

+        };

+

+        Game.initialize = function() {

+            this.entities = [];

+            canvas = document.getElementById('playground');

+            if (!canvas.getContext) {

+                Console.log('Error: 2d canvas not supported by this browser.');

+                return;

+            }

+            this.context = canvas.getContext('2d');

+            window.addEventListener('keydown', function (e) {

+                var code = e.keyCode;

+                if (code > 36 && code < 41) {

+                    switch (code) {

+                        case 37:

+                            if (Game.direction != 'east') Game.setDirection('west');

+                            break;

+                        case 38:

+                            if (Game.direction != 'south') Game.setDirection('north');

+                            break;

+                        case 39:

+                            if (Game.direction != 'west') Game.setDirection('east');

+                            break;

+                        case 40:

+                            if (Game.direction != 'north') Game.setDirection('south');

+                            break;

+                    }

+                }

+            }, false);

+            if (window.location.protocol == 'http:') {

+                Game.connect('ws://' + window.location.host + '/examples/websocket/snake');

+            } else {

+                Game.connect('wss://' + window.location.host + '/examples/websocket/snake');

+            }

+        };

+

+        Game.setDirection  = function(direction) {

+            Game.direction = direction;

+            Game.socket.send(direction);

+            Console.log('Sent: Direction ' + direction);

+        };

+

+        Game.startGameLoop = function() {

+            if (window.webkitRequestAnimationFrame) {

+                Game.nextFrame = function () {

+                    webkitRequestAnimationFrame(Game.run);

+                };

+            } else if (window.mozRequestAnimationFrame) {

+                Game.nextFrame = function () {

+                    mozRequestAnimationFrame(Game.run);

+                };

+            } else {

+                Game.interval = setInterval(Game.run, 1000 / Game.fps);

+            }

+            if (Game.nextFrame != null) {

+                Game.nextFrame();

+            }

+        };

+

+        Game.stopGameLoop = function () {

+            Game.nextFrame = null;

+            if (Game.interval != null) {

+                clearInterval(Game.interval);

+            }

+        };

+

+        Game.draw = function() {

+            this.context.clearRect(0, 0, 640, 480);

+            for (var id in this.entities) {

+                this.entities[id].draw(this.context);

+            }

+        };

+

+        Game.addSnake = function(id, color) {

+            Game.entities[id] = new Snake();

+            Game.entities[id].color = color;

+        };

+

+        Game.updateSnake = function(id, snakeBody) {

+            if (typeof Game.entities[id] != "undefined") {

+                Game.entities[id].snakeBody = snakeBody;

+            }

+        };

+

+        Game.removeSnake = function(id) {

+            Game.entities[id] = null;

+            // Force GC.

+            delete Game.entities[id];

+        };

+

+        Game.run = (function() {

+            var skipTicks = 1000 / Game.fps, nextGameTick = (new Date).getTime();

+

+            return function() {

+                while ((new Date).getTime() > nextGameTick) {

+                    nextGameTick += skipTicks;

+                }

+                Game.draw();

+                if (Game.nextFrame != null) {

+                    Game.nextFrame();

+                }

+            };

+        })();

+

+        Game.connect = (function(host) {

+            if ('WebSocket' in window) {

+                Game.socket = new WebSocket(host);

+            } else if ('MozWebSocket' in window) {

+                Game.socket = new MozWebSocket(host);

+            } else {

+                Console.log('Error: WebSocket is not supported by this browser.');

+                return;

+            }

+

+            Game.socket.onopen = function () {

+                // Socket open.. start the game loop.

+                Console.log('Info: WebSocket connection opened.');

+                Console.log('Info: Press an arrow key to begin.');

+                Game.startGameLoop();

+                setInterval(function() {

+                    // Prevent server read timeout.

+                    Game.socket.send('ping');

+                }, 5000);

+            };

+

+            Game.socket.onclose = function () {

+                Console.log('Info: WebSocket closed.');

+                Game.stopGameLoop();

+            };

+

+            Game.socket.onmessage = function (message) {

+                // _Potential_ security hole, consider using json lib to parse data in production.

+                var packet = eval('(' + message.data + ')');

+                switch (packet.type) {

+                    case 'update':

+                        for (var i = 0; i < packet.data.length; i++) {

+                            Game.updateSnake(packet.data[i].id, packet.data[i].body);

+                        }

+                        break;

+                    case 'join':

+                        for (var j = 0; j < packet.data.length; j++) {

+                            Game.addSnake(packet.data[j].id, packet.data[j].color);

+                        }

+                        break;

+                    case 'leave':

+                        Game.removeSnake(packet.id);

+                        break;

+                    case 'dead':

+                        Console.log('Info: Your snake is dead, bad luck!');

+                        Game.direction = 'none';

+                        break;

+                    case 'kill':

+                        Console.log('Info: Head shot!');

+                        break;

+                }

+            };

+        });

+

+        var Console = {};

+

+        Console.log = (function(message) {

+            var console = document.getElementById('console');

+            var p = document.createElement('p');

+            p.style.wordWrap = 'break-word';

+            p.innerHTML = message;

+            console.appendChild(p);

+            while (console.childNodes.length > 25) {

+                console.removeChild(console.firstChild);

+            }

+            console.scrollTop = console.scrollHeight;

+        });

+

+        Game.initialize();

+

+

+        document.addEventListener("DOMContentLoaded", function() {

+            // Remove elements with "noscript" class - <noscript> is not allowed in XHTML

+            var noscripts = document.getElementsByClassName("noscript");

+            for (var i = 0; i < noscripts.length; i++) {

+                noscripts[i].parentNode.removeChild(noscripts[i]);

+            }

+        }, false);

+

+        ]]></script>

+</body>

+</html>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/host-manager/META-INF/context.xml b/tomcat-uid/webapps/host-manager/META-INF/context.xml
index 45da457..c31d376 100644
--- a/tomcat-uid/webapps/host-manager/META-INF/context.xml
+++ b/tomcat-uid/webapps/host-manager/META-INF/context.xml
@@ -15,7 +15,7 @@
   See the License for the specific language governing permissions and

   limitations under the License.

 -->

-<Context antiResourceLocking="false" privileged="true" useHttpOnly="true" >

+<Context antiResourceLocking="false" privileged="true" >

   <!--

     Remove the comment markers from around the Valve below to limit access to

     the host-manager application to clients connecting from localhost

@@ -24,4 +24,4 @@
   <Valve className="org.apache.catalina.valves.RemoteAddrValve"

          allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />

   -->

-</Context>

+</Context>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/host-manager/WEB-INF/jsp/401.jsp b/tomcat-uid/webapps/host-manager/WEB-INF/jsp/401.jsp
index c71c9ea..6b0e501 100644
--- a/tomcat-uid/webapps/host-manager/WEB-INF/jsp/401.jsp
+++ b/tomcat-uid/webapps/host-manager/WEB-INF/jsp/401.jsp
@@ -14,6 +14,7 @@
   See the License for the specific language governing permissions and

   limitations under the License.

 --%>

+<%@ page session="false" trimDirectiveWhitespaces="true" %>

 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

 <html>

  <head>

@@ -45,8 +46,8 @@
 &lt;user username="tomcat" password="s3cret" roles="admin-gui"/&gt;

 </pre>

    <p>

-    Note that for Tomcat 6.0.30 onwards, the roles required to use the host

-    manager application were changed from the single <tt>admin</tt> role to the

+    Note that for Tomcat 7 onwards, the roles required to use the host manager

+    application were changed from the single <tt>admin</tt> role to the

     following two roles. You will need to assign the role(s) required for

     the functionality you wish to access.

    </p>

@@ -59,8 +60,6 @@
     To maintain the CSRF protection:

    </p>

    <ul>

-    <li>The deprecated <tt>admin</tt> role should not be assigned to any

-        user.</li>

     <li>Users with the <tt>admin-gui</tt> role should not be granted the

        <tt>admin-script</tt> role.</li>

     <li>If the text interface is accessed through a browser (e.g. for testing

diff --git a/tomcat-uid/webapps/host-manager/WEB-INF/jsp/403.jsp b/tomcat-uid/webapps/host-manager/WEB-INF/jsp/403.jsp
index 569bd29..c87aeb1 100644
--- a/tomcat-uid/webapps/host-manager/WEB-INF/jsp/403.jsp
+++ b/tomcat-uid/webapps/host-manager/WEB-INF/jsp/403.jsp
@@ -14,6 +14,7 @@
   See the License for the specific language governing permissions and

   limitations under the License.

 --%>

+<%@ page session="false" trimDirectiveWhitespaces="true" %>

 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

 <html>

  <head>

@@ -34,13 +35,13 @@
    </p>

    <p>

     If you have already configured the Host Manager application to allow access

-    and you have used your browser's back button, used a saved book-mark or

+    and you have used your browsers back button, used a saved book-mark or

     similar then you may have triggered the cross-site request forgery (CSRF)

     protection that has been enabled for the HTML interface of the Host Manager

-    application. You will need to reset this protection by returning to the 

+    application. You will need to reset this protection by returning to the

     <a href="<%=request.getContextPath()%>/html">main Host Manager page</a>.

     Once you return to this page, you will be able to continue using the Host

-    Manager appliction's HTML interface normally. If you continue to see this

+    Manager application's HTML interface normally. If you continue to see this

     access denied message, check that you have the necessary permissions to

     access this application.

    </p>

@@ -59,11 +60,10 @@
 &lt;user username="tomcat" password="s3cret" roles="admin-gui"/&gt;

 </pre>

    <p>

-    Note that for Tomcat 6.0.30 onwards, the roles required to use the host

-    manager application were changed from the single <tt>admin</tt> role to the

+    Note that for Tomcat 7 onwards, the roles required to use the host manager

+    application were changed from the single <tt>admin</tt> role to the

     following two roles. You will need to assign the role(s) required for

-    the functionality you wish to access. Note the <tt>admin</tt> role is still

-    valid but by-passes the CSRF protection.

+    the functionality you wish to access.

    </p>

     <ul>

       <li><tt>admin-gui</tt> - allows access to the HTML GUI</li>

@@ -74,8 +74,6 @@
     To maintain the CSRF protection:

    </p>

    <ul>

-    <li>The deprecated <tt>admin</tt> role should not be assigned to any

-        user.</li>

     <li>Users with the <tt>admin-gui</tt> role should not be granted the

        <tt>admin-script</tt> role.</li>

     <li>If the text interface is accessed through a browser (e.g. for testing

diff --git a/tomcat-uid/webapps/host-manager/WEB-INF/jsp/404.jsp b/tomcat-uid/webapps/host-manager/WEB-INF/jsp/404.jsp
new file mode 100644
index 0000000..8b80150
--- /dev/null
+++ b/tomcat-uid/webapps/host-manager/WEB-INF/jsp/404.jsp
@@ -0,0 +1,62 @@
+<%--

+  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.

+--%>

+<%@ page import="org.apache.catalina.util.RequestUtil" session="false"

+         trimDirectiveWhitespaces="true" %>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

+<html>

+ <head>

+  <title>404 Not found</title>

+  <style type="text/css">

+    <!--

+    BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;font-size:12px;}

+    H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;}

+    PRE, TT {border: 1px dotted #525D76}

+    A {color : black;}A.name {color : black;}

+    -->

+  </style>

+ </head>

+ <body>

+   <h1>404 Not found</h1>

+   <p>

+    The page you tried to access

+    (<%=RequestUtil.filter((String) request.getAttribute(

+            "javax.servlet.error.request_uri"))%>)

+    does not exist.

+   </p>

+   <p>

+    The Host Manager application has been re-structured for Tomcat 7 onwards and

+    some URLs have changed. All URLs used to access the Manager application

+    should now start with one of the following options:

+   </p>

+    <ul>

+      <li><%=request.getContextPath()%>/html for the HTML GUI</li>

+      <li><%=request.getContextPath()%>/text for the text interface</li>

+    </ul>

+   <p>

+    Note that the URL for the text interface has changed from

+    &quot;<%=request.getContextPath()%>&quot; to

+    &quot;<%=request.getContextPath()%>/text&quot;.

+   </p>

+   <p>

+    You probably need to adjust the URL you are using to access the Host Manager

+    application. However, there is always a chance you have found a bug in the

+    Host Manager application. If you are sure you have found a bug, and that the

+    bug has not already been reported, please report it to the Apache Tomcat

+    team.

+   </p>

+ </body>

+</html>

diff --git a/tomcat-uid/webapps/host-manager/WEB-INF/web.xml b/tomcat-uid/webapps/host-manager/WEB-INF/web.xml
index 101b463..01716c8 100644
--- a/tomcat-uid/webapps/host-manager/WEB-INF/web.xml
+++ b/tomcat-uid/webapps/host-manager/WEB-INF/web.xml
@@ -17,14 +17,16 @@
 -->

 

 <web-app xmlns="http://java.sun.com/xml/ns/javaee"

-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

-   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

-   version="2.5"> 

+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

+                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

+  version="3.0"

+  metadata-complete="true">

 

-  <display-name>Tomcat Manager Application</display-name>

+  <display-name>Tomcat Host Manager Application</display-name>

   <description>

-    A scriptable management web application for the Tomcat Web Server;

-	Manager lets you view, load/unload/etc particular web applications.

+    A scriptable host management web application for the Tomcat Web Server;

+    Manager lets you view, create and remove virtual hosts.

   </description>

 

   <servlet>

@@ -44,38 +46,26 @@
     </init-param>

   </servlet>

 

-  <!-- Define the Manager Servlet Mapping -->

-  <servlet-mapping>

-    <servlet-name>HostManager</servlet-name>

-    <url-pattern>/list</url-pattern>

-  </servlet-mapping>

-  <servlet-mapping>

-    <servlet-name>HostManager</servlet-name>

-    <url-pattern>/add</url-pattern>

-  </servlet-mapping>

-  <servlet-mapping>

-    <servlet-name>HostManager</servlet-name>

-    <url-pattern>/remove</url-pattern>

-  </servlet-mapping>

-  <servlet-mapping>

-    <servlet-name>HostManager</servlet-name>

-    <url-pattern>/start</url-pattern>

-  </servlet-mapping>

-  <servlet-mapping>

-    <servlet-name>HostManager</servlet-name>

-    <url-pattern>/stop</url-pattern>

-  </servlet-mapping>

-  <servlet-mapping>

-    <servlet-name>HTMLHostManager</servlet-name>

-    <url-pattern>/html/*</url-pattern>

-  </servlet-mapping>

+  <filter>

+    <filter-name>SetCharacterEncoding</filter-name>

+    <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>

+    <init-param>

+      <param-name>encoding</param-name>

+      <param-value>UTF-8</param-value>

+    </init-param>

+  </filter>

+

+  <filter-mapping>

+    <filter-name>SetCharacterEncoding</filter-name>

+    <url-pattern>/*</url-pattern>

+  </filter-mapping>

 

   <filter>

     <filter-name>CSRF</filter-name>

     <filter-class>org.apache.catalina.filters.CsrfPreventionFilter</filter-class>

     <init-param>

       <param-name>entryPoints</param-name>

-      <param-value>/html,/html/list</param-value>

+      <param-value>/html,/html/,/html/list,/index.jsp</param-value>

     </init-param>

   </filter>

 

@@ -84,43 +74,34 @@
     <servlet-name>HTMLHostManager</servlet-name>

   </filter-mapping>

 

+  <!-- Define the Manager Servlet Mapping -->

+  <servlet-mapping>

+    <servlet-name>HostManager</servlet-name>

+    <url-pattern>/text/*</url-pattern>

+  </servlet-mapping>

+  <servlet-mapping>

+    <servlet-name>HTMLHostManager</servlet-name>

+    <url-pattern>/html/*</url-pattern>

+  </servlet-mapping>

+

   <!-- Define a Security Constraint on this Application -->

   <security-constraint>

     <web-resource-collection>

       <web-resource-name>HostManager commands</web-resource-name>

-      <url-pattern>/list</url-pattern>

-      <url-pattern>/add</url-pattern>

-      <url-pattern>/remove</url-pattern>

-      <url-pattern>/start</url-pattern>

-      <url-pattern>/stop</url-pattern>

+      <url-pattern>/text/*</url-pattern>

     </web-resource-collection>

     <auth-constraint>

-       <!-- NOTE: 1. These roles are not present in the default users file

-                  2. The admin role is deprecated, it will be removed in

-                     Tomcat 7.

-                  3. Use the admin-script role to take advantage of the new

-                     CSRF protection. Using the admin role or assigning both

-                     the admin-script and admin-gui roles to the same user

-                     will bypass the CSRF protection. -->

-       <role-name>admin</role-name>

+       <!-- NOTE:  This role is not present in the default users file -->

        <role-name>admin-script</role-name>

     </auth-constraint>

   </security-constraint>

-

   <security-constraint>

     <web-resource-collection>

       <web-resource-name>HTMLHostManager commands</web-resource-name>

       <url-pattern>/html/*</url-pattern>

     </web-resource-collection>

     <auth-constraint>

-       <!-- NOTE: 1. These roles are not present in the default users file

-                  2. The admin role is deprecated, it will be removed in

-                     Tomcat 7.

-                  3. Use the admin-gui role to take advantage of the new

-                     CSRF protection. Using the admin role or assigning both

-                     the admin-script and admin-gui roles to the same user

-                     will bypass the CSRF protection. -->

-       <role-name>admin</role-name>

+       <!-- NOTE:  This role is not present in the default users file -->

        <role-name>admin-gui</role-name>

     </auth-constraint>

   </security-constraint>

@@ -134,21 +115,17 @@
   <!-- Security roles referenced by this web application -->

   <security-role>

     <description>

-      The role that is required to access the text Host Manager pages

-    </description>

-    <role-name>admin-script</role-name>

-  </security-role>

-  <security-role>

-    <description>

-      The role that is required to access the HTML Host Manager pages

+      The role that is required to log in to the Host Manager Application HTML

+      interface

     </description>

     <role-name>admin-gui</role-name>

   </security-role>

   <security-role>

     <description>

-      Deprecated role that can access all Host Manager functionality

+      The role that is required to log in to the Host Manager Application text

+      interface

     </description>

-    <role-name>admin</role-name>

+    <role-name>admin-script</role-name>

   </security-role>

 

   <error-page>

@@ -159,5 +136,9 @@
     <error-code>403</error-code>

     <location>/WEB-INF/jsp/403.jsp</location>

   </error-page>

+  <error-page>

+    <error-code>404</error-code>

+    <location>/WEB-INF/jsp/404.jsp</location>

+  </error-page>

 

 </web-app>

diff --git a/tomcat-uid/webapps/host-manager/images/asf-logo.gif b/tomcat-uid/webapps/host-manager/images/asf-logo.gif
deleted file mode 100644
index 22eb9d7..0000000
--- a/tomcat-uid/webapps/host-manager/images/asf-logo.gif
+++ /dev/null
Binary files differ
diff --git a/tomcat-uid/webapps/host-manager/images/asf-logo.svg b/tomcat-uid/webapps/host-manager/images/asf-logo.svg
new file mode 100644
index 0000000..eaf91df
--- /dev/null
+++ b/tomcat-uid/webapps/host-manager/images/asf-logo.svg
@@ -0,0 +1,210 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->

+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

+<svg version="1.1" id="Layer_2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"

+	 viewBox="0 0 7127.6 2890" enable-background="new 0 0 7127.6 2890" xml:space="preserve">

+<path fill="#6D6E71" d="M7104.7,847.8c15.3,15.3,22.9,33.7,22.9,55.2c0,21.5-7.6,39.9-22.9,55.4c-15.3,15.4-33.8,23.1-55.6,23.1

+	c-21.8,0-40.2-7.6-55.4-22.9c-15.1-15.3-22.7-33.7-22.7-55.2c0-21.5,7.6-39.9,22.9-55.4c15.3-15.4,33.7-23.1,55.4-23.1

+	C7070.9,824.9,7089.4,832.5,7104.7,847.8z M7098.1,951.9c13.3-13.6,20-29.8,20-48.7s-6.6-35-19.8-48.5

+	c-13.2-13.4-29.4-20.1-48.6-20.1c-19.2,0-35.4,6.7-48.7,20.2c-13.3,13.5-19.9,29.7-19.9,48.7c0,19,6.6,35.2,19.7,48.6

+	c13.1,13.4,29.3,20.1,48.5,20.1S7084.7,965.4,7098.1,951.9z M7087.1,888.1c0,14-6.1,22.8-18.4,26.4l22.5,30.5h-18.2l-20.3-28.3

+	h-18.6v28.3h-14.7v-84.6h31.8c12.8,0,22,2.2,27.6,6.6C7084.4,871.4,7087.1,878.4,7087.1,888.1z M7068.2,900c3-2.4,4.4-6.5,4.4-12

+	c0-5.5-1.5-9.4-4.5-11.6c-3-2.2-8.4-3.2-16-3.2h-18v30.5h17.5C7059.7,903.6,7065.3,902.4,7068.2,900z"/>

+<path fill="#6D6E71" d="M1803.6,499.8v155.4h-20V499.8h-56.8v-19.2h133.9v19.2H1803.6z"/>

+<path fill="#6D6E71" d="M2082.2,655.2v-76.9h-105.2v76.9h-20V480.5h20v78.9h105.2v-78.9h20v174.7H2082.2z"/>

+<path fill="#6D6E71" d="M2241.4,499.8v57.4h88.1v19.2h-88.1v59.8h101.8v19h-121.8V480.5H2340v19.2H2241.4z"/>

+<path fill="#D22128" d="M1574.5,1852.4l417.3-997.6h80.1l417.3,997.6h-105.4l-129.3-311.9h-448.2l-127.9,311.9H1574.5z M2032.6,970

+	l-205.1,493.2h404.7L2032.6,970z"/>

+<path fill="#D22128" d="M2596.9,1852.4V854.8H3010c171.4,0,295.1,158.8,295.1,313.3c0,163-115.2,316.1-286.6,316.1h-324.6v368.1

+	H2596.9z M2693.9,1397.1h318.9c118,0,193.9-108.2,193.9-229c0-125.1-92.7-226.2-202.3-226.2h-310.5V1397.1z"/>

+<path fill="#D22128" d="M3250.5,1852.4l417.3-997.6h80.1l417.3,997.6h-105.4l-129.3-311.9h-448.2l-127.9,311.9H3250.5z M3708.6,970

+	l-205.1,493.2h404.7L3708.6,970z"/>

+<path fill="#D22128" d="M4637.3,849.1c177,0,306.3,89.9,368.1,217.8l-78.7,47.8c-63.2-132.1-186.9-177-295.1-177

+	c-238.9,0-369.5,213.6-369.5,414.5c0,220.6,161.6,420.1,373.7,420.1c112.4,0,244.5-56.2,307.7-185.5l81.5,42.1

+	c-64.6,148.9-241.7,231.8-394.8,231.8c-274,0-466.5-261.3-466.5-514.2C4163.8,1106.3,4336.6,849.1,4637.3,849.1z"/>

+<path fill="#D22128" d="M5949.1,854.8v997.6h-98.4v-466.5h-591.5v466.5h-96.9V854.8h96.9v444h591.5v-444H5949.1z"/>

+<path fill="#D22128" d="M6844.6,1765.2v87.1h-670.2V854.8H6832v87.1h-560.6v359.7h489v82.9h-489v380.8H6844.6z"/>

+<path fill="#6D6E71" d="M1667.6,2063.6c11.8,3.5,22.2,8.3,31,14.2l-10.3,22.6c-9-6-18.6-10.4-28.9-13.4c-10.2-2.9-20-4.4-29.2-4.4

+	c-13.6,0-24.5,2.4-32.6,7.3c-8.1,4.9-12.2,11.8-12.2,20.7c0,7.6,2.3,14,6.8,19c4.5,5,10.2,8.9,17,11.7c6.8,2.8,16.1,6,28,9.6

+	c14.4,4.6,26,8.9,34.7,12.9c8.8,4,16.3,9.9,22.5,17.8c6.2,7.8,9.3,18.2,9.3,31c0,11.7-3.2,21.8-9.5,30.6

+	c-6.3,8.7-15.3,15.5-26.8,20.3c-11.6,4.8-24.9,7.2-40,7.2c-15.1,0-29.7-2.9-43.9-8.7c-14.2-5.8-26.4-13.6-36.6-23.4l10.7-21.6

+	c9.6,9.4,20.7,16.7,33.3,21.9c12.6,5.2,24.8,7.8,36.8,7.8c15.3,0,27.3-3,36.1-8.9c8.8-5.9,13.2-13.9,13.2-23.9

+	c0-7.8-2.3-14.3-6.9-19.4c-4.6-5.1-10.3-9-17.1-11.9c-6.8-2.8-16.1-6-28-9.6c-14.2-4.2-25.7-8.3-34.6-12.2

+	c-8.9-3.9-16.4-9.7-22.5-17.5c-6.1-7.7-9.2-17.9-9.2-30.6c0-10.9,3-20.4,9-28.6c6-8.2,14.6-14.6,25.6-19.1

+	c11.1-4.5,23.8-6.8,38.2-6.8C1643.8,2058.3,1655.7,2060.1,1667.6,2063.6z"/>

+<path fill="#6D6E71" d="M1980.1,2072.8c16.8,9.4,30.2,22.3,40,38.4c9.8,16.2,14.8,33.9,14.8,53.3c0,19.5-4.9,37.4-14.8,53.6

+	c-9.8,16.3-23.2,29.1-40,38.6c-16.8,9.5-35.3,14.3-55.2,14.3c-20.3,0-38.8-4.7-55.7-14.3c-16.8-9.5-30.2-22.4-40-38.6

+	c-9.8-16.3-14.8-34.1-14.8-53.6c0-19.5,4.9-37.3,14.8-53.5c9.8-16.2,23.2-29,40-38.3c16.8-9.4,35.4-14,55.7-14

+	C1944.8,2058.6,1963.2,2063.3,1980.1,2072.8z M1881.9,2092.7c-13.1,7.4-23.6,17.5-31.4,30.1c-7.8,12.6-11.8,26.5-11.8,41.7

+	c0,15.3,3.9,29.3,11.8,42c7.8,12.7,18.3,22.8,31.4,30.2c13.1,7.4,27.4,11.1,42.9,11.1c15.5,0,29.7-3.7,42.7-11.1

+	c13-7.4,23.3-17.4,31.1-30.2c7.7-12.7,11.6-26.7,11.6-42s-3.9-29.2-11.6-41.8c-7.7-12.6-18.1-22.6-31.1-30

+	c-13-7.4-27.2-11.2-42.6-11.2C1909.4,2081.5,1895.1,2085.2,1881.9,2092.7z"/>

+<path fill="#6D6E71" d="M2186.5,2082.4v74h98.4v23.2h-98.4v90.2h-24.1v-210.6h133.8v23.2H2186.5z"/>

+<path fill="#6D6E71" d="M2491.6,2082.4v187.4h-24.1v-187.4h-68.4v-23.2h161.4v23.2H2491.6z"/>

+<path fill="#6D6E71" d="M2871.8,2269.8l-56.8-177.4l-57.6,177.4h-24.5l-70.5-210.6h25.9l57.9,182.7l57.1-182.4l24.1-0.3l57.7,182.7

+	l57.1-182.7h25l-70.6,210.6H2871.8z"/>

+<path fill="#6D6E71" d="M3087.3,2216.6l-23.5,53.2h-25.6l94.4-210.6h25l94.1,210.6h-26.1l-23.5-53.2H3087.3z M3144.5,2086.6

+	l-46.9,106.8h94.4L3144.5,2086.6z"/>

+<path fill="#6D6E71" d="M3461.1,2202.7c-6,0.4-10.7,0.6-14.1,0.6h-56v66.5H3367v-210.6h80c26.2,0,46.6,6.2,61.2,18.5

+	c14.5,12.3,21.8,29.8,21.8,52.3c0,17.2-4.1,31.7-12.2,43.3c-8.1,11.6-19.8,20-35,25l49.2,71.5h-27.3L3461.1,2202.7z M3491.3,2167.6

+	c10.3-8.4,15.5-20.8,15.5-37c0-15.9-5.2-27.9-15.5-36c-10.3-8.1-25.1-12.2-44.3-12.2h-56v97.8h56

+	C3466.2,2180.2,3481,2176,3491.3,2167.6z"/>

+<path fill="#6D6E71" d="M3688.3,2082.4v69.2h106.2v23.2h-106.2v72.1h122.8v22.9h-146.9v-210.6h142.9v23.2H3688.3z"/>

+<path fill="#6D6E71" d="M4147,2082.4v74h98.4v23.2H4147v90.2h-24.1v-210.6h133.8v23.2H4147z"/>

+<path fill="#6D6E71" d="M4523.3,2072.8c16.8,9.4,30.2,22.3,40,38.4c9.8,16.2,14.8,33.9,14.8,53.3c0,19.5-4.9,37.4-14.8,53.6

+	c-9.8,16.3-23.2,29.1-40,38.6c-16.8,9.5-35.3,14.3-55.2,14.3c-20.3,0-38.8-4.7-55.7-14.3c-16.8-9.5-30.2-22.4-40-38.6

+	c-9.8-16.3-14.8-34.1-14.8-53.6c0-19.5,4.9-37.3,14.8-53.5c9.8-16.2,23.2-29,40-38.3c16.8-9.4,35.4-14,55.7-14

+	C4488.1,2058.6,4506.5,2063.3,4523.3,2072.8z M4425.2,2092.7c-13.1,7.4-23.6,17.5-31.4,30.1c-7.8,12.6-11.8,26.5-11.8,41.7

+	c0,15.3,3.9,29.3,11.8,42c7.8,12.7,18.3,22.8,31.4,30.2c13.1,7.4,27.4,11.1,42.9,11.1c15.5,0,29.7-3.7,42.7-11.1

+	c13-7.4,23.3-17.4,31.1-30.2c7.7-12.7,11.6-26.7,11.6-42s-3.9-29.2-11.6-41.8c-7.7-12.6-18.1-22.6-31.1-30

+	c-13-7.4-27.2-11.2-42.6-11.2C4452.6,2081.5,4438.3,2085.2,4425.2,2092.7z"/>

+<path fill="#6D6E71" d="M4854.7,2247.7c-15.7,15.5-37.3,23.3-64.8,23.3c-27.7,0-49.4-7.8-65.1-23.3c-15.7-15.5-23.6-37-23.6-64.6

+	v-124h24.1v124c0,20.3,5.8,36.1,17.3,47.5c11.6,11.4,27.3,17.1,47.3,17.1c20.1,0,35.8-5.7,47.1-17c11.4-11.3,17-27.2,17-47.7v-124

+	h24.1v124C4878.2,2210.7,4870.4,2232.2,4854.7,2247.7z"/>

+<path fill="#6D6E71" d="M5169.5,2269.8l-126.3-169.1v169.1h-24.1v-210.6h25l126.3,169.3v-169.3h23.8v210.6H5169.5z"/>

+<path fill="#6D6E71" d="M5478.4,2073.1c16.4,9.3,29.4,21.9,38.9,37.9c9.6,16,14.3,33.9,14.3,53.5s-4.8,37.6-14.3,53.6

+	c-9.5,16.1-22.6,28.7-39.3,37.9c-16.6,9.2-35.2,13.8-55.5,13.8h-84.3v-210.6h85.2C5443.7,2059.2,5462,2063.8,5478.4,2073.1z

+	 M5362.3,2246.9h61.4c15.5,0,29.6-3.5,42.3-10.6c12.7-7.1,22.8-16.9,30.2-29.5c7.4-12.5,11.1-26.5,11.1-42

+	c0-15.5-3.8-29.4-11.3-41.9c-7.5-12.5-17.7-22.3-30.6-29.6c-12.8-7.2-27-10.9-42.6-10.9h-60.5V2246.9z"/>

+<path fill="#6D6E71" d="M5668.6,2216.6l-23.5,53.2h-25.6l94.4-210.6h25l94.1,210.6H5807l-23.5-53.2H5668.6z M5725.8,2086.6

+	l-46.9,106.8h94.4L5725.8,2086.6z"/>

+<path fill="#6D6E71" d="M5991,2082.4v187.4H5967v-187.4h-68.4v-23.2h161.4v23.2H5991z"/>

+<path fill="#6D6E71" d="M6175.9,2269.8v-210.6h24.1v210.6H6175.9z"/>

+<path fill="#6D6E71" d="M6493.7,2072.8c16.8,9.4,30.2,22.3,40,38.4c9.8,16.2,14.8,33.9,14.8,53.3c0,19.5-4.9,37.4-14.8,53.6

+	c-9.8,16.3-23.2,29.1-40,38.6c-16.8,9.5-35.3,14.3-55.2,14.3c-20.3,0-38.8-4.7-55.7-14.3c-16.8-9.5-30.2-22.4-40-38.6

+	c-9.8-16.3-14.8-34.1-14.8-53.6c0-19.5,4.9-37.3,14.8-53.5c9.8-16.2,23.2-29,40-38.3c16.8-9.4,35.4-14,55.7-14

+	C6458.5,2058.6,6476.9,2063.3,6493.7,2072.8z M6395.6,2092.7c-13.1,7.4-23.6,17.5-31.4,30.1c-7.8,12.6-11.8,26.5-11.8,41.7

+	c0,15.3,3.9,29.3,11.8,42c7.8,12.7,18.3,22.8,31.4,30.2c13.1,7.4,27.4,11.1,42.9,11.1c15.5,0,29.7-3.7,42.7-11.1

+	c13-7.4,23.3-17.4,31.1-30.2c7.7-12.7,11.6-26.7,11.6-42s-3.9-29.2-11.6-41.8c-7.7-12.6-18.1-22.6-31.1-30

+	c-13-7.4-27.2-11.2-42.6-11.2C6423,2081.5,6408.8,2085.2,6395.6,2092.7z"/>

+<path fill="#6D6E71" d="M6826.5,2269.8l-126.3-169.1v169.1h-24.1v-210.6h25l126.3,169.3v-169.3h23.8v210.6H6826.5z"/>

+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-4516.6152" y1="-2338.7222" x2="-4108.4111" y2="-1861.3982" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">

+	<stop  offset="0" style="stop-color:#F69923"/>

+	<stop  offset="0.3123" style="stop-color:#F79A23"/>

+	<stop  offset="0.8383" style="stop-color:#E97826"/>

+</linearGradient>

+<path fill="url(#SVGID_1_)" d="M1230.1,13.7c-45.3,26.8-120.6,102.5-210.5,212.3l82.6,155.9c58-82.9,116.9-157.5,176.3-221.2

+	c4.6-5.1,7-7.5,7-7.5c-2.3,2.5-4.6,5-7,7.5c-19.2,21.2-77.5,89.2-165.5,224.4c84.7-4.2,214.9-21.6,321.1-39.7

+	c31.6-177-31-258-31-258S1323.4-41.4,1230.1,13.7z"/>

+<path fill="none" d="M1090.2,903.1c0.6-0.1,1.2-0.2,1.8-0.3l-11.9,1.3c-0.7,0.3-1.4,0.7-2.1,1

+	C1082.1,904.4,1086.2,903.7,1090.2,903.1z"/>

+<path fill="none" d="M1005.9,1182.3c-6.7,1.5-13.7,2.7-20.7,3.7C992.3,1185,999.2,1183.8,1005.9,1182.3z"/>

+<path fill="none" d="M432.9,1808.8c0.9-2.3,1.8-4.7,2.6-7c18.2-48,36.2-94.7,54-140.1c20-51,39.8-100.4,59.3-148.3

+	c20.6-50.4,40.9-99.2,60.9-146.3c21-49.4,41.7-97,62-142.8c16.5-37.3,32.8-73.4,48.9-108.3c5.4-11.7,10.7-23.2,16-34.6

+	c10.5-22.7,21-44.8,31.3-66.5c9.5-20,19-39.6,28.3-58.8c3.1-6.4,6.2-12.8,9.3-19.1c0.5-1,1-2,1.5-3.1l-10.2,1.1l-8-15.9

+	c-0.8,1.6-1.6,3.1-2.4,4.6c-14.5,28.8-28.9,57.9-43.1,87.2c-8.2,16.9-16.4,34-24.6,51c-22.6,47.4-44.8,95.2-66.6,143.3

+	c-22.1,48.6-43.7,97.5-64.9,146.5c-20.8,48.1-41.3,96.2-61.2,144.2c-20,48-39.5,95.7-58.5,143.2c-19.9,49.5-39.2,98.7-58,147.2

+	c-4.2,10.9-8.5,21.9-12.7,32.8c-15,39.2-29.7,77.8-44,116l12.7,25.1l11.4-1.2c0.4-1.1,0.8-2.3,1.3-3.4

+	C396.7,1905.4,414.9,1856.4,432.9,1808.8z"/>

+<path fill="none" d="M980,1186.8L980,1186.8c0.1,0,0.1,0,0.1-0.1C980.1,1186.8,980.1,1186.8,980,1186.8z"/>

+<path fill="#BE202E" d="M952.6,1323c-10.6,1.9-21.4,3.8-32.5,5.7c-0.1,0-0.1,0.1-0.2,0.1c5.6-0.8,11.2-1.7,16.6-2.6

+	C942,1325.2,947.3,1324.1,952.6,1323z"/>

+<path opacity="0.35" fill="#BE202E" d="M952.6,1323c-10.6,1.9-21.4,3.8-32.5,5.7c-0.1,0-0.1,0.1-0.2,0.1c5.6-0.8,11.2-1.7,16.6-2.6

+	C942,1325.2,947.3,1324.1,952.6,1323z"/>

+<path fill="#BE202E" d="M980.3,1186.7C980.2,1186.7,980.2,1186.7,980.3,1186.7c-0.1,0.1-0.2,0.1-0.2,0.1c1.8-0.2,3.5-0.5,5.2-0.8

+	c7-1,13.9-2.2,20.7-3.7C997.5,1183.8,989,1185.2,980.3,1186.7L980.3,1186.7L980.3,1186.7z"/>

+<path opacity="0.35" fill="#BE202E" d="M980.3,1186.7C980.2,1186.7,980.2,1186.7,980.3,1186.7c-0.1,0.1-0.2,0.1-0.2,0.1

+	c1.8-0.2,3.5-0.5,5.2-0.8c7-1,13.9-2.2,20.7-3.7C997.5,1183.8,989,1185.2,980.3,1186.7L980.3,1186.7L980.3,1186.7z"/>

+<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-7537.7339" y1="-2391.4075" x2="-4625.4141" y2="-2391.4075" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">

+	<stop  offset="0.3233" style="stop-color:#9E2064"/>

+	<stop  offset="0.6302" style="stop-color:#C92037"/>

+	<stop  offset="0.7514" style="stop-color:#CD2335"/>

+	<stop  offset="1" style="stop-color:#E97826"/>

+</linearGradient>

+<path fill="url(#SVGID_2_)" d="M858.6,784.7c25.1-46.9,50.5-92.8,76.2-137.4c26.7-46.4,53.7-91.3,80.9-134.7

+	c1.6-2.6,3.2-5.2,4.8-7.7c27-42.7,54.2-83.7,81.6-122.9L1019.5,226c-6.2,7.6-12.5,15.3-18.8,23.2c-23.8,29.7-48.6,61.6-73.9,95.5

+	c-28.6,38.2-58,78.9-87.8,121.7c-27.6,39.5-55.5,80.9-83.5,123.7c-23.8,36.5-47.7,74-71.4,112.5c-0.9,1.4-1.8,2.9-2.6,4.3

+	l107.5,212.3C811.8,873.6,835.1,828.7,858.6,784.7z"/>

+<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="-7186.1777" y1="-2099.3059" x2="-5450.7183" y2="-2099.3059" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">

+	<stop  offset="0" style="stop-color:#282662"/>

+	<stop  offset="9.548390e-02" style="stop-color:#662E8D"/>

+	<stop  offset="0.7882" style="stop-color:#9F2064"/>

+	<stop  offset="0.9487" style="stop-color:#CD2032"/>

+</linearGradient>

+<path fill="url(#SVGID_3_)" d="M369,1981c-14.2,39.1-28.5,78.9-42.9,119.6c-0.2,0.6-0.4,1.2-0.6,1.8c-2,5.7-4.1,11.5-6.1,17.2

+	c-9.7,27.4-18,52.1-37.3,108.2c31.7,14.5,57.1,52.5,81.1,95.6c-2.6-44.7-21-86.6-56.2-119.1c156.1,7,290.6-32.4,360.1-146.6

+	c6.2-10.2,11.9-20.9,17-32.2c-31.6,40.1-70.8,57.1-144.5,53c-0.2,0.1-0.3,0.1-0.5,0.2c0.2-0.1,0.3-0.1,0.5-0.2

+	c108.6-48.6,163.1-95.3,211.2-172.6c11.4-18.3,22.5-38.4,33.8-60.6c-94.9,97.5-205,125.3-320.9,104.2l-86.9,9.5

+	C374.4,1966.3,371.7,1973.6,369,1981z"/>

+<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="-7374.1626" y1="-2418.5454" x2="-4461.8428" y2="-2418.5454" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">

+	<stop  offset="0.3233" style="stop-color:#9E2064"/>

+	<stop  offset="0.6302" style="stop-color:#C92037"/>

+	<stop  offset="0.7514" style="stop-color:#CD2335"/>

+	<stop  offset="1" style="stop-color:#E97826"/>

+</linearGradient>

+<path fill="url(#SVGID_4_)" d="M409.6,1786.3c18.8-48.5,38.1-97.7,58-147.2c19-47.4,38.5-95.2,58.5-143.2

+	c20-48,40.4-96.1,61.2-144.2c21.2-49,42.9-97.8,64.9-146.5c21.8-48.1,44-95.9,66.6-143.3c8.1-17.1,16.3-34.1,24.6-51

+	c14.2-29.3,28.6-58.4,43.1-87.2c0.8-1.6,1.6-3.1,2.4-4.6L681.4,706.8c-1.8,2.9-3.5,5.8-5.3,8.6c-25.1,40.9-50,82.7-74.4,125.4

+	c-24.7,43.1-49,87.1-72.7,131.7c-20,37.6-39.6,75.6-58.6,113.9c-3.8,7.8-7.6,15.5-11.3,23.2c-23.4,48.2-44.6,94.8-63.7,139.5

+	c-21.7,50.7-40.7,99.2-57.5,145.1c-11,30.2-21,59.4-30.1,87.4c-7.5,24-14.7,47.9-21.5,71.8c-16,56.3-29.9,112.4-41.2,168.3

+	L353,1935.1c14.3-38.1,28.9-76.8,44-116C401.1,1808.2,405.4,1797.3,409.6,1786.3z"/>

+<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="-7161.7642" y1="-2379.1431" x2="-5631.2524" y2="-2379.1431" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">

+	<stop  offset="0" style="stop-color:#282662"/>

+	<stop  offset="9.548390e-02" style="stop-color:#662E8D"/>

+	<stop  offset="0.7882" style="stop-color:#9F2064"/>

+	<stop  offset="0.9487" style="stop-color:#CD2032"/>

+</linearGradient>

+<path fill="url(#SVGID_5_)" d="M243.5,1729.4c-13.6,68.2-23.2,136.2-28,203.8c-0.2,2.4-0.4,4.7-0.5,7.1

+	c-33.7-54-124-106.8-123.8-106.2c64.6,93.7,113.7,186.7,120.9,278c-34.6,7.1-82-3.2-136.8-23.3c57.1,52.5,100,67,116.7,70.9

+	c-52.5,3.3-107.1,39.3-162.1,80.8c80.5-32.8,145.5-45.8,192.1-35.3C148.1,2414.2,74.1,2645,0,2890c22.7-6.7,36.2-21.9,43.9-42.6

+	c13.2-44.4,100.8-335.6,238-718.2c3.9-10.9,7.8-21.8,11.8-32.9c1.1-3,2.2-6.1,3.3-9.2c14.5-40.1,29.5-81.1,45.1-122.9

+	c3.5-9.5,7.1-19,10.7-28.6c0.1-0.2,0.1-0.4,0.2-0.6l-107.9-213.2C244.6,1724.4,244,1726.9,243.5,1729.4z"/>

+<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="-7374.1626" y1="-2117.1309" x2="-4461.8428" y2="-2117.1309" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">

+	<stop  offset="0.3233" style="stop-color:#9E2064"/>

+	<stop  offset="0.6302" style="stop-color:#C92037"/>

+	<stop  offset="0.7514" style="stop-color:#CD2335"/>

+	<stop  offset="1" style="stop-color:#E97826"/>

+</linearGradient>

+<path fill="url(#SVGID_6_)" d="M805.6,937c-3.1,6.3-6.2,12.7-9.3,19.1c-9.3,19.2-18.8,38.8-28.3,58.8

+	c-10.3,21.7-20.7,43.9-31.3,66.5c-5.3,11.4-10.6,22.9-16,34.6c-16.1,35-32.4,71.1-48.9,108.3c-20.3,45.8-41,93.4-62,142.8

+	c-20,47.1-40.3,95.9-60.9,146.3c-19.5,47.9-39.3,97.3-59.3,148.3c-17.8,45.4-35.9,92.1-54,140.1c-0.9,2.3-1.8,4.7-2.6,7

+	c-18,47.6-36.2,96.6-54.6,146.8c-0.4,1.1-0.8,2.3-1.3,3.4l86.9-9.5c-1.7-0.3-3.5-0.5-5.2-0.9c103.9-13,242.1-90.6,331.4-186.5

+	c41.1-44.2,78.5-96.3,113-157.3c25.7-45.4,49.8-95.8,72.8-151.5c20.1-48.7,39.4-101.4,58-158.6c-23.9,12.6-51.2,21.8-81.4,28.2

+	c-5.3,1.1-10.7,2.2-16.1,3.1c-5.5,1-11,1.8-16.6,2.6l0,0l0,0c0.1,0,0.1-0.1,0.2-0.1c96.9-37.3,158-109.2,202.4-197.4

+	c-25.5,17.4-66.9,40.1-116.6,51.1c-6.7,1.5-13.7,2.7-20.7,3.7c-1.7,0.3-3.5,0.6-5.2,0.8l0,0l0,0c0.1,0,0.1,0,0.1-0.1

+	c0,0,0.1,0,0.1,0l0,0c33.6-14.1,62-29.8,86.6-48.4c5.3-4,10.4-8.1,15.3-12.3c7.5-6.5,14.7-13.3,21.5-20.5c4.4-4.6,8.6-9.3,12.7-14.2

+	c9.6-11.5,18.7-23.9,27.1-37.3c2.6-4.1,5.1-8.3,7.6-12.6c3.2-6.2,6.3-12.3,9.3-18.3c13.5-27.2,24.4-51.5,33-72.8

+	c4.3-10.6,8.1-20.5,11.3-29.7c1.3-3.7,2.5-7.2,3.7-10.6c3.4-10.2,6.2-19.3,8.4-27.3c3.3-12,5.3-21.5,6.4-28.4l0,0l0,0

+	c-3.3,2.6-7.1,5.2-11.3,7.7c-29.3,17.5-79.5,33.4-119.9,40.8l79.8-8.8l-79.8,8.8c-0.6,0.1-1.2,0.2-1.8,0.3c-4,0.7-8.1,1.3-12.2,2

+	c0.7-0.3,1.4-0.7,2.1-1l-273,29.9C806.6,935,806.1,936,805.6,937z"/>

+<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="-7554.8232" y1="-2132.0981" x2="-4642.5034" y2="-2132.0981" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">

+	<stop  offset="0.3233" style="stop-color:#9E2064"/>

+	<stop  offset="0.6302" style="stop-color:#C92037"/>

+	<stop  offset="0.7514" style="stop-color:#CD2335"/>

+	<stop  offset="1" style="stop-color:#E97826"/>

+</linearGradient>

+<path fill="url(#SVGID_7_)" d="M1112.9,385.1c-24.3,37.3-50.8,79.6-79.4,127.5c-1.5,2.5-3,5.1-4.5,7.6

+	c-24.6,41.5-50.8,87.1-78.3,137c-23.8,43.1-48.5,89.3-74.3,139c-22.4,43.3-45.6,89.2-69.4,137.8l273-29.9

+	c79.5-36.6,115.1-69.7,149.6-117.6c9.2-13.2,18.4-27,27.5-41.3c28-43.8,55.6-92,80.1-139.9c23.7-46.3,44.7-92.2,60.7-133.5

+	c10.2-26.3,18.4-50.8,24.1-72.3c5-19,8.9-36.9,11.9-54.1C1327.9,363.5,1197.6,380.9,1112.9,385.1z"/>

+<path fill="#BE202E" d="M936.5,1326.1c-5.5,1-11,1.8-16.6,2.6l0,0C925.5,1328,931,1327.1,936.5,1326.1z"/>

+<path opacity="0.35" fill="#BE202E" d="M936.5,1326.1c-5.5,1-11,1.8-16.6,2.6l0,0C925.5,1328,931,1327.1,936.5,1326.1z"/>

+<linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="-7374.1626" y1="-2027.484" x2="-4461.8433" y2="-2027.484" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">

+	<stop  offset="0.3233" style="stop-color:#9E2064"/>

+	<stop  offset="0.6302" style="stop-color:#C92037"/>

+	<stop  offset="0.7514" style="stop-color:#CD2335"/>

+	<stop  offset="1" style="stop-color:#E97826"/>

+</linearGradient>

+<path fill="url(#SVGID_8_)" d="M936.5,1326.1c-5.5,1-11,1.8-16.6,2.6l0,0C925.5,1328,931,1327.1,936.5,1326.1z"/>

+<path fill="#BE202E" d="M980,1186.8c1.8-0.2,3.5-0.5,5.2-0.8C983.5,1186.3,981.8,1186.6,980,1186.8L980,1186.8z"/>

+<path opacity="0.35" fill="#BE202E" d="M980,1186.8c1.8-0.2,3.5-0.5,5.2-0.8C983.5,1186.3,981.8,1186.6,980,1186.8L980,1186.8z"/>

+<linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="-7374.1626" y1="-2037.7417" x2="-4461.8433" y2="-2037.7417" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">

+	<stop  offset="0.3233" style="stop-color:#9E2064"/>

+	<stop  offset="0.6302" style="stop-color:#C92037"/>

+	<stop  offset="0.7514" style="stop-color:#CD2335"/>

+	<stop  offset="1" style="stop-color:#E97826"/>

+</linearGradient>

+<path fill="url(#SVGID_9_)" d="M980,1186.8c1.8-0.2,3.5-0.5,5.2-0.8C983.5,1186.3,981.8,1186.6,980,1186.8L980,1186.8z"/>

+<path fill="#BE202E" d="M980.2,1186.7C980.2,1186.7,980.2,1186.7,980.2,1186.7L980.2,1186.7L980.2,1186.7L980.2,1186.7

+	C980.2,1186.7,980.2,1186.7,980.2,1186.7z"/>

+<path opacity="0.35" fill="#BE202E" d="M980.2,1186.7C980.2,1186.7,980.2,1186.7,980.2,1186.7L980.2,1186.7L980.2,1186.7

+	L980.2,1186.7C980.2,1186.7,980.2,1186.7,980.2,1186.7z"/>

+<linearGradient id="SVGID_10_" gradientUnits="userSpaceOnUse" x1="-5738.0635" y1="-2039.799" x2="-5094.3457" y2="-2039.799" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">

+	<stop  offset="0.3233" style="stop-color:#9E2064"/>

+	<stop  offset="0.6302" style="stop-color:#C92037"/>

+	<stop  offset="0.7514" style="stop-color:#CD2335"/>

+	<stop  offset="1" style="stop-color:#E97826"/>

+</linearGradient>

+<path fill="url(#SVGID_10_)" d="M980.2,1186.7C980.2,1186.7,980.2,1186.7,980.2,1186.7L980.2,1186.7L980.2,1186.7L980.2,1186.7

+	C980.2,1186.7,980.2,1186.7,980.2,1186.7z"/>

+</svg>

diff --git a/tomcat-uid/webapps/host-manager/images/tomcat.gif b/tomcat-uid/webapps/host-manager/images/tomcat.gif
index 6175673..f2aa6f8 100644
--- a/tomcat-uid/webapps/host-manager/images/tomcat.gif
+++ b/tomcat-uid/webapps/host-manager/images/tomcat.gif
Binary files differ
diff --git a/tomcat-uid/webapps/host-manager/index.jsp b/tomcat-uid/webapps/host-manager/index.jsp
new file mode 100644
index 0000000..48f50ec
--- /dev/null
+++ b/tomcat-uid/webapps/host-manager/index.jsp
@@ -0,0 +1,18 @@
+<%--

+  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.

+--%>

+<%@ page session="false" trimDirectiveWhitespaces="true" %>

+<% response.sendRedirect(request.getContextPath() + "/html"); %>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/host-manager/manager.xml b/tomcat-uid/webapps/host-manager/manager.xml
index 2b78170..2a79a6b 100644
--- a/tomcat-uid/webapps/host-manager/manager.xml
+++ b/tomcat-uid/webapps/host-manager/manager.xml
@@ -21,6 +21,6 @@
 

 -->

 <Context docBase="${catalina.home}/webapps/manager"

-         privileged="true" antiResourceLocking="false" antiJARLocking="false" useHttpOnly="true">

+         privileged="true" antiResourceLocking="false" antiJARLocking="false">

 

 </Context>

diff --git a/tomcat-uid/webapps/manager/META-INF/context.xml b/tomcat-uid/webapps/manager/META-INF/context.xml
index 33ecf23..7afc3a8 100644
--- a/tomcat-uid/webapps/manager/META-INF/context.xml
+++ b/tomcat-uid/webapps/manager/META-INF/context.xml
@@ -15,7 +15,7 @@
   See the License for the specific language governing permissions and

   limitations under the License.

 -->

-<Context antiResourceLocking="false" privileged="true" useHttpOnly="true" >

+<Context antiResourceLocking="false" privileged="true" >

   <!--

     Remove the comment markers from around the Valve below to limit access to

     the manager application to clients connecting from localhost

diff --git a/tomcat-uid/webapps/manager/WEB-INF/jsp/401.jsp b/tomcat-uid/webapps/manager/WEB-INF/jsp/401.jsp
index 8b4b024..a2924d0 100644
--- a/tomcat-uid/webapps/manager/WEB-INF/jsp/401.jsp
+++ b/tomcat-uid/webapps/manager/WEB-INF/jsp/401.jsp
@@ -14,6 +14,7 @@
   See the License for the specific language governing permissions and

   limitations under the License.

 --%>

+<%@ page session="false" trimDirectiveWhitespaces="true" %>

 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

 <html>

  <head>

@@ -45,7 +46,7 @@
 &lt;user username="tomcat" password="s3cret" roles="manager-gui"/&gt;

 </pre>

    <p>

-    Note that for Tomcat 6.0.30 onwards, the roles required to use the manager

+    Note that for Tomcat 7 onwards, the roles required to use the manager

     application were changed from the single <tt>manager</tt> role to the

     following four roles. You will need to assign the role(s) required for

     the functionality you wish to access.

@@ -64,8 +65,6 @@
     are not. To maintain the CSRF protection:

    </p>

    <ul>

-    <li>The deprecated <tt>manager</tt> role should not be assigned to any

-        user.</li>

     <li>Users with the <tt>manager-gui</tt> role should not be granted either

         the <tt>manager-script</tt> or <tt>manager-jmx</tt> roles.</li>

     <li>If the text or jmx interfaces are accessed through a browser (e.g. for

@@ -78,4 +77,4 @@
    </p>

  </body>

 

-</html>
\ No newline at end of file
+</html>

diff --git a/tomcat-uid/webapps/manager/WEB-INF/jsp/403.jsp b/tomcat-uid/webapps/manager/WEB-INF/jsp/403.jsp
index 3f3513d..f626814 100644
--- a/tomcat-uid/webapps/manager/WEB-INF/jsp/403.jsp
+++ b/tomcat-uid/webapps/manager/WEB-INF/jsp/403.jsp
@@ -14,6 +14,7 @@
   See the License for the specific language governing permissions and

   limitations under the License.

 --%>

+<%@ page session="false" trimDirectiveWhitespaces="true" %>

 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

 <html>

  <head>

@@ -34,13 +35,13 @@
    </p>

    <p>

     If you have already configured the Manager application to allow access and

-    you have used your browser's back button, used a saved book-mark or similar

+    you have used your browsers back button, used a saved book-mark or similar

     then you may have triggered the cross-site request forgery (CSRF) protection

     that has been enabled for the HTML interface of the Manager application. You

-    will need to reset this protection by returning to the 

+    will need to reset this protection by returning to the

     <a href="<%=request.getContextPath()%>/html">main Manager page</a>. Once you

     return to this page, you will be able to continue using the Manager

-    appliction's HTML interface normally. If you continue to see this access

+    application's HTML interface normally. If you continue to see this access

     denied message, check that you have the necessary permissions to access this

     application.

    </p>

@@ -60,11 +61,10 @@
 &lt;user username="tomcat" password="s3cret" roles="manager-gui"/&gt;

 </pre>

    <p>

-    Note that for Tomcat 6.0.30 onwards, the roles required to use the manager

-    application were changed from the single <tt>manager</tt> role to add the

-    following four roles. (The manager role is still available but should not be

-    used as it avoids the CSRF protection). You will need to assign the role(s)

-    required for the functionality you wish to access.

+    Note that for Tomcat 7 onwards, the roles required to use the manager

+    application were changed from the single <tt>manager</tt> role to the

+    following four roles. You will need to assign the role(s) required for

+    the functionality you wish to access.

    </p>

     <ul>

       <li><tt>manager-gui</tt> - allows access to the HTML GUI and the status

@@ -80,11 +80,11 @@
     are not. To maintain the CSRF protection:

    </p>

    <ul>

-    <li>users with the <tt>manager-gui</tt> role should not be granted either

+    <li>Users with the <tt>manager-gui</tt> role should not be granted either

         the <tt>manager-script</tt> or <tt>manager-jmx</tt> roles.</li>

-    <li>if the text or jmx interfaces are accessed through a browser (e.g. for

-         testing since these interfaces are intended for tools not humans) then

-         the browser must be closed afterwards to terminate the session.</li>

+    <li>If the text or jmx interfaces are accessed through a browser (e.g. for

+        testing since these interfaces are intended for tools not humans) then

+        the browser must be closed afterwards to terminate the session.</li>

    </ul>

    <p>

     For more information - please see the

diff --git a/tomcat-uid/webapps/manager/WEB-INF/jsp/404.jsp b/tomcat-uid/webapps/manager/WEB-INF/jsp/404.jsp
new file mode 100644
index 0000000..7acd51d
--- /dev/null
+++ b/tomcat-uid/webapps/manager/WEB-INF/jsp/404.jsp
@@ -0,0 +1,63 @@
+<%--

+  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.

+--%>

+<%@ page import="org.apache.catalina.util.RequestUtil" session="false"

+         trimDirectiveWhitespaces="true" %>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

+<html>

+ <head>

+  <title>404 Not found</title>

+  <style type="text/css">

+    <!--

+    BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;font-size:12px;}

+    H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;}

+    PRE, TT {border: 1px dotted #525D76}

+    A {color : black;}A.name {color : black;}

+    -->

+  </style>

+ </head>

+ <body>

+   <h1>404 Not found</h1>

+   <p>

+    The page you tried to access

+    (<%=RequestUtil.filter((String) request.getAttribute(

+            "javax.servlet.error.request_uri"))%>)

+    does not exist.

+   </p>

+   <p>

+    The Manager application has been re-structured for Tomcat 7 onwards and some

+    of URLs have changed. All URLs used to access the Manager application should

+    now start with one of the following options:

+   </p>

+    <ul>

+      <li><%=request.getContextPath()%>/html for the HTML GUI</li>

+      <li><%=request.getContextPath()%>/text for the text interface</li>

+      <li><%=request.getContextPath()%>/jmxproxy for the JMX proxy</li>

+      <li><%=request.getContextPath()%>/status for the status pages</li>

+    </ul>

+   <p>

+    Note that the URL for the text interface has changed from

+    &quot;<%=request.getContextPath()%>&quot; to

+    &quot;<%=request.getContextPath()%>/text&quot;.

+   </p>

+   <p>

+    You probably need to adjust the URL you are using to access the Manager

+    application. However, there is always a chance you have found a bug in the

+    Manager application. If you are sure you have found a bug, and that the bug

+    has not already been reported, please report it to the Apache Tomcat team.

+   </p>

+ </body>

+</html>

diff --git a/tomcat-uid/webapps/manager/WEB-INF/jsp/sessionDetail.jsp b/tomcat-uid/webapps/manager/WEB-INF/jsp/sessionDetail.jsp
index 40e8979..0d903e6 100644
--- a/tomcat-uid/webapps/manager/WEB-INF/jsp/sessionDetail.jsp
+++ b/tomcat-uid/webapps/manager/WEB-INF/jsp/sessionDetail.jsp
@@ -20,7 +20,8 @@
 <%@page import="javax.servlet.http.HttpSession" %>

 <%@page import="org.apache.catalina.Session" %>

 <%@page import="org.apache.catalina.manager.JspHelper" %>

-<!DOCTYPE html 

+<%@page import="org.apache.catalina.util.ContextName" %>

+<!DOCTYPE html

      PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

 <%--!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"

@@ -28,12 +29,20 @@
 

 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

 <% String path = (String) request.getAttribute("path");

+   String version = (String) request.getAttribute("version");

+   ContextName cn = new ContextName(path, version);

    Session currentSession = (Session)request.getAttribute("currentSession");

-   HttpSession currentHttpSession = currentSession.getSession();

-   String currentSessionId = JspHelper.escapeXml(currentSession.getId());

+   String currentSessionId = null;

+   HttpSession currentHttpSession = null;

+   if (currentSession != null) {

+       currentHttpSession = currentSession.getSession();

+       currentSessionId = JspHelper.escapeXml(currentSession.getId());

+   } else {

+       currentSessionId = "Session invalidated";

+   }

    String submitUrl = JspHelper.escapeXml(response.encodeURL(

            ((HttpServletRequest) pageContext.getRequest()).getRequestURI() +

-           "?path=" + path));

+           "?path=" + path + "&version=" + version));

 %>

 <head>

     <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>

@@ -42,108 +51,127 @@
     <meta http-equiv="expires" content="0"/><!-- 0 is an invalid value and should be treated as 'now' -->

     <meta http-equiv="content-language" content="en"/>

     <meta name="author" content="Cedrik LIME"/>

-    <meta name="copyright" content="copyright 2005-2014 the Apache Software Foundation"/>

+    <meta name="copyright" content="copyright 2005-2017 the Apache Software Foundation"/>

     <meta name="robots" content="noindex,nofollow,noarchive"/>

     <title>Sessions Administration: details for <%= currentSessionId %></title>

 </head>

 <body>

-<h1>Details for Session <%= currentSessionId %></h1>

+<% if (currentHttpSession == null) { %>

+   <h1><%=currentSessionId%></h1>

+<% } else { %>

+   <h1>Details for Session <%= currentSessionId %></h1>

 

-<table style="text-align: left;" border="0">

-  <tr>

-    <th>Session Id</th>

-    <td><%= currentSessionId %></td>

-  </tr>

-  <tr>

-    <th>Guessed Locale</th>

-    <td><%= JspHelper.guessDisplayLocaleFromSession(currentSession) %></td>

-  </tr>

-  <tr>

-    <th>Guessed User</th>

-    <td><%= JspHelper.guessDisplayUserFromSession(currentSession) %></td>

-  </tr>

-  <tr>

-    <th>Creation Time</th>

-    <td><%= JspHelper.getDisplayCreationTimeForSession(currentSession) %></td>

-  </tr>

-  <tr>

-    <th>Last Accessed Time</th>

-    <td><%= JspHelper.getDisplayLastAccessedTimeForSession(currentSession) %></td>

-  </tr>

-  <tr>

-    <th>Session Max Inactive Interval</th>

-    <td><%= JspHelper.secondsToTimeString(currentSession.getMaxInactiveInterval()) %></td>

-  </tr>

-  <tr>

-    <th>Used Time</th>

-    <td><%= JspHelper.getDisplayUsedTimeForSession(currentSession) %></td>

-  </tr>

-  <tr>

-    <th>Inactive Time</th>

-    <td><%= JspHelper.getDisplayInactiveTimeForSession(currentSession) %></td>

-  </tr>

-  <tr>

-    <th>TTL</th>

-    <td><%= JspHelper.getDisplayTTLForSession(currentSession) %></td>

-  </tr>

-</table>

+   <table style="text-align: left;" border="0">

+     <tr>

+       <th>Session Id</th>

+       <td><%= currentSessionId %></td>

+     </tr>

+     <tr>

+       <th>Guessed Locale</th>

+       <td><%= JspHelper.guessDisplayLocaleFromSession(currentSession) %></td>

+     </tr>

+     <tr>

+       <th>Guessed User</th>

+       <td><%= JspHelper.guessDisplayUserFromSession(currentSession) %></td>

+     </tr>

+     <tr>

+       <th>Creation Time</th>

+       <td><%= JspHelper.getDisplayCreationTimeForSession(currentSession) %></td>

+     </tr>

+     <tr>

+       <th>Last Accessed Time</th>

+       <td><%= JspHelper.getDisplayLastAccessedTimeForSession(currentSession) %></td>

+     </tr>

+     <tr>

+       <th>Session Max Inactive Interval</th>

+       <td><%= JspHelper.secondsToTimeString(currentSession.getMaxInactiveInterval()) %></td>

+     </tr>

+     <tr>

+       <th>Used Time</th>

+       <td><%= JspHelper.getDisplayUsedTimeForSession(currentSession) %></td>

+     </tr>

+     <tr>

+       <th>Inactive Time</th>

+       <td><%= JspHelper.getDisplayInactiveTimeForSession(currentSession) %></td>

+     </tr>

+     <tr>

+       <th>TTL</th>

+       <td><%= JspHelper.getDisplayTTLForSession(currentSession) %></td>

+     </tr>

+   </table>

 

-<form method="post" action="<%= submitUrl %>">

-  <div>

-    <input type="hidden" name="sessionId" value="<%= currentSessionId %>" />

-    <input type="hidden" name="action" value="sessionDetail" />

-    <input type="submit" value="Refresh" />

-  </div>

-</form>

+   <form method="post" action="<%= submitUrl %>">

+     <div>

+       <input type="hidden" name="sessionId" value="<%= currentSessionId %>" />

+       <input type="hidden" name="action" value="sessionDetail" />

+       <%

+       if ("Primary".equals(request.getParameter("sessionType"))) {

+       %>

+         <input type="hidden" name="sessionType" value="Primary" />

+       <%

+       }

+       %>    <input type="submit" value="Refresh" />

+     </div>

+   </form>

 

-<div class="error"><%= JspHelper.escapeXml(request.getAttribute("error")) %></div>

-<div class="message"><%= JspHelper.escapeXml(request.getAttribute("message")) %></div>

+   <div class="error"><%= JspHelper.escapeXml(request.getAttribute("error")) %></div>

+   <div class="message"><%= JspHelper.escapeXml(request.getAttribute("message")) %></div>

 

-<table style="text-align: left;" border="1" cellpadding="2" cellspacing="2">

-<% int nAttributes = 0;

-   Enumeration attributeNamesEnumeration = currentHttpSession.getAttributeNames();

-   while (attributeNamesEnumeration.hasMoreElements()) {

-       attributeNamesEnumeration.nextElement();

-       ++nAttributes;

-   }

-%>

-    <caption style="font-variant: small-caps;"><%= JspHelper.formatNumber(nAttributes) %> attributes</caption>

-    <thead>

-        <tr>

-            <th>Remove Attribute</th>

-            <th>Attribute name</th>

-            <th>Attribute value</th>

-        </tr>

-    </thead>

-    <%--tfoot>

-        <tr>

-            <td colspan="3" style="text-align: center;">

-                TODO: set Max Inactive Interval on sessions

-            </td>

-        </tr>

-    </tfoot--%>

-    <tbody>

-<% attributeNamesEnumeration = currentHttpSession.getAttributeNames();

-   while (attributeNamesEnumeration.hasMoreElements()) {

-       String attributeName = (String) attributeNamesEnumeration.nextElement();

-%>

-        <tr>

-            <td align="center">

-                <form method="post" action="<%= submitUrl %>">

-                    <div>

-                        <input type="hidden" name="action" value="removeSessionAttribute" />

-                        <input type="hidden" name="sessionId" value="<%= currentSessionId %>" />

-                        <input type="hidden" name="attributeName" value="<%= JspHelper.escapeXml(attributeName) %>" />

-                        <input type="submit" value="Remove" />

-                    </div>

-                </form>

-            </td>

-            <td><%= JspHelper.escapeXml(attributeName) %></td>

-            <td><% Object attributeValue = currentHttpSession.getAttribute(attributeName); %><span title="<%= attributeValue == null ? "" : attributeValue.getClass().toString() %>"><%= JspHelper.escapeXml(attributeValue) %></span></td>

-        </tr>

-<% } // end while %>

-    </tbody>

-</table>

+   <table style="text-align: left;" border="1" cellpadding="2" cellspacing="2">

+   <% int nAttributes = 0;

+      Enumeration attributeNamesEnumeration = currentHttpSession.getAttributeNames();

+      while (attributeNamesEnumeration.hasMoreElements()) {

+          attributeNamesEnumeration.nextElement();

+          ++nAttributes;

+      }

+   %>

+       <caption style="font-variant: small-caps;"><%= JspHelper.formatNumber(nAttributes) %> attributes</caption>

+       <thead>

+           <tr>

+               <th>Remove Attribute</th>

+               <th>Attribute name</th>

+               <th>Attribute value</th>

+           </tr>

+       </thead>

+       <%--tfoot>

+           <tr>

+               <td colspan="3" style="text-align: center;">

+                   TODO: set Max Inactive Interval on sessions

+               </td>

+           </tr>

+       </tfoot--%>

+       <tbody>

+   <% attributeNamesEnumeration = currentHttpSession.getAttributeNames();

+      while (attributeNamesEnumeration.hasMoreElements()) {

+          String attributeName = (String) attributeNamesEnumeration.nextElement();

+   %>

+           <tr>

+               <td align="center">

+                   <form method="post" action="<%= submitUrl %>">

+                       <div>

+                           <input type="hidden" name="action" value="removeSessionAttribute" />

+                           <input type="hidden" name="sessionId" value="<%= currentSessionId %>" />

+                           <input type="hidden" name="attributeName" value="<%= JspHelper.escapeXml(attributeName) %>" />

+                           <%

+                             if ("Primary".equals(request.getParameter("sessionType"))) {

+                           %>

+                             <input type="submit" value="Remove" />

+                             <input type="hidden" name="sessionType" value="Primary" />

+                           <%

+                             } else {

+                               out.print("Primary sessions only");

+                             }

+                           %>

+                       </div>

+                   </form>

+               </td>

+               <td><%= JspHelper.escapeXml(attributeName) %></td>

+               <td><% Object attributeValue = currentHttpSession.getAttribute(attributeName); %><span title="<%= attributeValue == null ? "" : attributeValue.getClass().toString() %>"><%= JspHelper.escapeXml(attributeValue) %></span></td>

+           </tr>

+   <% } // end while %>

+       </tbody>

+   </table>

+<% } // endif%>

 

 <form method="post" action="<%=submitUrl%>">

   <p style="text-align: center;">

diff --git a/tomcat-uid/webapps/manager/WEB-INF/jsp/sessionsList.jsp b/tomcat-uid/webapps/manager/WEB-INF/jsp/sessionsList.jsp
index d5b83f0..da2680c 100644
--- a/tomcat-uid/webapps/manager/WEB-INF/jsp/sessionsList.jsp
+++ b/tomcat-uid/webapps/manager/WEB-INF/jsp/sessionsList.jsp
@@ -20,104 +20,132 @@
 <%@page import="java.util.Iterator" %>

 <%@page import="org.apache.catalina.manager.JspHelper" %>

 <%@page import="org.apache.catalina.Session" %>

-<!DOCTYPE html 

+<%@page import="org.apache.catalina.ha.session.DeltaSession" %>

+<%@page import="org.apache.catalina.util.ContextName" %>

+<!DOCTYPE html

      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

+

+<%@page import="org.apache.catalina.manager.DummyProxySession"%><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

 <% String path = (String) request.getAttribute("path");

+   String version = (String) request.getAttribute("version");

+   ContextName cn = new ContextName(path, version);

    String submitUrl = JspHelper.escapeXml(response.encodeURL(

            ((HttpServletRequest) pageContext.getRequest()).getRequestURI() +

-           "?path=" + path));

+           "?path=" + path + "&version=" + version));

    Collection activeSessions = (Collection) request.getAttribute("activeSessions");

 %>

 <head>

     <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>

-	<meta http-equiv="pragma" content="no-cache"/><!-- HTTP 1.0 -->

-	<meta http-equiv="cache-control" content="no-cache,must-revalidate"/><!-- HTTP 1.1 -->

-	<meta http-equiv="expires" content="0"/><!-- 0 is an invalid value and should be treated as 'now' -->

-	<meta http-equiv="content-language" content="en"/>

-	<meta name="author" content="Cedrik LIME"/>

-	<meta name="copyright" content="copyright 2005-2014 the Apache Software Foundation"/>

-	<meta name="robots" content="noindex,nofollow,noarchive"/>

-	<title>Sessions Administration for <%= JspHelper.escapeXml(path) %></title>

+    <meta http-equiv="pragma" content="no-cache"/><!-- HTTP 1.0 -->

+    <meta http-equiv="cache-control" content="no-cache,must-revalidate"/><!-- HTTP 1.1 -->

+    <meta http-equiv="expires" content="0"/><!-- 0 is an invalid value and should be treated as 'now' -->

+    <meta http-equiv="content-language" content="en"/>

+    <meta name="author" content="Cedrik LIME"/>

+    <meta name="copyright" content="copyright 2005-2017 the Apache Software Foundation"/>

+    <meta name="robots" content="noindex,nofollow,noarchive"/>

+    <title>Sessions Administration for <%= JspHelper.escapeXml(cn.getDisplayName()) %></title>

 </head>

 <body>

-<h1>Sessions Administration for <%= JspHelper.escapeXml(path) %></h1>

+<h1>Sessions Administration for <%= JspHelper.escapeXml(cn.getDisplayName()) %></h1>

 

 <p>Tips:</p>

 <ul>

-	<li>Click on a column to sort.</li>

-	<li>To view a session details and/or remove a session attributes, click on its id.</li>

+    <li>Click on a column to sort.</li>

+    <li>To view a session details and/or remove a session attributes, click on its id.</li>

 </ul>

 

 <div class="error"><%= JspHelper.escapeXml(request.getAttribute("error")) %></div>

 <div class="message"><%= JspHelper.escapeXml(request.getAttribute("message")) %></div>

 

 <form action="<%= submitUrl %>" method="post" id="sessionsForm">

-	<fieldset><legend>Active HttpSessions informations</legend>

-		<input type="hidden" name="action" id="sessionsFormAction" value="injectSessions"/>

-		<input type="hidden" name="sort" id="sessionsFormSort" value="<%= JspHelper.escapeXml(request.getAttribute("sort")) %>"/>

-		<% String order = (String) request.getAttribute("order");

-		   if (order == null || "".equals(order)) {

-		   	order = "ASC";

-		   }

-		%>

-		<input type="hidden" name="order" id="sessionsFormSortOrder" value="<%= JspHelper.escapeXml(order) %>"/>

-		<input type="submit" name="refresh" id="refreshButton" value="Refresh Sessions list" onclick="document.getElementById('sessionsFormAction').value='refreshSessions'; return true;"/>

-		<%= JspHelper.formatNumber(activeSessions.size()) %> active Sessions<br/>

-		<table border="1" cellpadding="2" cellspacing="2" width="100%">

-			<thead>

-				<tr>

-					<th><a onclick="document.getElementById('sessionsFormSort').value='id'; document.getElementById('refreshButton').click(); return true;">Session Id</a></th>

-					<th><a onclick="document.getElementById('sessionsFormSort').value='locale'; document.getElementById('refreshButton').click(); return true;">Guessed Locale</a></th>

-					<th><a onclick="document.getElementById('sessionsFormSort').value='user'; document.getElementById('refreshButton').click(); return true;">Guessed User name</a></th>

-					<th><a onclick="document.getElementById('sessionsFormSort').value='CreationTime'; document.getElementById('refreshButton').click(); return true;">Creation Time</a></th>

-					<th><a onclick="document.getElementById('sessionsFormSort').value='LastAccessedTime'; document.getElementById('refreshButton').click(); return true;">Last Accessed Time</a></th>

-					<th><a onclick="document.getElementById('sessionsFormSort').value='UsedTime'; document.getElementById('refreshButton').click(); return true;">Used Time</a></th>

-					<th><a onclick="document.getElementById('sessionsFormSort').value='InactiveTime'; document.getElementById('refreshButton').click(); return true;">Inactive Time</a></th>

-					<th><a onclick="document.getElementById('sessionsFormSort').value='TTL'; document.getElementById('refreshButton').click(); return true;"><span title="Time To Live">TTL</span></a></th>

-				</tr>

-			</thead>

-			<% if (activeSessions.size() > 10) { %>

-			<tfoot><%-- <tfoot> is the same as <thead> --%>

-				<tr>

-					<th><a onclick="document.getElementById('sessionsFormSort').value='id'; document.getElementById('refreshButton').click(); return true;">Session Id</a></th>

-					<th><a onclick="document.getElementById('sessionsFormSort').value='locale'; document.getElementById('refreshButton').click(); return true;">Guessed Locale</a></th>

-					<th><a onclick="document.getElementById('sessionsFormSort').value='user'; document.getElementById('refreshButton').click(); return true;">Guessed User name</a></th>

-					<th><a onclick="document.getElementById('sessionsFormSort').value='CreationTime'; document.getElementById('refreshButton').click(); return true;">Creation Time</a></th>

-					<th><a onclick="document.getElementById('sessionsFormSort').value='LastAccessedTime'; document.getElementById('refreshButton').click(); return true;">Last Accessed Time</a></th>

-					<th><a onclick="document.getElementById('sessionsFormSort').value='UsedTime'; document.getElementById('refreshButton').click(); return true;">Used Time</a></th>

-					<th><a onclick="document.getElementById('sessionsFormSort').value='InactiveTime'; document.getElementById('refreshButton').click(); return true;">Inactive Time</a></th>

-					<th><a onclick="document.getElementById('sessionsFormSort').value='TTL'; document.getElementById('refreshButton').click(); return true;"><span title="Time To Live">TTL</span></a></th>

-				</tr>

-			</tfoot>

-			<% } // end if %>

-			<tbody>

+    <fieldset><legend>Active HttpSessions informations</legend>

+        <input type="hidden" name="action" id="sessionsFormAction" value="injectSessions"/>

+        <input type="hidden" name="sort" id="sessionsFormSort" value="<%= JspHelper.escapeXml(request.getAttribute("sort")) %>"/>

+        <% String order = (String) request.getAttribute("order");

+           if (order == null || "".equals(order)) {

+               order = "ASC";

+           }

+        %>

+        <input type="hidden" name="order" id="sessionsFormSortOrder" value="<%= JspHelper.escapeXml(order) %>"/>

+        <input type="submit" name="refresh" id="refreshButton" value="Refresh Sessions list" onclick="document.getElementById('sessionsFormAction').value='refreshSessions'; return true;"/>

+        <%= JspHelper.formatNumber(activeSessions.size()) %> active Sessions<br/>

+        <table border="1" cellpadding="2" cellspacing="2" width="100%">

+            <thead>

+                <tr>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='id'; document.getElementById('refreshButton').click(); return true;">Session Id</a></th>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='id'; document.getElementById('refreshButton').click(); return true;">Type</a></th>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='locale'; document.getElementById('refreshButton').click(); return true;">Guessed Locale</a></th>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='user'; document.getElementById('refreshButton').click(); return true;">Guessed User name</a></th>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='CreationTime'; document.getElementById('refreshButton').click(); return true;">Creation Time</a></th>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='LastAccessedTime'; document.getElementById('refreshButton').click(); return true;">Last Accessed Time</a></th>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='UsedTime'; document.getElementById('refreshButton').click(); return true;">Used Time</a></th>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='InactiveTime'; document.getElementById('refreshButton').click(); return true;">Inactive Time</a></th>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='TTL'; document.getElementById('refreshButton').click(); return true;"><span title="Time To Live">TTL</span></a></th>

+                </tr>

+            </thead>

+            <% if (activeSessions.size() > 10) { %>

+            <tfoot><%-- <tfoot> is the same as <thead> --%>

+                <tr>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='id'; document.getElementById('refreshButton').click(); return true;">Session Id</a></th>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='id'; document.getElementById('refreshButton').click(); return true;">Type</a></th>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='locale'; document.getElementById('refreshButton').click(); return true;">Guessed Locale</a></th>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='user'; document.getElementById('refreshButton').click(); return true;">Guessed User name</a></th>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='CreationTime'; document.getElementById('refreshButton').click(); return true;">Creation Time</a></th>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='LastAccessedTime'; document.getElementById('refreshButton').click(); return true;">Last Accessed Time</a></th>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='UsedTime'; document.getElementById('refreshButton').click(); return true;">Used Time</a></th>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='InactiveTime'; document.getElementById('refreshButton').click(); return true;">Inactive Time</a></th>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='TTL'; document.getElementById('refreshButton').click(); return true;"><span title="Time To Live">TTL</span></a></th>

+                </tr>

+            </tfoot>

+            <% } // end if %>

+            <tbody>

 <% Iterator iter = activeSessions.iterator();

    while (iter.hasNext()) {

-   	Session currentSession = (Session) iter.next();

-   	String currentSessionId = JspHelper.escapeXml(currentSession.getId());

+       Session currentSession = (Session) iter.next();

+       String currentSessionId = JspHelper.escapeXml(currentSession.getId());

+       String type;

+       if (currentSession instanceof DeltaSession) {

+           if (((DeltaSession) currentSession).isPrimarySession()) {

+               type = "Primary";

+           } else {

+               type = "Backup";

+           }

+       } else if (currentSession instanceof DummyProxySession) {

+           type = "Proxy";

+       } else {

+           type = "Primary";

+       }

 %>

-				<tr>

-					<td>

-<input type="checkbox" name="sessionIds" value="<%= currentSessionId %>" /><a href="<%= submitUrl %>&amp;action=sessionDetail&amp;sessionId=<%= currentSessionId %>"><%= currentSessionId %></a>

-					</td>

-					<td style="text-align: center;"><%= JspHelper.guessDisplayLocaleFromSession(currentSession) %></td>

-					<td style="text-align: center;"><%= JspHelper.guessDisplayUserFromSession(currentSession) %></td>

-					<td style="text-align: center;"><%= JspHelper.getDisplayCreationTimeForSession(currentSession) %></td>

-					<td style="text-align: center;"><%= JspHelper.getDisplayLastAccessedTimeForSession(currentSession) %></td>

-					<td style="text-align: center;"><%= JspHelper.getDisplayUsedTimeForSession(currentSession) %></td>

-					<td style="text-align: center;"><%= JspHelper.getDisplayInactiveTimeForSession(currentSession) %></td>

-					<td style="text-align: center;"><%= JspHelper.getDisplayTTLForSession(currentSession) %></td>

-				</tr>

+                <tr>

+                    <td><input type="checkbox" name="sessionIds" value="<%= currentSessionId %>" />

+                      <%

+                        if ("Proxy".equals(type)) {

+                            out.print(currentSessionId);

+                        } else {

+                      %>

+                      <a href="<%= submitUrl %>&amp;action=sessionDetail&amp;sessionId=<%= currentSessionId %>&amp;sessionType=<%= type %>"><%= currentSessionId %></a>

+                      <%

+                        }

+                      %>

+                    </td>

+                    <td style="text-align: center;"><%= type %></td>

+                    <td style="text-align: center;"><%= JspHelper.guessDisplayLocaleFromSession(currentSession) %></td>

+                    <td style="text-align: center;"><%= JspHelper.guessDisplayUserFromSession(currentSession) %></td>

+                    <td style="text-align: center;"><%= JspHelper.getDisplayCreationTimeForSession(currentSession) %></td>

+                    <td style="text-align: center;"><%= JspHelper.getDisplayLastAccessedTimeForSession(currentSession) %></td>

+                    <td style="text-align: center;"><%= JspHelper.getDisplayUsedTimeForSession(currentSession) %></td>

+                    <td style="text-align: center;"><%= JspHelper.getDisplayInactiveTimeForSession(currentSession) %></td>

+                    <td style="text-align: center;"><%= JspHelper.getDisplayTTLForSession(currentSession) %></td>

+                </tr>

 <% } // end while %>

-			</tbody>

-		</table>

-		<p style="text-align: center;">

-			<input type="submit" name="invalidate" value="Invalidate selected Sessions" onclick="document.getElementById('sessionsFormAction').value='invalidateSessions'; return true;"/>

-		</p>

-	</fieldset>

+            </tbody>

+        </table>

+        <p style="text-align: center;">

+            <input type="submit" name="invalidate" value="Invalidate selected Sessions" onclick="document.getElementById('sessionsFormAction').value='invalidateSessions'; return true;"/>

+        </p>

+    </fieldset>

 </form>

 

 <form method="get" action="<%=request.getContextPath()%>/html">

@@ -128,15 +156,15 @@
 

 <%--div style="display: none;">

 <p>

-	<a href="http://validator.w3.org/check?uri=referer"><img

-		src="http://www.w3.org/Icons/valid-html401"

-		alt="Valid HTML 4.01!" height="31" width="88"></a>

-	<a href="http://validator.w3.org/check?uri=referer"><img

-		src="http://www.w3.org/Icons/valid-xhtml10"

-		alt="Valid XHTML 1.0!" height="31" width="88" /></a>

-	<a href="http://validator.w3.org/check?uri=referer"><img

-		src="http://www.w3.org/Icons/valid-xhtml11"

-		alt="Valid XHTML 1.1!" height="31" width="88" /></a>

+    <a href="http://validator.w3.org/check?uri=referer"><img

+        src="http://www.w3.org/Icons/valid-html401"

+        alt="Valid HTML 4.01!" height="31" width="88"></a>

+    <a href="http://validator.w3.org/check?uri=referer"><img

+        src="http://www.w3.org/Icons/valid-xhtml10"

+        alt="Valid XHTML 1.0!" height="31" width="88" /></a>

+    <a href="http://validator.w3.org/check?uri=referer"><img

+        src="http://www.w3.org/Icons/valid-xhtml11"

+        alt="Valid XHTML 1.1!" height="31" width="88" /></a>

 </p>

 </div--%>

 

diff --git a/tomcat-uid/webapps/manager/WEB-INF/web.xml b/tomcat-uid/webapps/manager/WEB-INF/web.xml
index 3d7fefe..4dd97ce 100644
--- a/tomcat-uid/webapps/manager/WEB-INF/web.xml
+++ b/tomcat-uid/webapps/manager/WEB-INF/web.xml
@@ -17,9 +17,11 @@
 -->

 

 <web-app xmlns="http://java.sun.com/xml/ns/javaee"

-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

-   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

-   version="2.5"> 

+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

+                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

+  version="3.0"

+  metadata-complete="true">

 

   <display-name>Tomcat Manager Application</display-name>

   <description>

@@ -42,6 +44,19 @@
       <param-name>debug</param-name>

       <param-value>2</param-value>

     </init-param>

+    <!-- Uncomment this to show proxy sessions from the Backup manager or a

+         StoreManager in the sessions list for an application

+    <init-param>

+      <param-name>showProxySessions</param-name>

+      <param-value>true</param-value>

+    </init-param>

+    -->

+    <multipart-config>

+      <!-- 50MB max -->

+      <max-file-size>52428800</max-file-size>

+      <max-request-size>52428800</max-request-size>

+      <file-size-threshold>0</file-size-threshold>

+    </multipart-config>

   </servlet>

   <servlet>

     <servlet-name>Status</servlet-name>

@@ -60,63 +75,7 @@
   <!-- Define the Manager Servlet Mapping -->

   <servlet-mapping>

     <servlet-name>Manager</servlet-name>

-      <url-pattern>/list</url-pattern>

-  </servlet-mapping>

-  <servlet-mapping>

-    <servlet-name>Manager</servlet-name>

-      <url-pattern>/expire</url-pattern>

-  </servlet-mapping>

-  <servlet-mapping>

-    <servlet-name>Manager</servlet-name>

-      <url-pattern>/sessions</url-pattern>

-  </servlet-mapping>

-  <servlet-mapping>

-    <servlet-name>Manager</servlet-name>

-      <url-pattern>/start</url-pattern>

-  </servlet-mapping>

-  <servlet-mapping>

-    <servlet-name>Manager</servlet-name>

-      <url-pattern>/stop</url-pattern>

-  </servlet-mapping>

-  <servlet-mapping>

-    <servlet-name>Manager</servlet-name>

-      <url-pattern>/install</url-pattern>

-  </servlet-mapping>

-  <servlet-mapping>

-    <servlet-name>Manager</servlet-name>

-      <url-pattern>/remove</url-pattern>

-  </servlet-mapping>

-  <servlet-mapping>

-    <servlet-name>Manager</servlet-name>

-      <url-pattern>/deploy</url-pattern>

-  </servlet-mapping>

-  <servlet-mapping>

-    <servlet-name>Manager</servlet-name>

-      <url-pattern>/undeploy</url-pattern>

-  </servlet-mapping>

-  <servlet-mapping>

-    <servlet-name>Manager</servlet-name>

-      <url-pattern>/reload</url-pattern>

-  </servlet-mapping>

-  <servlet-mapping>

-    <servlet-name>Manager</servlet-name>

-      <url-pattern>/save</url-pattern>

-  </servlet-mapping>

-  <servlet-mapping>

-    <servlet-name>Manager</servlet-name>

-      <url-pattern>/serverinfo</url-pattern>

-  </servlet-mapping>

-  <servlet-mapping>

-    <servlet-name>Manager</servlet-name>

-      <url-pattern>/roles</url-pattern>

-  </servlet-mapping>

-  <servlet-mapping>

-    <servlet-name>Manager</servlet-name>

-      <url-pattern>/resources</url-pattern>

-  </servlet-mapping>

-  <servlet-mapping>

-    <servlet-name>Manager</servlet-name>

-      <url-pattern>/findleaks</url-pattern>

+      <url-pattern>/text/*</url-pattern>

   </servlet-mapping>

   <servlet-mapping>

     <servlet-name>Status</servlet-name>

@@ -132,11 +91,25 @@
   </servlet-mapping>

 

   <filter>

+    <filter-name>SetCharacterEncoding</filter-name>

+    <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>

+    <init-param>

+      <param-name>encoding</param-name>

+      <param-value>UTF-8</param-value>

+    </init-param>

+  </filter>

+

+  <filter-mapping>

+    <filter-name>SetCharacterEncoding</filter-name>

+    <url-pattern>/*</url-pattern>

+  </filter-mapping>

+

+  <filter>

     <filter-name>CSRF</filter-name>

     <filter-class>org.apache.catalina.filters.CsrfPreventionFilter</filter-class>

     <init-param>

       <param-name>entryPoints</param-name>

-      <param-value>/html,/html/,/html/list</param-value>

+      <param-value>/html,/html/,/html/list,/index.jsp</param-value>

     </init-param>

   </filter>

 

@@ -145,107 +118,48 @@
     <servlet-name>HTMLManager</servlet-name>

   </filter-mapping>

 

-  <!-- Define reference to the user database for looking up roles -->

-  <resource-env-ref>

-    <description>

-      Link to the UserDatabase instance from which we request lists of

-      defined role names.  Typically, this will be connected to the global

-      user database with a ResourceLink element in server.xml or the context

-      configuration file for the Manager web application.

-    </description>

-    <resource-env-ref-name>users</resource-env-ref-name>

-    <resource-env-ref-type>

-      org.apache.catalina.UserDatabase

-    </resource-env-ref-type>

-  </resource-env-ref>

-

   <!-- Define a Security Constraint on this Application -->

+  <!-- NOTE:  None of these roles are present in the default users file -->

   <security-constraint>

     <web-resource-collection>

-      <web-resource-name>Manager commands</web-resource-name>

-      <url-pattern>/list</url-pattern>

-      <url-pattern>/expire</url-pattern>

-      <url-pattern>/sessions</url-pattern>

-      <url-pattern>/start</url-pattern>

-      <url-pattern>/stop</url-pattern>

-      <url-pattern>/install</url-pattern>

-      <url-pattern>/remove</url-pattern>

-      <url-pattern>/deploy</url-pattern>

-      <url-pattern>/undeploy</url-pattern>

-      <url-pattern>/reload</url-pattern>

-      <url-pattern>/save</url-pattern>

-      <url-pattern>/serverinfo</url-pattern>

-      <url-pattern>/roles</url-pattern>

-      <url-pattern>/resources</url-pattern>

-      <url-pattern>/findleaks</url-pattern>

-    </web-resource-collection>

-    <auth-constraint>

-       <!-- NOTE: 1. These roles are not present in the default users file

-                  2. The manager role is deprecated, it will be removed in

-                     Tomcat 7.

-                  3. Use the manager-script role to take advantage of the new

-                     CSRF protection. Using the manager role or assigning both

-                     the manager-script and manager-gui roles to the same user

-                     will bypass the CSRF protection. -->

-       <role-name>manager-script</role-name>

-       <role-name>manager</role-name>

-    </auth-constraint>

-  </security-constraint>

-

-  <security-constraint>

-    <web-resource-collection>

-      <web-resource-name>HTML Manager commands</web-resource-name>

+      <web-resource-name>HTML Manager interface (for humans)</web-resource-name>

       <url-pattern>/html/*</url-pattern>

     </web-resource-collection>

     <auth-constraint>

-       <!-- NOTE: 1. These roles are not present in the default users file

-                  2. The manager role is deprecated, it will be removed in

-                     Tomcat 7.

-                  3. Use just the manager-gui role to take advantage of the new

-                     CSRF protection. Assigning the manager role or manager-gui

-                     role along with either the manager-script or manager-jmx

-                     roles to the same user will bypass the CSRF protection. -->

        <role-name>manager-gui</role-name>

-       <role-name>manager</role-name>

     </auth-constraint>

   </security-constraint>

-

   <security-constraint>

     <web-resource-collection>

-      <web-resource-name>JMX proxy</web-resource-name>

+      <web-resource-name>Text Manager interface (for scripts)</web-resource-name>

+      <url-pattern>/text/*</url-pattern>

+    </web-resource-collection>

+    <auth-constraint>

+       <role-name>manager-script</role-name>

+    </auth-constraint>

+  </security-constraint>

+  <security-constraint>

+    <web-resource-collection>

+      <web-resource-name>JMX Proxy interface</web-resource-name>

       <url-pattern>/jmxproxy/*</url-pattern>

     </web-resource-collection>

     <auth-constraint>

-       <!-- NOTE: 1. These roles are not present in the default users file

-                  2. The manager role is deprecated, it will be removed in

-                     Tomcat 7.

-                  3. Use the manager-jmx role to take advantage of the new

-                     CSRF protection. Using the manager role or assigning both

-                     the manager-jmx and manager-gui roles to the same user

-                     will bypass the CSRF protection. -->

        <role-name>manager-jmx</role-name>

-       <role-name>manager</role-name>

     </auth-constraint>

   </security-constraint>

-

   <security-constraint>

     <web-resource-collection>

-      <web-resource-name>Status</web-resource-name>

+      <web-resource-name>Status interface</web-resource-name>

       <url-pattern>/status/*</url-pattern>

     </web-resource-collection>

     <auth-constraint>

-       <!-- NOTE: 1. These roles are not present in the default users file

-                  2. The manager role is deprecated, it will be removed in

-                     Tomcat 7. -->

-       <role-name>manager-status</role-name>

        <role-name>manager-gui</role-name>

        <role-name>manager-script</role-name>

        <role-name>manager-jmx</role-name>

-       <role-name>manager</role-name>

+       <role-name>manager-status</role-name>

     </auth-constraint>

   </security-constraint>

 

-

   <!-- Define the Login Configuration for this Application -->

   <login-config>

     <auth-method>BASIC</auth-method>

@@ -273,16 +187,10 @@
   </security-role>

   <security-role>

     <description>

-      The role that is required to access to the Manager Status pages 

+      The role that is required to access to the Manager Status pages

     </description>

     <role-name>manager-status</role-name>

   </security-role>

-  <security-role>

-    <description>

-      Deprecated role that can access all Manager functionality

-    </description>

-    <role-name>manager</role-name>

-  </security-role>

 

   <error-page>

     <error-code>401</error-code>

@@ -292,5 +200,9 @@
     <error-code>403</error-code>

     <location>/WEB-INF/jsp/403.jsp</location>

   </error-page>

+  <error-page>

+    <error-code>404</error-code>

+    <location>/WEB-INF/jsp/404.jsp</location>

+  </error-page>

 

 </web-app>

diff --git a/tomcat-uid/webapps/manager/images/asf-logo.gif b/tomcat-uid/webapps/manager/images/asf-logo.gif
deleted file mode 100644
index 22eb9d7..0000000
--- a/tomcat-uid/webapps/manager/images/asf-logo.gif
+++ /dev/null
Binary files differ
diff --git a/tomcat-uid/webapps/manager/images/asf-logo.svg b/tomcat-uid/webapps/manager/images/asf-logo.svg
new file mode 100644
index 0000000..eaf91df
--- /dev/null
+++ b/tomcat-uid/webapps/manager/images/asf-logo.svg
@@ -0,0 +1,210 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->

+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

+<svg version="1.1" id="Layer_2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"

+	 viewBox="0 0 7127.6 2890" enable-background="new 0 0 7127.6 2890" xml:space="preserve">

+<path fill="#6D6E71" d="M7104.7,847.8c15.3,15.3,22.9,33.7,22.9,55.2c0,21.5-7.6,39.9-22.9,55.4c-15.3,15.4-33.8,23.1-55.6,23.1

+	c-21.8,0-40.2-7.6-55.4-22.9c-15.1-15.3-22.7-33.7-22.7-55.2c0-21.5,7.6-39.9,22.9-55.4c15.3-15.4,33.7-23.1,55.4-23.1

+	C7070.9,824.9,7089.4,832.5,7104.7,847.8z M7098.1,951.9c13.3-13.6,20-29.8,20-48.7s-6.6-35-19.8-48.5

+	c-13.2-13.4-29.4-20.1-48.6-20.1c-19.2,0-35.4,6.7-48.7,20.2c-13.3,13.5-19.9,29.7-19.9,48.7c0,19,6.6,35.2,19.7,48.6

+	c13.1,13.4,29.3,20.1,48.5,20.1S7084.7,965.4,7098.1,951.9z M7087.1,888.1c0,14-6.1,22.8-18.4,26.4l22.5,30.5h-18.2l-20.3-28.3

+	h-18.6v28.3h-14.7v-84.6h31.8c12.8,0,22,2.2,27.6,6.6C7084.4,871.4,7087.1,878.4,7087.1,888.1z M7068.2,900c3-2.4,4.4-6.5,4.4-12

+	c0-5.5-1.5-9.4-4.5-11.6c-3-2.2-8.4-3.2-16-3.2h-18v30.5h17.5C7059.7,903.6,7065.3,902.4,7068.2,900z"/>

+<path fill="#6D6E71" d="M1803.6,499.8v155.4h-20V499.8h-56.8v-19.2h133.9v19.2H1803.6z"/>

+<path fill="#6D6E71" d="M2082.2,655.2v-76.9h-105.2v76.9h-20V480.5h20v78.9h105.2v-78.9h20v174.7H2082.2z"/>

+<path fill="#6D6E71" d="M2241.4,499.8v57.4h88.1v19.2h-88.1v59.8h101.8v19h-121.8V480.5H2340v19.2H2241.4z"/>

+<path fill="#D22128" d="M1574.5,1852.4l417.3-997.6h80.1l417.3,997.6h-105.4l-129.3-311.9h-448.2l-127.9,311.9H1574.5z M2032.6,970

+	l-205.1,493.2h404.7L2032.6,970z"/>

+<path fill="#D22128" d="M2596.9,1852.4V854.8H3010c171.4,0,295.1,158.8,295.1,313.3c0,163-115.2,316.1-286.6,316.1h-324.6v368.1

+	H2596.9z M2693.9,1397.1h318.9c118,0,193.9-108.2,193.9-229c0-125.1-92.7-226.2-202.3-226.2h-310.5V1397.1z"/>

+<path fill="#D22128" d="M3250.5,1852.4l417.3-997.6h80.1l417.3,997.6h-105.4l-129.3-311.9h-448.2l-127.9,311.9H3250.5z M3708.6,970

+	l-205.1,493.2h404.7L3708.6,970z"/>

+<path fill="#D22128" d="M4637.3,849.1c177,0,306.3,89.9,368.1,217.8l-78.7,47.8c-63.2-132.1-186.9-177-295.1-177

+	c-238.9,0-369.5,213.6-369.5,414.5c0,220.6,161.6,420.1,373.7,420.1c112.4,0,244.5-56.2,307.7-185.5l81.5,42.1

+	c-64.6,148.9-241.7,231.8-394.8,231.8c-274,0-466.5-261.3-466.5-514.2C4163.8,1106.3,4336.6,849.1,4637.3,849.1z"/>

+<path fill="#D22128" d="M5949.1,854.8v997.6h-98.4v-466.5h-591.5v466.5h-96.9V854.8h96.9v444h591.5v-444H5949.1z"/>

+<path fill="#D22128" d="M6844.6,1765.2v87.1h-670.2V854.8H6832v87.1h-560.6v359.7h489v82.9h-489v380.8H6844.6z"/>

+<path fill="#6D6E71" d="M1667.6,2063.6c11.8,3.5,22.2,8.3,31,14.2l-10.3,22.6c-9-6-18.6-10.4-28.9-13.4c-10.2-2.9-20-4.4-29.2-4.4

+	c-13.6,0-24.5,2.4-32.6,7.3c-8.1,4.9-12.2,11.8-12.2,20.7c0,7.6,2.3,14,6.8,19c4.5,5,10.2,8.9,17,11.7c6.8,2.8,16.1,6,28,9.6

+	c14.4,4.6,26,8.9,34.7,12.9c8.8,4,16.3,9.9,22.5,17.8c6.2,7.8,9.3,18.2,9.3,31c0,11.7-3.2,21.8-9.5,30.6

+	c-6.3,8.7-15.3,15.5-26.8,20.3c-11.6,4.8-24.9,7.2-40,7.2c-15.1,0-29.7-2.9-43.9-8.7c-14.2-5.8-26.4-13.6-36.6-23.4l10.7-21.6

+	c9.6,9.4,20.7,16.7,33.3,21.9c12.6,5.2,24.8,7.8,36.8,7.8c15.3,0,27.3-3,36.1-8.9c8.8-5.9,13.2-13.9,13.2-23.9

+	c0-7.8-2.3-14.3-6.9-19.4c-4.6-5.1-10.3-9-17.1-11.9c-6.8-2.8-16.1-6-28-9.6c-14.2-4.2-25.7-8.3-34.6-12.2

+	c-8.9-3.9-16.4-9.7-22.5-17.5c-6.1-7.7-9.2-17.9-9.2-30.6c0-10.9,3-20.4,9-28.6c6-8.2,14.6-14.6,25.6-19.1

+	c11.1-4.5,23.8-6.8,38.2-6.8C1643.8,2058.3,1655.7,2060.1,1667.6,2063.6z"/>

+<path fill="#6D6E71" d="M1980.1,2072.8c16.8,9.4,30.2,22.3,40,38.4c9.8,16.2,14.8,33.9,14.8,53.3c0,19.5-4.9,37.4-14.8,53.6

+	c-9.8,16.3-23.2,29.1-40,38.6c-16.8,9.5-35.3,14.3-55.2,14.3c-20.3,0-38.8-4.7-55.7-14.3c-16.8-9.5-30.2-22.4-40-38.6

+	c-9.8-16.3-14.8-34.1-14.8-53.6c0-19.5,4.9-37.3,14.8-53.5c9.8-16.2,23.2-29,40-38.3c16.8-9.4,35.4-14,55.7-14

+	C1944.8,2058.6,1963.2,2063.3,1980.1,2072.8z M1881.9,2092.7c-13.1,7.4-23.6,17.5-31.4,30.1c-7.8,12.6-11.8,26.5-11.8,41.7

+	c0,15.3,3.9,29.3,11.8,42c7.8,12.7,18.3,22.8,31.4,30.2c13.1,7.4,27.4,11.1,42.9,11.1c15.5,0,29.7-3.7,42.7-11.1

+	c13-7.4,23.3-17.4,31.1-30.2c7.7-12.7,11.6-26.7,11.6-42s-3.9-29.2-11.6-41.8c-7.7-12.6-18.1-22.6-31.1-30

+	c-13-7.4-27.2-11.2-42.6-11.2C1909.4,2081.5,1895.1,2085.2,1881.9,2092.7z"/>

+<path fill="#6D6E71" d="M2186.5,2082.4v74h98.4v23.2h-98.4v90.2h-24.1v-210.6h133.8v23.2H2186.5z"/>

+<path fill="#6D6E71" d="M2491.6,2082.4v187.4h-24.1v-187.4h-68.4v-23.2h161.4v23.2H2491.6z"/>

+<path fill="#6D6E71" d="M2871.8,2269.8l-56.8-177.4l-57.6,177.4h-24.5l-70.5-210.6h25.9l57.9,182.7l57.1-182.4l24.1-0.3l57.7,182.7

+	l57.1-182.7h25l-70.6,210.6H2871.8z"/>

+<path fill="#6D6E71" d="M3087.3,2216.6l-23.5,53.2h-25.6l94.4-210.6h25l94.1,210.6h-26.1l-23.5-53.2H3087.3z M3144.5,2086.6

+	l-46.9,106.8h94.4L3144.5,2086.6z"/>

+<path fill="#6D6E71" d="M3461.1,2202.7c-6,0.4-10.7,0.6-14.1,0.6h-56v66.5H3367v-210.6h80c26.2,0,46.6,6.2,61.2,18.5

+	c14.5,12.3,21.8,29.8,21.8,52.3c0,17.2-4.1,31.7-12.2,43.3c-8.1,11.6-19.8,20-35,25l49.2,71.5h-27.3L3461.1,2202.7z M3491.3,2167.6

+	c10.3-8.4,15.5-20.8,15.5-37c0-15.9-5.2-27.9-15.5-36c-10.3-8.1-25.1-12.2-44.3-12.2h-56v97.8h56

+	C3466.2,2180.2,3481,2176,3491.3,2167.6z"/>

+<path fill="#6D6E71" d="M3688.3,2082.4v69.2h106.2v23.2h-106.2v72.1h122.8v22.9h-146.9v-210.6h142.9v23.2H3688.3z"/>

+<path fill="#6D6E71" d="M4147,2082.4v74h98.4v23.2H4147v90.2h-24.1v-210.6h133.8v23.2H4147z"/>

+<path fill="#6D6E71" d="M4523.3,2072.8c16.8,9.4,30.2,22.3,40,38.4c9.8,16.2,14.8,33.9,14.8,53.3c0,19.5-4.9,37.4-14.8,53.6

+	c-9.8,16.3-23.2,29.1-40,38.6c-16.8,9.5-35.3,14.3-55.2,14.3c-20.3,0-38.8-4.7-55.7-14.3c-16.8-9.5-30.2-22.4-40-38.6

+	c-9.8-16.3-14.8-34.1-14.8-53.6c0-19.5,4.9-37.3,14.8-53.5c9.8-16.2,23.2-29,40-38.3c16.8-9.4,35.4-14,55.7-14

+	C4488.1,2058.6,4506.5,2063.3,4523.3,2072.8z M4425.2,2092.7c-13.1,7.4-23.6,17.5-31.4,30.1c-7.8,12.6-11.8,26.5-11.8,41.7

+	c0,15.3,3.9,29.3,11.8,42c7.8,12.7,18.3,22.8,31.4,30.2c13.1,7.4,27.4,11.1,42.9,11.1c15.5,0,29.7-3.7,42.7-11.1

+	c13-7.4,23.3-17.4,31.1-30.2c7.7-12.7,11.6-26.7,11.6-42s-3.9-29.2-11.6-41.8c-7.7-12.6-18.1-22.6-31.1-30

+	c-13-7.4-27.2-11.2-42.6-11.2C4452.6,2081.5,4438.3,2085.2,4425.2,2092.7z"/>

+<path fill="#6D6E71" d="M4854.7,2247.7c-15.7,15.5-37.3,23.3-64.8,23.3c-27.7,0-49.4-7.8-65.1-23.3c-15.7-15.5-23.6-37-23.6-64.6

+	v-124h24.1v124c0,20.3,5.8,36.1,17.3,47.5c11.6,11.4,27.3,17.1,47.3,17.1c20.1,0,35.8-5.7,47.1-17c11.4-11.3,17-27.2,17-47.7v-124

+	h24.1v124C4878.2,2210.7,4870.4,2232.2,4854.7,2247.7z"/>

+<path fill="#6D6E71" d="M5169.5,2269.8l-126.3-169.1v169.1h-24.1v-210.6h25l126.3,169.3v-169.3h23.8v210.6H5169.5z"/>

+<path fill="#6D6E71" d="M5478.4,2073.1c16.4,9.3,29.4,21.9,38.9,37.9c9.6,16,14.3,33.9,14.3,53.5s-4.8,37.6-14.3,53.6

+	c-9.5,16.1-22.6,28.7-39.3,37.9c-16.6,9.2-35.2,13.8-55.5,13.8h-84.3v-210.6h85.2C5443.7,2059.2,5462,2063.8,5478.4,2073.1z

+	 M5362.3,2246.9h61.4c15.5,0,29.6-3.5,42.3-10.6c12.7-7.1,22.8-16.9,30.2-29.5c7.4-12.5,11.1-26.5,11.1-42

+	c0-15.5-3.8-29.4-11.3-41.9c-7.5-12.5-17.7-22.3-30.6-29.6c-12.8-7.2-27-10.9-42.6-10.9h-60.5V2246.9z"/>

+<path fill="#6D6E71" d="M5668.6,2216.6l-23.5,53.2h-25.6l94.4-210.6h25l94.1,210.6H5807l-23.5-53.2H5668.6z M5725.8,2086.6

+	l-46.9,106.8h94.4L5725.8,2086.6z"/>

+<path fill="#6D6E71" d="M5991,2082.4v187.4H5967v-187.4h-68.4v-23.2h161.4v23.2H5991z"/>

+<path fill="#6D6E71" d="M6175.9,2269.8v-210.6h24.1v210.6H6175.9z"/>

+<path fill="#6D6E71" d="M6493.7,2072.8c16.8,9.4,30.2,22.3,40,38.4c9.8,16.2,14.8,33.9,14.8,53.3c0,19.5-4.9,37.4-14.8,53.6

+	c-9.8,16.3-23.2,29.1-40,38.6c-16.8,9.5-35.3,14.3-55.2,14.3c-20.3,0-38.8-4.7-55.7-14.3c-16.8-9.5-30.2-22.4-40-38.6

+	c-9.8-16.3-14.8-34.1-14.8-53.6c0-19.5,4.9-37.3,14.8-53.5c9.8-16.2,23.2-29,40-38.3c16.8-9.4,35.4-14,55.7-14

+	C6458.5,2058.6,6476.9,2063.3,6493.7,2072.8z M6395.6,2092.7c-13.1,7.4-23.6,17.5-31.4,30.1c-7.8,12.6-11.8,26.5-11.8,41.7

+	c0,15.3,3.9,29.3,11.8,42c7.8,12.7,18.3,22.8,31.4,30.2c13.1,7.4,27.4,11.1,42.9,11.1c15.5,0,29.7-3.7,42.7-11.1

+	c13-7.4,23.3-17.4,31.1-30.2c7.7-12.7,11.6-26.7,11.6-42s-3.9-29.2-11.6-41.8c-7.7-12.6-18.1-22.6-31.1-30

+	c-13-7.4-27.2-11.2-42.6-11.2C6423,2081.5,6408.8,2085.2,6395.6,2092.7z"/>

+<path fill="#6D6E71" d="M6826.5,2269.8l-126.3-169.1v169.1h-24.1v-210.6h25l126.3,169.3v-169.3h23.8v210.6H6826.5z"/>

+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-4516.6152" y1="-2338.7222" x2="-4108.4111" y2="-1861.3982" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">

+	<stop  offset="0" style="stop-color:#F69923"/>

+	<stop  offset="0.3123" style="stop-color:#F79A23"/>

+	<stop  offset="0.8383" style="stop-color:#E97826"/>

+</linearGradient>

+<path fill="url(#SVGID_1_)" d="M1230.1,13.7c-45.3,26.8-120.6,102.5-210.5,212.3l82.6,155.9c58-82.9,116.9-157.5,176.3-221.2

+	c4.6-5.1,7-7.5,7-7.5c-2.3,2.5-4.6,5-7,7.5c-19.2,21.2-77.5,89.2-165.5,224.4c84.7-4.2,214.9-21.6,321.1-39.7

+	c31.6-177-31-258-31-258S1323.4-41.4,1230.1,13.7z"/>

+<path fill="none" d="M1090.2,903.1c0.6-0.1,1.2-0.2,1.8-0.3l-11.9,1.3c-0.7,0.3-1.4,0.7-2.1,1

+	C1082.1,904.4,1086.2,903.7,1090.2,903.1z"/>

+<path fill="none" d="M1005.9,1182.3c-6.7,1.5-13.7,2.7-20.7,3.7C992.3,1185,999.2,1183.8,1005.9,1182.3z"/>

+<path fill="none" d="M432.9,1808.8c0.9-2.3,1.8-4.7,2.6-7c18.2-48,36.2-94.7,54-140.1c20-51,39.8-100.4,59.3-148.3

+	c20.6-50.4,40.9-99.2,60.9-146.3c21-49.4,41.7-97,62-142.8c16.5-37.3,32.8-73.4,48.9-108.3c5.4-11.7,10.7-23.2,16-34.6

+	c10.5-22.7,21-44.8,31.3-66.5c9.5-20,19-39.6,28.3-58.8c3.1-6.4,6.2-12.8,9.3-19.1c0.5-1,1-2,1.5-3.1l-10.2,1.1l-8-15.9

+	c-0.8,1.6-1.6,3.1-2.4,4.6c-14.5,28.8-28.9,57.9-43.1,87.2c-8.2,16.9-16.4,34-24.6,51c-22.6,47.4-44.8,95.2-66.6,143.3

+	c-22.1,48.6-43.7,97.5-64.9,146.5c-20.8,48.1-41.3,96.2-61.2,144.2c-20,48-39.5,95.7-58.5,143.2c-19.9,49.5-39.2,98.7-58,147.2

+	c-4.2,10.9-8.5,21.9-12.7,32.8c-15,39.2-29.7,77.8-44,116l12.7,25.1l11.4-1.2c0.4-1.1,0.8-2.3,1.3-3.4

+	C396.7,1905.4,414.9,1856.4,432.9,1808.8z"/>

+<path fill="none" d="M980,1186.8L980,1186.8c0.1,0,0.1,0,0.1-0.1C980.1,1186.8,980.1,1186.8,980,1186.8z"/>

+<path fill="#BE202E" d="M952.6,1323c-10.6,1.9-21.4,3.8-32.5,5.7c-0.1,0-0.1,0.1-0.2,0.1c5.6-0.8,11.2-1.7,16.6-2.6

+	C942,1325.2,947.3,1324.1,952.6,1323z"/>

+<path opacity="0.35" fill="#BE202E" d="M952.6,1323c-10.6,1.9-21.4,3.8-32.5,5.7c-0.1,0-0.1,0.1-0.2,0.1c5.6-0.8,11.2-1.7,16.6-2.6

+	C942,1325.2,947.3,1324.1,952.6,1323z"/>

+<path fill="#BE202E" d="M980.3,1186.7C980.2,1186.7,980.2,1186.7,980.3,1186.7c-0.1,0.1-0.2,0.1-0.2,0.1c1.8-0.2,3.5-0.5,5.2-0.8

+	c7-1,13.9-2.2,20.7-3.7C997.5,1183.8,989,1185.2,980.3,1186.7L980.3,1186.7L980.3,1186.7z"/>

+<path opacity="0.35" fill="#BE202E" d="M980.3,1186.7C980.2,1186.7,980.2,1186.7,980.3,1186.7c-0.1,0.1-0.2,0.1-0.2,0.1

+	c1.8-0.2,3.5-0.5,5.2-0.8c7-1,13.9-2.2,20.7-3.7C997.5,1183.8,989,1185.2,980.3,1186.7L980.3,1186.7L980.3,1186.7z"/>

+<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-7537.7339" y1="-2391.4075" x2="-4625.4141" y2="-2391.4075" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">

+	<stop  offset="0.3233" style="stop-color:#9E2064"/>

+	<stop  offset="0.6302" style="stop-color:#C92037"/>

+	<stop  offset="0.7514" style="stop-color:#CD2335"/>

+	<stop  offset="1" style="stop-color:#E97826"/>

+</linearGradient>

+<path fill="url(#SVGID_2_)" d="M858.6,784.7c25.1-46.9,50.5-92.8,76.2-137.4c26.7-46.4,53.7-91.3,80.9-134.7

+	c1.6-2.6,3.2-5.2,4.8-7.7c27-42.7,54.2-83.7,81.6-122.9L1019.5,226c-6.2,7.6-12.5,15.3-18.8,23.2c-23.8,29.7-48.6,61.6-73.9,95.5

+	c-28.6,38.2-58,78.9-87.8,121.7c-27.6,39.5-55.5,80.9-83.5,123.7c-23.8,36.5-47.7,74-71.4,112.5c-0.9,1.4-1.8,2.9-2.6,4.3

+	l107.5,212.3C811.8,873.6,835.1,828.7,858.6,784.7z"/>

+<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="-7186.1777" y1="-2099.3059" x2="-5450.7183" y2="-2099.3059" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">

+	<stop  offset="0" style="stop-color:#282662"/>

+	<stop  offset="9.548390e-02" style="stop-color:#662E8D"/>

+	<stop  offset="0.7882" style="stop-color:#9F2064"/>

+	<stop  offset="0.9487" style="stop-color:#CD2032"/>

+</linearGradient>

+<path fill="url(#SVGID_3_)" d="M369,1981c-14.2,39.1-28.5,78.9-42.9,119.6c-0.2,0.6-0.4,1.2-0.6,1.8c-2,5.7-4.1,11.5-6.1,17.2

+	c-9.7,27.4-18,52.1-37.3,108.2c31.7,14.5,57.1,52.5,81.1,95.6c-2.6-44.7-21-86.6-56.2-119.1c156.1,7,290.6-32.4,360.1-146.6

+	c6.2-10.2,11.9-20.9,17-32.2c-31.6,40.1-70.8,57.1-144.5,53c-0.2,0.1-0.3,0.1-0.5,0.2c0.2-0.1,0.3-0.1,0.5-0.2

+	c108.6-48.6,163.1-95.3,211.2-172.6c11.4-18.3,22.5-38.4,33.8-60.6c-94.9,97.5-205,125.3-320.9,104.2l-86.9,9.5

+	C374.4,1966.3,371.7,1973.6,369,1981z"/>

+<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="-7374.1626" y1="-2418.5454" x2="-4461.8428" y2="-2418.5454" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">

+	<stop  offset="0.3233" style="stop-color:#9E2064"/>

+	<stop  offset="0.6302" style="stop-color:#C92037"/>

+	<stop  offset="0.7514" style="stop-color:#CD2335"/>

+	<stop  offset="1" style="stop-color:#E97826"/>

+</linearGradient>

+<path fill="url(#SVGID_4_)" d="M409.6,1786.3c18.8-48.5,38.1-97.7,58-147.2c19-47.4,38.5-95.2,58.5-143.2

+	c20-48,40.4-96.1,61.2-144.2c21.2-49,42.9-97.8,64.9-146.5c21.8-48.1,44-95.9,66.6-143.3c8.1-17.1,16.3-34.1,24.6-51

+	c14.2-29.3,28.6-58.4,43.1-87.2c0.8-1.6,1.6-3.1,2.4-4.6L681.4,706.8c-1.8,2.9-3.5,5.8-5.3,8.6c-25.1,40.9-50,82.7-74.4,125.4

+	c-24.7,43.1-49,87.1-72.7,131.7c-20,37.6-39.6,75.6-58.6,113.9c-3.8,7.8-7.6,15.5-11.3,23.2c-23.4,48.2-44.6,94.8-63.7,139.5

+	c-21.7,50.7-40.7,99.2-57.5,145.1c-11,30.2-21,59.4-30.1,87.4c-7.5,24-14.7,47.9-21.5,71.8c-16,56.3-29.9,112.4-41.2,168.3

+	L353,1935.1c14.3-38.1,28.9-76.8,44-116C401.1,1808.2,405.4,1797.3,409.6,1786.3z"/>

+<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="-7161.7642" y1="-2379.1431" x2="-5631.2524" y2="-2379.1431" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">

+	<stop  offset="0" style="stop-color:#282662"/>

+	<stop  offset="9.548390e-02" style="stop-color:#662E8D"/>

+	<stop  offset="0.7882" style="stop-color:#9F2064"/>

+	<stop  offset="0.9487" style="stop-color:#CD2032"/>

+</linearGradient>

+<path fill="url(#SVGID_5_)" d="M243.5,1729.4c-13.6,68.2-23.2,136.2-28,203.8c-0.2,2.4-0.4,4.7-0.5,7.1

+	c-33.7-54-124-106.8-123.8-106.2c64.6,93.7,113.7,186.7,120.9,278c-34.6,7.1-82-3.2-136.8-23.3c57.1,52.5,100,67,116.7,70.9

+	c-52.5,3.3-107.1,39.3-162.1,80.8c80.5-32.8,145.5-45.8,192.1-35.3C148.1,2414.2,74.1,2645,0,2890c22.7-6.7,36.2-21.9,43.9-42.6

+	c13.2-44.4,100.8-335.6,238-718.2c3.9-10.9,7.8-21.8,11.8-32.9c1.1-3,2.2-6.1,3.3-9.2c14.5-40.1,29.5-81.1,45.1-122.9

+	c3.5-9.5,7.1-19,10.7-28.6c0.1-0.2,0.1-0.4,0.2-0.6l-107.9-213.2C244.6,1724.4,244,1726.9,243.5,1729.4z"/>

+<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="-7374.1626" y1="-2117.1309" x2="-4461.8428" y2="-2117.1309" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">

+	<stop  offset="0.3233" style="stop-color:#9E2064"/>

+	<stop  offset="0.6302" style="stop-color:#C92037"/>

+	<stop  offset="0.7514" style="stop-color:#CD2335"/>

+	<stop  offset="1" style="stop-color:#E97826"/>

+</linearGradient>

+<path fill="url(#SVGID_6_)" d="M805.6,937c-3.1,6.3-6.2,12.7-9.3,19.1c-9.3,19.2-18.8,38.8-28.3,58.8

+	c-10.3,21.7-20.7,43.9-31.3,66.5c-5.3,11.4-10.6,22.9-16,34.6c-16.1,35-32.4,71.1-48.9,108.3c-20.3,45.8-41,93.4-62,142.8

+	c-20,47.1-40.3,95.9-60.9,146.3c-19.5,47.9-39.3,97.3-59.3,148.3c-17.8,45.4-35.9,92.1-54,140.1c-0.9,2.3-1.8,4.7-2.6,7

+	c-18,47.6-36.2,96.6-54.6,146.8c-0.4,1.1-0.8,2.3-1.3,3.4l86.9-9.5c-1.7-0.3-3.5-0.5-5.2-0.9c103.9-13,242.1-90.6,331.4-186.5

+	c41.1-44.2,78.5-96.3,113-157.3c25.7-45.4,49.8-95.8,72.8-151.5c20.1-48.7,39.4-101.4,58-158.6c-23.9,12.6-51.2,21.8-81.4,28.2

+	c-5.3,1.1-10.7,2.2-16.1,3.1c-5.5,1-11,1.8-16.6,2.6l0,0l0,0c0.1,0,0.1-0.1,0.2-0.1c96.9-37.3,158-109.2,202.4-197.4

+	c-25.5,17.4-66.9,40.1-116.6,51.1c-6.7,1.5-13.7,2.7-20.7,3.7c-1.7,0.3-3.5,0.6-5.2,0.8l0,0l0,0c0.1,0,0.1,0,0.1-0.1

+	c0,0,0.1,0,0.1,0l0,0c33.6-14.1,62-29.8,86.6-48.4c5.3-4,10.4-8.1,15.3-12.3c7.5-6.5,14.7-13.3,21.5-20.5c4.4-4.6,8.6-9.3,12.7-14.2

+	c9.6-11.5,18.7-23.9,27.1-37.3c2.6-4.1,5.1-8.3,7.6-12.6c3.2-6.2,6.3-12.3,9.3-18.3c13.5-27.2,24.4-51.5,33-72.8

+	c4.3-10.6,8.1-20.5,11.3-29.7c1.3-3.7,2.5-7.2,3.7-10.6c3.4-10.2,6.2-19.3,8.4-27.3c3.3-12,5.3-21.5,6.4-28.4l0,0l0,0

+	c-3.3,2.6-7.1,5.2-11.3,7.7c-29.3,17.5-79.5,33.4-119.9,40.8l79.8-8.8l-79.8,8.8c-0.6,0.1-1.2,0.2-1.8,0.3c-4,0.7-8.1,1.3-12.2,2

+	c0.7-0.3,1.4-0.7,2.1-1l-273,29.9C806.6,935,806.1,936,805.6,937z"/>

+<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="-7554.8232" y1="-2132.0981" x2="-4642.5034" y2="-2132.0981" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">

+	<stop  offset="0.3233" style="stop-color:#9E2064"/>

+	<stop  offset="0.6302" style="stop-color:#C92037"/>

+	<stop  offset="0.7514" style="stop-color:#CD2335"/>

+	<stop  offset="1" style="stop-color:#E97826"/>

+</linearGradient>

+<path fill="url(#SVGID_7_)" d="M1112.9,385.1c-24.3,37.3-50.8,79.6-79.4,127.5c-1.5,2.5-3,5.1-4.5,7.6

+	c-24.6,41.5-50.8,87.1-78.3,137c-23.8,43.1-48.5,89.3-74.3,139c-22.4,43.3-45.6,89.2-69.4,137.8l273-29.9

+	c79.5-36.6,115.1-69.7,149.6-117.6c9.2-13.2,18.4-27,27.5-41.3c28-43.8,55.6-92,80.1-139.9c23.7-46.3,44.7-92.2,60.7-133.5

+	c10.2-26.3,18.4-50.8,24.1-72.3c5-19,8.9-36.9,11.9-54.1C1327.9,363.5,1197.6,380.9,1112.9,385.1z"/>

+<path fill="#BE202E" d="M936.5,1326.1c-5.5,1-11,1.8-16.6,2.6l0,0C925.5,1328,931,1327.1,936.5,1326.1z"/>

+<path opacity="0.35" fill="#BE202E" d="M936.5,1326.1c-5.5,1-11,1.8-16.6,2.6l0,0C925.5,1328,931,1327.1,936.5,1326.1z"/>

+<linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="-7374.1626" y1="-2027.484" x2="-4461.8433" y2="-2027.484" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">

+	<stop  offset="0.3233" style="stop-color:#9E2064"/>

+	<stop  offset="0.6302" style="stop-color:#C92037"/>

+	<stop  offset="0.7514" style="stop-color:#CD2335"/>

+	<stop  offset="1" style="stop-color:#E97826"/>

+</linearGradient>

+<path fill="url(#SVGID_8_)" d="M936.5,1326.1c-5.5,1-11,1.8-16.6,2.6l0,0C925.5,1328,931,1327.1,936.5,1326.1z"/>

+<path fill="#BE202E" d="M980,1186.8c1.8-0.2,3.5-0.5,5.2-0.8C983.5,1186.3,981.8,1186.6,980,1186.8L980,1186.8z"/>

+<path opacity="0.35" fill="#BE202E" d="M980,1186.8c1.8-0.2,3.5-0.5,5.2-0.8C983.5,1186.3,981.8,1186.6,980,1186.8L980,1186.8z"/>

+<linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="-7374.1626" y1="-2037.7417" x2="-4461.8433" y2="-2037.7417" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">

+	<stop  offset="0.3233" style="stop-color:#9E2064"/>

+	<stop  offset="0.6302" style="stop-color:#C92037"/>

+	<stop  offset="0.7514" style="stop-color:#CD2335"/>

+	<stop  offset="1" style="stop-color:#E97826"/>

+</linearGradient>

+<path fill="url(#SVGID_9_)" d="M980,1186.8c1.8-0.2,3.5-0.5,5.2-0.8C983.5,1186.3,981.8,1186.6,980,1186.8L980,1186.8z"/>

+<path fill="#BE202E" d="M980.2,1186.7C980.2,1186.7,980.2,1186.7,980.2,1186.7L980.2,1186.7L980.2,1186.7L980.2,1186.7

+	C980.2,1186.7,980.2,1186.7,980.2,1186.7z"/>

+<path opacity="0.35" fill="#BE202E" d="M980.2,1186.7C980.2,1186.7,980.2,1186.7,980.2,1186.7L980.2,1186.7L980.2,1186.7

+	L980.2,1186.7C980.2,1186.7,980.2,1186.7,980.2,1186.7z"/>

+<linearGradient id="SVGID_10_" gradientUnits="userSpaceOnUse" x1="-5738.0635" y1="-2039.799" x2="-5094.3457" y2="-2039.799" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">

+	<stop  offset="0.3233" style="stop-color:#9E2064"/>

+	<stop  offset="0.6302" style="stop-color:#C92037"/>

+	<stop  offset="0.7514" style="stop-color:#CD2335"/>

+	<stop  offset="1" style="stop-color:#E97826"/>

+</linearGradient>

+<path fill="url(#SVGID_10_)" d="M980.2,1186.7C980.2,1186.7,980.2,1186.7,980.2,1186.7L980.2,1186.7L980.2,1186.7L980.2,1186.7

+	C980.2,1186.7,980.2,1186.7,980.2,1186.7z"/>

+</svg>

diff --git a/tomcat-uid/webapps/manager/images/tomcat.gif b/tomcat-uid/webapps/manager/images/tomcat.gif
index 6175673..f2aa6f8 100644
--- a/tomcat-uid/webapps/manager/images/tomcat.gif
+++ b/tomcat-uid/webapps/manager/images/tomcat.gif
Binary files differ
diff --git a/tomcat-uid/webapps/manager/index.jsp b/tomcat-uid/webapps/manager/index.jsp
new file mode 100644
index 0000000..48f50ec
--- /dev/null
+++ b/tomcat-uid/webapps/manager/index.jsp
@@ -0,0 +1,18 @@
+<%--

+  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.

+--%>

+<%@ page session="false" trimDirectiveWhitespaces="true" %>

+<% response.sendRedirect(request.getContextPath() + "/html"); %>
\ No newline at end of file
diff --git a/tomcat-uid/webapps/manager/status.xsd b/tomcat-uid/webapps/manager/status.xsd
index 6d9d63a..5322fd0 100644
--- a/tomcat-uid/webapps/manager/status.xsd
+++ b/tomcat-uid/webapps/manager/status.xsd
@@ -15,65 +15,70 @@
   See the License for the specific language governing permissions and

   limitations under the License.

 -->

-<!-- edited with XMLSPY v5 rel. 4 U (http://www.xmlspy.com) by peter lin (consultant) -->

-<!--W3C Schema generated by XMLSPY v5 rel. 4 U (http://www.xmlspy.com)-->

 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

-	<xs:complexType name="connector">

-		<xs:sequence>

-			<xs:element name="threadInfo" type="threadInfo"/>

-			<xs:element name="requestInfo" type="requestInfo"/>

-			<xs:element name="workers" type="workers"/>

-		</xs:sequence>

-		<xs:attribute name="name" type="xs:string" use="required"/>

-	</xs:complexType>

-	<xs:complexType name="jvm">

-		<xs:sequence>

-			<xs:element name="memory" type="memory"/>

-		</xs:sequence>

-	</xs:complexType>

-	<xs:complexType name="memory">

-		<xs:attribute name="free" type="xs:long" use="required"/>

-		<xs:attribute name="total" type="xs:long" use="required"/>

-		<xs:attribute name="max" type="xs:long" use="required"/>

-	</xs:complexType>

-	<xs:complexType name="requestInfo">

-		<xs:attribute name="maxTime" type="xs:long" use="required"/>

-		<xs:attribute name="processingTime" type="xs:int" use="required"/>

-		<xs:attribute name="requestCount" type="xs:long" use="required"/>

-		<xs:attribute name="errorCount" type="xs:long" use="required"/>

-		<xs:attribute name="bytesReceived" type="xs:long" use="required"/>

-		<xs:attribute name="bytesSent" type="xs:long" use="required"/>

-	</xs:complexType>

-	<xs:element name="status">

-		<xs:complexType>

-			<xs:sequence>

-				<xs:element name="jvm" type="jvm"/>

-				<xs:element name="connector" type="connector"/>

-			</xs:sequence>

-		</xs:complexType>

-	</xs:element>

-	<xs:complexType name="threadInfo">

-		<xs:attribute name="maxThreads" type="xs:int" use="required"/>

-		<xs:attribute name="minSpareThreads" type="xs:int" use="required"/>

-		<xs:attribute name="maxSpareThreads" type="xs:int" use="required"/>

-		<xs:attribute name="currentThreadCount" type="xs:int" use="required"/>

-		<xs:attribute name="currentThreadsBusy" type="xs:int" use="required"/>

-	</xs:complexType>

-	<xs:complexType name="worker">

-		<xs:attribute name="stage" type="xs:string" use="required"/>

-		<xs:attribute name="requestProcessingTime" type="xs:int" use="required"/>

-		<xs:attribute name="requestBytesSent" type="xs:long" use="required"/>

-		<xs:attribute name="requestBytesRecieved" type="xs:long" use="required"/>

-		<xs:attribute name="remoteAddr" type="xs:string" use="required"/>

-		<xs:attribute name="virtualHost" type="xs:string" use="required"/>

-		<xs:attribute name="method" type="xs:string" use="required"/>

-		<xs:attribute name="currentUri" type="xs:string" use="required"/>

-		<xs:attribute name="currentQueryString" type="xs:string" use="required"/>

-		<xs:attribute name="protocol" type="xs:string" use="required"/>

-	</xs:complexType>

-	<xs:complexType name="workers">

-		<xs:sequence>

-			<xs:element name="worker" type="worker"/>

-		</xs:sequence>

-	</xs:complexType>

+    <xs:element name="status">

+        <xs:complexType>

+            <xs:sequence>

+                <xs:element name="jvm" type="jvm"/>

+                <xs:element name="connector" type="connector" minOccurs="1" maxOccurs="unbounded"/>

+            </xs:sequence>

+        </xs:complexType>

+    </xs:element>

+    <xs:complexType name="connector">

+        <xs:sequence>

+            <xs:element name="threadInfo" type="threadInfo"/>

+            <xs:element name="requestInfo" type="requestInfo"/>

+            <xs:element name="workers" type="workers"/>

+        </xs:sequence>

+        <xs:attribute name="name" type="xs:string" use="required"/>

+    </xs:complexType>

+    <xs:complexType name="jvm">

+        <xs:sequence>

+            <xs:element name="memory" type="memory"/>

+            <xs:element name="memorypool" type="memorypool" minOccurs="0" maxOccurs="unbounded"/>

+        </xs:sequence>

+    </xs:complexType>

+    <xs:complexType name="memory">

+        <xs:attribute name="free" type="xs:long" use="required"/>

+        <xs:attribute name="total" type="xs:long" use="required"/>

+        <xs:attribute name="max" type="xs:long" use="required"/>

+    </xs:complexType>

+    <xs:complexType name="memorypool">

+        <xs:attribute name="name" type="xs:string" use="required"/>

+        <xs:attribute name="type" type="xs:string" use="required"/>

+        <xs:attribute name="usageInit" type="xs:long" use="required"/>

+        <xs:attribute name="usageCommitted" type="xs:long" use="required"/>

+        <xs:attribute name="usageMax" type="xs:long" use="required"/>

+        <xs:attribute name="usageUsed" type="xs:long" use="required"/>

+    </xs:complexType>

+    <xs:complexType name="requestInfo">

+        <xs:attribute name="maxTime" type="xs:long" use="required"/>

+        <xs:attribute name="processingTime" type="xs:int" use="required"/>

+        <xs:attribute name="requestCount" type="xs:long" use="required"/>

+        <xs:attribute name="errorCount" type="xs:long" use="required"/>

+        <xs:attribute name="bytesReceived" type="xs:long" use="required"/>

+        <xs:attribute name="bytesSent" type="xs:long" use="required"/>

+    </xs:complexType>

+    <xs:complexType name="threadInfo">

+        <xs:attribute name="maxThreads" type="xs:int" use="required"/>

+        <xs:attribute name="currentThreadCount" type="xs:int" use="required"/>

+        <xs:attribute name="currentThreadsBusy" type="xs:int" use="required"/>

+    </xs:complexType>

+    <xs:complexType name="worker">

+        <xs:attribute name="stage" type="xs:string" use="required"/>

+        <xs:attribute name="requestProcessingTime" type="xs:int" use="required"/>

+        <xs:attribute name="requestBytesSent" type="xs:long" use="required"/>

+        <xs:attribute name="requestBytesReceived" type="xs:long" use="required"/>

+        <xs:attribute name="remoteAddr" type="xs:string" use="required"/>

+        <xs:attribute name="virtualHost" type="xs:string" use="required"/>

+        <xs:attribute name="method" type="xs:string" use="required"/>

+        <xs:attribute name="currentUri" type="xs:string" use="required"/>

+        <xs:attribute name="currentQueryString" type="xs:string" use="required"/>

+        <xs:attribute name="protocol" type="xs:string" use="required"/>

+    </xs:complexType>

+    <xs:complexType name="workers">

+        <xs:sequence>

+            <xs:element name="worker" type="worker" minOccurs="0" maxOccurs="unbounded"/>

+        </xs:sequence>

+    </xs:complexType>

 </xs:schema>

diff --git a/tomcat-uid/webapps/manager/xform.xsl b/tomcat-uid/webapps/manager/xform.xsl
index f179a1e..61947f1 100644
--- a/tomcat-uid/webapps/manager/xform.xsl
+++ b/tomcat-uid/webapps/manager/xform.xsl
@@ -26,12 +26,12 @@
   <xsl:template match="status">

     <html>

     <head>

-    	<TITLE>Tomcat Status</TITLE>

-		<STYLE type="text/css">

-			body, table, tr, td, a, div, span {

-				vertical-align : top;

-			}

-		</STYLE>

+        <TITLE>Tomcat Status</TITLE>

+        <STYLE type="text/css">

+            body, table, tr, td, a, div, span {

+                vertical-align : top;

+            }

+        </STYLE>

     </head>

     <body>

       <div style='font-size:20px;'>Tomcat Status</div>

@@ -44,55 +44,68 @@
 

   <xsl:template match="jvm">

    <xsl:apply-templates select="memory"/>

+   <b>Memory Pools</b><br />

+   <xsl:apply-templates select="memorypool"/>

+   <hr />

   </xsl:template>

 

   <xsl:template match="memory">

     <table><tr>

-    		 <td><b>JVM:</b></td>

-    		 <td><b>free:</b> <xsl:value-of select="@free"/></td>

-    		 <td><b>total:</b> <xsl:value-of select="@total"/></td>

-    		 <td><b>max:</b> <xsl:value-of select="@max"/></td>

-    	   </tr>

+             <td><b>JVM:</b></td>

+             <td><b>free:</b> <xsl:value-of select="@free"/></td>

+             <td><b>total:</b> <xsl:value-of select="@total"/></td>

+             <td><b>max:</b> <xsl:value-of select="@max"/></td>

+           </tr>

     </table><hr />

   </xsl:template>

 

-  <xsl:template match="connector">

-	 <b>Connector -- </b> <xsl:value-of select="@name"/><br />

+  <xsl:template match="memorypool">

+    <table><tr>

+             <td><b>Name:</b> <xsl:value-of select="@name"/></td>

+             <td><b>Type:</b> <xsl:value-of select="@type"/></td>

+             <td><b>Initial:</b> <xsl:value-of select="@usageInit"/></td>

+             <td><b>Committed:</b> <xsl:value-of select="@usageCommitted"/></td>

+             <td><b>Maximum:</b> <xsl:value-of select="@usageMax"/></td>

+             <td><b>Used:</b> <xsl:value-of select="@usageUsed"/></td>

+           </tr>

+    </table>

+  </xsl:template>

 

-  	<xsl:apply-templates select="threadInfo"/>

-  	<xsl:apply-templates select="requestInfo"/>

-  	<xsl:apply-templates select="workers"/>

+  <xsl:template match="connector">

+     <b>Connector -- </b> <xsl:value-of select="@name"/><br />

+

+      <xsl:apply-templates select="threadInfo"/>

+      <xsl:apply-templates select="requestInfo"/>

+      <xsl:apply-templates select="workers"/>

   </xsl:template>

 

   <xsl:template match="threadInfo">

     <table><tr>

-    		 <td><b>threadInfo </b></td>

-    		 <td><b>maxThreads:</b> <xsl:value-of select="@maxThreads"/></td>

-    		 <td><b>minSpareThreads:</b> <xsl:value-of select="@minSpareThreads"/></td>

-    		 <td><b>maxSpareThreads:</b> <xsl:value-of select="@maxSpareThreads"/></td>

-    		 <td><b>currentThreadCount:</b> <xsl:value-of select="@currentThreadCount"/></td>

-    		 <td><b>currentThreadsBusy:</b> <xsl:value-of select="@currentThreadsBusy"/></td>

-    	   </tr>

+             <td><b>threadInfo</b></td>

+             <td><b>maxThreads:</b> <xsl:value-of select="@maxThreads"/></td>

+             <td><b>currentThreadCount:</b> <xsl:value-of select="@currentThreadCount"/></td>

+             <td><b>currentThreadsBusy:</b> <xsl:value-of select="@currentThreadsBusy"/></td>

+           </tr>

     </table><hr />

   </xsl:template>

 

   <xsl:template match="requestInfo">

     <table><tr>

-    		 <td><b>requestInfo </b></td>

-    		 <td><b>maxTime:</b> <xsl:value-of select="@maxTime"/></td>

-    		 <td><b>processingTime:</b> <xsl:value-of select="@processingTime"/></td>

-    		 <td><b>requestCount:</b> <xsl:value-of select="@requestCount"/></td>

-    		 <td><b>errorCount:</b> <xsl:value-of select="@errorCount"/></td>

-    		 <td><b>bytesReceived:</b> <xsl:value-of select="@bytesReceived"/></td>

-    		 <td><b>bytesSent:</b> <xsl:value-of select="@bytesSent"/></td>

-    	   </tr>

+             <td><b>requestInfo </b></td>

+             <td><b>maxTime:</b> <xsl:value-of select="@maxTime"/></td>

+             <td><b>processingTime:</b> <xsl:value-of select="@processingTime"/></td>

+             <td><b>requestCount:</b> <xsl:value-of select="@requestCount"/></td>

+             <td><b>errorCount:</b> <xsl:value-of select="@errorCount"/></td>

+             <td><b>bytesReceived:</b> <xsl:value-of select="@bytesReceived"/></td>

+             <td><b>bytesSent:</b> <xsl:value-of select="@bytesSent"/></td>

+           </tr>

     </table><hr />

   </xsl:template>

 

   <xsl:template match="workers">

    <table>

     <tr><th>Stage</th><th>Time</th><th>B Sent</th><th>B Recv</th><th>Client</th><th>VHost</th><th>Request</th></tr>

-  	<xsl:apply-templates select="worker"/>

+      <xsl:apply-templates select="worker"/>

 

    </table><hr />

   </xsl:template>